Форум: "Основная";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];
ВнизПрисвоение значений Edit через цикл Найти похожие ветки
← →
Леха (2005-05-31 16:35) [0]Вот уверен простая задачка, которую многие из вас решили. Подскажите как решается, если не трудно. Что достаточно использовать цикл или и цикл и массив.
На форме имеется напр. 3 edit"a
edit1, edit2, edit3.
Как по нажатию на кнопку обнулить Edit*.text у всех.
Я, пока не понял.
← →
BFG9k © (2005-05-31 16:39) [1]
for i:=0 to ComponentCount-1 do
if Components[i] is TEdit then
(Components[i] as TEdit).Text:="";
← →
_dimka (2005-05-31 16:39) [2]Ну например так :
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
for i:=0 to Form1.ControlCount-1 do
if Form1.Components[i] is TEdit then (Form1.Components[i] as TEdit).Text:="";
end;
← →
begin...end © (2005-05-31 16:40) [3]В методе формы:
for i := 0 to ComponentCount - 1 do
if Components[i].ClassName = "TEdit" then
TEdit(Components[i]).Clear
--------------------
Sorry, I"m drunk now
← →
Гаврила © (2005-05-31 16:41) [4]У формы (равно как и у всех компонентов) есть список "компонентов - дочек"
For i:=0 to Form1.ComponentCount - 1 do
begin
if Form1.Components[i] is TEdit then
TEdit(Form1.Components[i]).text:=
← →
Игорь Шевченко © (2005-05-31 16:41) [5]еще две копейки: вместо if (xxxx is yyyy) then (xxxx as yyyy).zzz достаточно писать yyyy(xxxx).zzz
_dimka (31.05.05 16:39) [2]
Не надо использовать глобальные переменные внутри метода объекта
← →
Леха (2005-05-31 16:44) [6]Спасибо. Все работает, класс. Но это как я понял очищает все едиты. А как очистить напр. только edit1, edit2, edit3, а остальные не трогать?
← →
BFG9k © (2005-05-31 16:44) [7]Удалено модератором
← →
begin...end © (2005-05-31 16:45) [8]> Игорь Шевченко © (31.05.05 16:41) [5]
> вместо if (xxxx is yyyy) then (xxxx as yyyy).zzz достаточно
> писать yyyy(xxxx).zzz
В смысле? Проверка типа класса не нужна? Почему?
← →
BFG9k © (2005-05-31 16:46) [9]2 Леха :
if Components[i].Name="edit1" then
...
И по аналогии ...
← →
_dimka (2005-05-31 16:49) [10]
> Игорь Шевченко © (31.05.05 16:41)
Извиняюсь опечатался :)
> еще две копейки: вместо if (xxxx is yyyy) then (xxxx as
> yyyy).zzz достаточно писать yyyy(xxxx).zzz
if (xxxx is yyyy) then
Всё равно надо... А то если у нас будет стоять например там Мемо то оно тоже очиститься...
← →
_dimka (2005-05-31 16:49) [11]
> Игорь Шевченко © (31.05.05 16:41)
Извиняюсь опечатался :)
> еще две копейки: вместо if (xxxx is yyyy) then (xxxx as
> yyyy).zzz достаточно писать yyyy(xxxx).zzz
if (xxxx is yyyy) then
Всё равно надо... А то если у нас будет стоять например там Мемо то оно тоже очиститься...
← →
Bronco © (2005-05-31 16:51) [12]
> Леха (31.05.05 16:44) [6]
> Спасибо. Все работает, класс. Но это как я понял очищает
> все едиты. А как очистить напр. только edit1, edit2, edit3,
> а остальные не трогать?
Не парься.
Edit1.Clear;
Edit2.Clear;
Edit3.Clear;
В твоем случае так проще :-)
← →
_dimka (2005-05-31 16:54) [13]
> Bronco © (31.05.05 16:51)
А если у него не 3 Едита а 33 8-)
← →
Леха (2005-05-31 16:54) [14]Bronco. Так я умею. Интересовало именно как очистить через цикл.
← →
Игорь Шевченко © (2005-05-31 16:57) [15]begin...end © (31.05.05 16:45) [8]
Слишком рано отправил. Имел в виду, что после проверки нет нужды вызывать as
← →
Anatoly Podgoretsky © (2005-05-31 16:57) [16]Леха (31.05.05 16:54) [14]
А зачем это самый эффективные и самый управляемый путь.
← →
begin...end © (2005-05-31 16:58) [17]> Леха (31.05.05 16:44) [6]
uses StrUtils;
const
Names: array [1..3] of string = ("Edit1", "Edit2", "Edit3");
var
i: integer;
begin
for i := 0 to ComponentCount - 1 do
if (Components[i].ClassName = "TEdit") and (AnsiIndexStr(Components[i].Name, Names) >= 0) then
TEdit(Components[i]).Clear
end.
← →
Anatoly Podgoretsky © (2005-05-31 16:58) [18]Леха (31.05.05 16:35)
Вот уверен простая задачка, которую многие из вас решили.
Зачем, нам ее не задавали.
← →
Marser © (2005-05-31 17:04) [19]
> Игорь Шевченко © (31.05.05 16:41) [5]
> еще две копейки: вместо if (xxxx is yyyy) then (xxxx as
> yyyy).zzz достаточно писать yyyy(xxxx).zzz
Угу, только за что-то вроде tlabel(edit1).Canvas.LineTo(23,23) можно хорошо получить по рукам(что и неудивительно). Хотя приведения Caption<=>Text проходят нормально.
← →
Игорь Шевченко © (2005-05-31 17:13) [20]Marser © (31.05.05 17:04) [19]
Читать пост [15]
← →
begin...end © (2005-05-31 17:17) [21]> Marser © (31.05.05 17:04) [19]
> Хотя приведения Caption<=>Text проходят нормально.
Это счастливое совпадение. В обоих случаях вызывается TControl.SetText.
← →
Marser © (2005-05-31 17:29) [22]
> Игорь Шевченко © (31.05.05 17:13) [20]
> Marser © (31.05.05 17:04) [19]
>
> Читать пост [15]
Уже вижу :-)
> Это счастливое совпадение. В обоих случаях вызывается TControl.SetText.
Угу.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.056 c