![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как можно задать маску * при поиске в следующем случае... [D6, XP]
vegarulez © (2007-03-02 08:39:00)Привет всем мастерам!
У меня вот такой вопрос
у меня есть такой код:
if Panel_Goodies.visible=true then
with TEdit(FindComponent('E_stock')) do
begin
Text:='';
end;
С помошью которого очишаю поля.
Так вот вопрос состоит в следующем, если допустим у меня появилось множество эдитов с такими именами : E_Edit_* (шапку привел).
Как мне при поиске всех их отчишать по маске? Вообщем что прибавить к 'E_stock'+ *... или что-то типа того...
Подскажите как это можно сделать?
Заранее благодарен.
ЮЮ (2007-03-02 12:44:00) [1]неужели ', 1, 7)' не невело на мысль об упущенном 'Copy(' ? :)
SameText(Copy(Components[i].Name, 1, 7), 'E_stock')
vegarulez (2007-03-02 12:27:00) [2]to ЮЮ
Так SameText он же принимает стринг а не инты...
Ega23 (2007-03-02 10:19:00) [3]
> for I:=0 to Panel1.ControlCount - 1 do
> begin
> if Controls[I] is TEdit then...
>
Только надо учитывать, что на панели может лежать груп-боскс, в котором уже лежат твои едиты.
vegarulez (2007-03-02 10:12:00) [4]Хор. пасип. поробую.
ЮЮ (2007-03-02 10:09:00) [5]в одном из многих Panel`ов лежат не компоненты, а контролы:
for i := 0 to Panel.ControlCount - 1 do begin
if SameText(Panel.Control[i].Name, 1, 7), 'E_stock') and (Panel.Control[i] is TEdit) then begin
TEdit(Panel.Control[i]).Text := ...
end
end;
Аноним (2007-03-02 10:06:00) [6]
> а если я хочу перебирать компоненты не во всей форме,а только
> в одном из многих Panel`ов... как это сделать?
for I:=0 to Panel1.ControlCount - 1 do
begin
if Controls[I] is TEdit then...
vegarulez (2007-03-02 10:01:00) [7]Ещё попутно вопрос тогда...
а если я хочу перебирать компоненты не во всей форме,а только в одном из многих Panel`ов... как это сделать?
Аноним (2007-03-02 09:58:00) [8]А еще есть функция MatchesMask, очень удобна для общего случая (unit Masks)
If MatchesMask(Components[I].Name, 'E_Edit_*') then ...
ЮЮ (2007-03-02 08:48:00) [9]for i := 0 to ComponentCount - 1 do begin
if SameText(Components[i].Name, 1, 7), 'E_stock') and (Components[i] is TEdit) then begin
TEdit(Components[i]).Text := ...
end
end;
vegarulez (2007-03-02 08:47:00) [10]Точно! как я сам об этом не подумал...
спасибо :)
begin...end (2007-03-02 08:46:00) [11]var
I: Integer;
C: TComponent;
begin
...
for I := 0 to Pred(ComponentCount) do
begin
C := Components[I];
if (C is TEdit) and (Pos('E_Edit_', C.Name) = 1) then
TEdit(C).Clear
end
...
end
Elen (2007-03-02 08:44:00) [12]
> vegarulez © (02.03.07 08:39)
В цикле проходить каждый компонент и проверять его имя скажем функцией Pos.