Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Цикл по объектам [D7, WinXP]


ВиТ ©   (2004-07-18 11:35:00) 

Здравствуйте. У меня есть БД с таблицей, в которой 10 полей.
Для вывода инфы на форме я хочу использовать соответственно 10 лейблов и 10 текстбоксов. Для этого мне приходится в каждый лейбл ручками прописывать название столбца таблицы, а в каждый текстбох содержание поля. Получается что-то вроде:

Label1.Caption:=DBGrid1.Columns[0].Title.Caption;
Label2.Caption:=DBGrid1.Columns[1].Title.Caption;
Label3.Caption:=DBGrid1.Columns[3].Title.Caption;  
...

и так 10 строчек:(
Можно ли как-то автоматизировать этот процесс, т.е. создать цикл по лейблам? Тогда бы всё в одну строчку уместилось...:)


Mim1   (2004-07-19 13:13:00) [1]


> F9... на форме пусто:(

Parent := Form1  Забыл


ВиТ   (2004-07-19 13:03:00) [2]


> Думкин ©   (19.07.04 12:28) [11]

Спасибо! Теперь всё работает. Просто немножко запутался с парент и оунер.. Будем учиться;)
ЗЫ: а на делфимастер у меня статьи не открываются:
Internal Server Error :(


Думкин   (2004-07-19 12:28:00) [3]

> [10] ВиТ   (19.07.04 12:24)

Почитал бы чего... Есть хорошие статьи. А так по каждому чиху сюда ходить будешь. Parent.


ВиТ   (2004-07-19 12:24:00) [4]

Спасибо. Перенёс в приват - запустилось.
Но я не могу их увидеть:(
Вот кусочек кода, который по моим предположениям должен
показывать эти самые лабелы:

procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
for i:=1 to 10 do
 begin
   Labels[i]:=TLabel.Create(Form1);
   Labels[i].Left:=50;
   Labels[i].Top:=300+20*i;
   Labels[i].Caption:='Lab'+IntToStr(i);
   Labels[i].Visible:=true;
 end;
end;


F9... на форме пусто:(

ОФФТОП: ту jack128
Доля истины есть конечно;) Но если этот Ответчик такой вумный, мог бы и сам догадаться, о чём его спрашивают..


jack128   (2004-07-19 11:24:00) [5]


> Прочитал!:)
И как? Мне Шекли очень нравиться :-)


> Итак, когда я пишу
> type
>  TForm1 = class(TForm)
>    Labels:array[1..10] of TLabel;
>    ...
> Выскакивает ошибка "Ожидается an identifer но найдено ARRAY"
область между TForm1 = class(TForm) и private Дельфи использует для своих собственных нужд, никогда не виши туда свои объявления. Перенеси свою деклорацию с секцию private или public(но не published)


Думкин   (2004-07-19 11:16:00) [6]

> [7] ВиТ   (19.07.04 11:10)

Убери из published


ВиТ   (2004-07-19 11:10:00) [7]

Прочитал!:)
Итак, когда я пишу
type
 TForm1 = class(TForm)
   Labels:array[1..10] of TLabel;
   ...

Выскакивает ошибка "Ожидается an identifer но найдено ARRAY"
Как всё-таки грамотно это прописать?


jack128   (2004-07-19 00:26:00) [8]


> Компилятор ругается:(
о боже!!! http://www.delphimaster.ru/vopros/index.html


ВиТ   (2004-07-19 00:20:00) [9]

Я пробовал вот так:
Labels:array[1..10] of TLabel;
Компилятор ругается:( И в хелпе не нашёл как это делать..


Palladin   (2004-07-18 12:10:00) [10]

Ктож мешает... Конструкция Array of описана в любом учебнике...


ВиТ   (2004-07-18 12:01:00) [11]

Спасибо большое!
А вообще, можно ли как-нибудь изначально создавать массив объектов и с ними уже в цикле работать? так ведь удобней..:)


Dolt   (2004-07-18 11:44:00) [12]

Var
 T:tcomponent;
begin
for i:=1 to 10 do begin
 t:=FindComponent('Label'+inttostr(i));
 if (t<>nil)and(t is TLabel) Then begin
   TLabel(t).Caption:=DBGrid1.Columns[i-1].Title.caption;
   end;
 end;
end;


Anatoly Podgoretsky   (2004-07-18 11:43:00) [13]

Можно


Наверх

Титульная страница Поиск, карта сайта Написать письмо