Главная страница
    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.5 MB
Время: 0.031 c
4-1114091329
ChtoMe
2005-04-21 17:48
2005.06.14
Функции SeTimer, KillTimer


4-1114411459
Mihas
2005-04-25 10:44
2005.06.14
Как прочитать из окна WINWORD Текст документа?


3-1115714964
KilkennyCat
2005-05-10 12:49
2005.06.14
Данные длиною в три байта.


1-1117384354
GEEK
2005-05-29 20:32
2005.06.14
Finalize(); выдает ошибку...


1-1117346604
Aldor
2005-05-29 10:03
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский