Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как можно задать маску * при поиске в следующем случае... [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.


Наверх

Титульная страница Поиск, карта сайта Написать письмо