Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.14;
Скачать: CL | DM;

Вниз

Присвоение значений 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.041 c
1-1116998258
avtsasha
2005-05-25 09:17
2005.06.14
Запись файла в hex


4-1114422458
ANB
2005-04-25 13:47
2005.06.14
Есть ли функция, позволяющая скопировать папку ?


8-1108485618
_PG_
2005-02-15 19:40
2005.06.14
*.avi нужно сделать не доступным


1-1117235832
Dark123us
2005-05-28 03:17
2005.06.14
ошибка при попытке выгрузки Dll


14-1116406263
Vulko
2005-05-18 12:51
2005.06.14
Что возвратить, если функция возвращает ссылку... ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский