Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.03.25;
Скачать: CL | DM;

Вниз

Как можно задать маску * при поиске в следующем случае...   Найти похожие ветки 

 
vegarulez ©   (2007-03-02 08:39) [0]

Привет всем мастерам!

У меня вот такой вопрос

у меня есть такой код:

 if Panel_Goodies.visible=true then
   with TEdit(FindComponent("E_stock")) do
     begin
        Text:="";
     end;


С помошью которого очишаю поля.
Так вот вопрос состоит в следующем, если допустим у меня появилось множество эдитов с такими именами : E_Edit_*  (шапку привел).

Как мне при поиске всех их отчишать по маске? Вообщем что прибавить к "E_stock"+ *... или что-то типа того...

Подскажите как это можно сделать?
Заранее благодарен.


 
Elen ©   (2007-03-02 08:44) [1]


> vegarulez ©   (02.03.07 08:39)

В цикле проходить каждый компонент и проверять его имя скажем функцией Pos.


 
begin...end ©   (2007-03-02 08:46) [2]

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


 
vegarulez ©   (2007-03-02 08:47) [3]

Точно! как я сам об этом не подумал...
спасибо :)


 
ЮЮ ©   (2007-03-02 08:48) [4]

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;


 
Аноним   (2007-03-02 09:58) [5]

А еще есть функция MatchesMask, очень удобна для общего случая (unit Masks)

If MatchesMask(Components[I].Name, "E_Edit_*") then ...


 
vegarulez ©   (2007-03-02 10:01) [6]

Ещё попутно вопрос тогда...
а если я хочу перебирать компоненты не во всей форме,а только в одном  из многих  Panel`ов... как это сделать?


 
Аноним   (2007-03-02 10:06) [7]


> а если я хочу перебирать компоненты не во всей форме,а только
> в одном  из многих  Panel`ов... как это сделать?


for I:=0 to Panel1.ControlCount - 1 do
begin
if Controls[I] is TEdit  then...


 
ЮЮ ©   (2007-03-02 10:09) [8]

в одном из многих 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;


 
vegarulez ©   (2007-03-02 10:12) [9]

Хор. пасип. поробую.


 
Ega23 ©   (2007-03-02 10:19) [10]


> for I:=0 to Panel1.ControlCount - 1 do
> begin
> if Controls[I] is TEdit  then...
>


Только надо учитывать, что на панели может лежать груп-боскс, в котором уже лежат твои едиты.


 
vegarulez ©   (2007-03-02 12:27) [11]

to ЮЮ

Так SameText он же принимает стринг а не инты...


 
ЮЮ ©   (2007-03-02 12:44) [12]

неужели ", 1, 7)" не невело на мысль об упущенном "Copy(" ? :)

SameText(Copy(Components[i].Name, 1, 7), "E_stock")



Страницы: 1 вся ветка

Текущий архив: 2007.03.25;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.045 c
1-1170086245
Express
2007-01-29 18:57
2007.03.25
Как присвоить событие кнопки созданной в библиотеке?


15-1172676204
Юрий Зотов
2007-02-28 18:23
2007.03.25
Вот так фокус !!!


1-1169653503
DevilDevil
2007-01-24 18:45
2007.03.25
WordWrap у Chechbox-а


2-1172850503
koha
2007-03-02 18:48
2007.03.25
Подскажите метод пермещения в TListView


15-1172752338
@!!ex
2007-03-01 15:32
2007.03.25
Просьба сделать в поиске настраиваемый фильтр.