Главная страница
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.04 c
15-1172665941
Inco
2007-02-28 15:32
2007.03.25
Как можно получить список выделенных в проводнике файлов


2-1173095324
alucard
2007-03-05 14:48
2007.03.25
Не могу открыть Access овскую таблицу Help


15-1172930690
Servelat
2007-03-03 17:04
2007.03.25
Ключевое слово "object"


3-1167196294
Rentgen
2006-12-27 08:11
2007.03.25
Ошибки в IB при обрыве связи


15-1172674025
Магедон
2007-02-28 17:47
2007.03.25
Вопрос о Skype