Форум: "Начинающим";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];
Вниз
Как можно задать маску * при поиске в следующем случае... Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.041 c