Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
11-1098965891
Владимир Кладов
2004-10-28 16:18
2005.06.14
System DCU для Delphi3


14-1117000277
Бугага
2005-05-25 09:51
2005.06.14
Справка о внедрении


1-1116993012
Kilop
2005-05-25 07:50
2005.06.14
Реестр на уровне польвателя


1-1117114924
lema
2005-05-26 17:42
2005.06.14
Вопрос по QuickRep


4-1114075002
Separator
2005-04-21 13:16
2005.06.14
USB HID устройства, как с ними работать





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский