![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Присвоение значений Edit через цикл [D6, WinXP]
Леха © (2005-05-31 16:35:00)Вот уверен простая задачка, которую многие из вас решили. Подскажите как решается, если не трудно. Что достаточно использовать цикл или и цикл и массив.
На форме имеется напр. 3 edit'a
edit1, edit2, edit3.
Как по нажатию на кнопку обнулить Edit*.text у всех.
Я, пока не понял.
Marser (2005-05-31 17:29:00) [1]
> Игорь Шевченко © (31.05.05 17:13) [20]
> Marser © (31.05.05 17:04) [19]
>
> Читать пост [15]
Уже вижу :-)
> Это счастливое совпадение. В обоих случаях вызывается TControl.SetText.
Угу.
begin...end (2005-05-31 17:17:00) [2]> Marser © (31.05.05 17:04) [19]
> Хотя приведения Caption<=>Text проходят нормально.
Это счастливое совпадение. В обоих случаях вызывается TControl.SetText.
Игорь Шевченко (2005-05-31 17:13:00) [3]Marser © (31.05.05 17:04) [19]
Читать пост [15]
Marser (2005-05-31 17:04:00) [4]
> Игорь Шевченко © (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 проходят нормально.
Anatoly Podgoretsky (2005-05-31 16:58:00) [5]Леха (31.05.05 16:35)
Вот уверен простая задачка, которую многие из вас решили.
Зачем, нам ее не задавали.
begin...end (2005-05-31 16:58:00) [6]> Леха (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:57:00) [7]Леха (31.05.05 16:54) [14]
А зачем это самый эффективные и самый управляемый путь.
Игорь Шевченко (2005-05-31 16:57:00) [8]begin...end © (31.05.05 16:45) [8]
Слишком рано отправил. Имел в виду, что после проверки нет нужды вызывать as
Леха (2005-05-31 16:54:00) [9]Bronco. Так я умею. Интересовало именно как очистить через цикл.
_dimka (2005-05-31 16:54:00) [10]
> Bronco © (31.05.05 16:51)
А если у него не 3 Едита а 33 8-)
Bronco (2005-05-31 16:51:00) [11]
> Леха (31.05.05 16:44) [6]
> Спасибо. Все работает, класс. Но это как я понял очищает
> все едиты. А как очистить напр. только edit1, edit2, edit3,
> а остальные не трогать?
Не парься.
Edit1.Clear;
Edit2.Clear;
Edit3.Clear;
В твоем случае так проще :-)
_dimka (2005-05-31 16:49:00) [12]
> Игорь Шевченко © (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:00) [13]
> Игорь Шевченко © (31.05.05 16:41)
Извиняюсь опечатался :)
> еще две копейки: вместо if (xxxx is yyyy) then (xxxx as
> yyyy).zzz достаточно писать yyyy(xxxx).zzz
if (xxxx is yyyy) then
Всё равно надо... А то если у нас будет стоять например там Мемо то оно тоже очиститься...
BFG9k (2005-05-31 16:46:00) [14]2 Леха :
if Components[i].Name='edit1' then
...
И по аналогии ...
begin...end (2005-05-31 16:45:00) [15]> Игорь Шевченко © (31.05.05 16:41) [5]
> вместо if (xxxx is yyyy) then (xxxx as yyyy).zzz достаточно
> писать yyyy(xxxx).zzz
В смысле? Проверка типа класса не нужна? Почему?
BFG9k (2005-05-31 16:44:00) [16]Удалено модератором
Леха (2005-05-31 16:44:00) [17]Спасибо. Все работает, класс. Но это как я понял очищает все едиты. А как очистить напр. только edit1, edit2, edit3, а остальные не трогать?
Игорь Шевченко (2005-05-31 16:41:00) [18]еще две копейки: вместо if (xxxx is yyyy) then (xxxx as yyyy).zzz достаточно писать yyyy(xxxx).zzz
_dimka (31.05.05 16:39) [2]
Не надо использовать глобальные переменные внутри метода объекта
Гаврила (2005-05-31 16:41:00) [19]У формы (равно как и у всех компонентов) есть список "компонентов - дочек"
For i:=0 to Form1.ComponentCount - 1 do
begin
if Form1.Components[i] is TEdit then
TEdit(Form1.Components[i]).text:=
begin...end (2005-05-31 16:40:00) [20]В методе формы:
for i := 0 to ComponentCount - 1 do
if Components[i].ClassName = 'TEdit' then
TEdit(Components[i]).Clear
--------------------
Sorry, I'm drunk now