Форум: "Начинающим";
Текущий архив: 2008.04.06;
Скачать: [xml.tar.bz2];
ВнизКак выполнить одно действие над одинаковыми компонентами? Найти похожие ветки
← →
New_09 (2008-03-09 20:14) [0]Как выполнить одно действие над несколькими одинаковыми компонентами? Пр.: EditA, EditB, EditC... и у всех надо Active:=false.
← →
Anatoly Podgoretsky © (2008-03-09 20:16) [1]В цикле вестимо.
← →
New_09 (2008-03-09 20:18) [2]А примерчик, вот хотя-бы для Edit-ов можно?
← →
Anatoly Podgoretsky © (2008-03-09 20:36) [3]> New_09 (09.03.2008 20:18:02) [2]
for I := 1 to N do действия
--
← →
New_09 (2008-03-09 20:37) [4]
For i := 1 to 89 do Edit[i]. ...
не годится, т.к. имена компонентов не похожие: EditBox, EditDR...
← →
Anatoly Podgoretsky © (2008-03-09 20:41) [5]> New_09 (09.03.2008 20:37:04) [4]
Огласите весь список, а не огрызки, а то телепатия страдает.
--
← →
New_09 (2008-03-09 20:48) [6]> Огласите весь список
> имена компонентов не похожие: EditBox, EditDR...
пытаюсь найти способ:for ... все Edit-ы ... do begin
Text:="";
Active:=false;
ShowHint:=true;
end;
как организовать такой цикл?
← →
New_09 (2008-03-09 20:54) [7]все обрабатываемые Edit-ы на одной форме...
И подскажите, пожалуйста, - возможно как-то вручную (для этого цикла) перечислить все необходимые Edit-ы, если вдруг какой-то "EditErr" на форме трогать не надо?!
← →
trubin © (2008-03-09 21:05) [8]Свойства
ControlCount, Controls
В цикле проверяй TEdit найденный контрол или нетif Controls[i] is TEdit ...
Если контролы на разных скажем панелях, то все это дело рекурсивно
Hint:
св-ваControlCount, Controls
- это свойстваTWinControl
← →
New_09 (2008-03-09 21:12) [9]trubin, я правильно Вас понял:
var
i: Integer;
begin
For i := 0 to Form1.ComponentCount-1 do
if Form1.Components[i] is TEdit then
begin
Text:="";
Active:=false;
ShowHint:=true;
end;
end;
так?
А возможно что-то вроде:for [EditBox, EditDR, EditFT, EditHM] do begin
Text:="";
Active:=false;
ShowHint:=true;
end;
чтобы чётко указать с какими Edit-тами проводить действия!?
← →
trubin © (2008-03-09 21:16) [10]
> New_09 (09.03.08 21:12) [9]var
i: Integer;
begin
For i := 0 to Form1.ControlCount-1 do
if Form1.Controls[i] is TEdit then
begin
TEdit(Controls[i]).Text:="";
TEdit(Controls[i]).Active:=false;
TEdit(Controls[i]).ShowHint:=true;
end;
end;
← →
trubin © (2008-03-09 21:18) [11]
> чтобы чётко указать с какими Edit-тами проводить действия!
> ?
Для этого их надо как-то идентифицировать. Если они имеют имена, то:if TEdit(Controls[i]).Name = "SomeEditName" then ...
← →
New_09 (2008-03-09 21:19) [12]> trubin © (09.03.08 21:16) [10]
Спасибо!
> А возможно что-то вроде:
for [EditBox, EditDR, EditFT, EditHM] do begin...?
← →
trubin © (2008-03-09 21:20) [13]
> New_09 (09.03.08 21:19) [12]
см. [11]
← →
New_09 (2008-03-09 21:21) [14]> trubin © (09.03.08 21:18) [11]
не совсем удобно...
это получается:
if TEdit(Controls[i]).Name = "SomeEditName" or ... or ... or ...
← →
trubin © (2008-03-09 21:28) [15]
> New_09 (09.03.08 21:21) [14]
Увы да, идентифицировать-то едиты как-то надо. Ну сделай у каждого эдита уникальный Tag, тогда:
case TEdit(Controls[i]).Tag of
0:
1:
end;
:)))))
А вообще это вопрос архитектуры программы. Но возможности VCL вот такие ... .
← →
New_09 (2008-03-09 21:32) [16]trubin © (09.03.08 21:28) [15]
ещё раз - Спасибо!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.04.06;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c