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

Вниз

Цикл по объектам   Найти похожие ветки 

 
ВиТ   (2004-07-18 11:35) [0]

Здравствуйте. У меня есть БД с таблицей, в которой 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 строчек:(
Можно ли как-то автоматизировать этот процесс, т.е. создать цикл по лейблам? Тогда бы всё в одну строчку уместилось...:)


 
Anatoly Podgoretsky ©   (2004-07-18 11:43) [1]

Можно


 
Dolt ©   (2004-07-18 11:44) [2]

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;


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

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


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

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


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

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


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


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


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

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

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


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

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

Убери из published


 
jack128 ©   (2004-07-19 11:24) [9]


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


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


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

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

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
Доля истины есть конечно;) Но если этот Ответчик такой вумный, мог бы и сам догадаться, о чём его спрашивают..


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

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

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


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


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

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


 
Mim1 ©   (2004-07-19 13:13) [13]


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

Parent := Form1  Забыл



Страницы: 1 вся ветка

Текущий архив: 2004.08.01;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.053 c
3-1089214866
Bohdan
2004-07-07 19:41
2004.08.01
выполнение запроса типа Дата в базе MSAccess


1-1089931646
Ardagast
2004-07-16 02:47
2004.08.01
function some(some: array of array of integer): integer;


14-1088750364
ИМХО
2004-07-02 10:39
2004.08.01
Еще раз о Великой Отечественной


8-1082874386
X-Disa
2004-04-25 10:26
2004.08.01
3D - куб


6-1085758756
kalishenko
2004-05-28 19:39
2004.08.01
Неблокирующий режим в сокетах