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

Вниз

Создание компонент на форме   Найти похожие ветки 

 
BALU1111   (2005-03-09 13:30) [0]

Доброго времени суток! Мне на форме нужно создать более 500 компонентов TLabel и TCheckBox. Помню где-то видел код - создания через Create(Self), чтобы не в ручную создавать их на форме, но не помню где, может кто ссылку подскажет, а в хелпе что-то не найду.(((


 
Плохиш ©   (2005-03-09 13:43) [1]

with TLabel.Create(self) do Parent := self;
with TCheckBox.Create(self) do Parent := self;


 
BALU1111   (2005-03-09 13:58) [2]

> Плохиш А прописать в Var"e надо что-нить, а то у меня ошибки выдает((


 
BALU1111   (2005-03-09 14:30) [3]

В хелпе нашел пример:
procedure TForm1.Button1Click(Sender: TObject);

var
 ProgressBar: TProgressBar;
begin
 ProgressBar := TProgressBar.Create(Self);
 with ProgressBar do
 begin
   Parent := Self;
   Align := alBottom;
 end;
end;


При компиляции пишет ошибку: Undeclared identifier: "TProgressBar"
Что делать? В хелпе неправильно?


 
BALU1111   (2005-03-09 14:31) [4]

В хелпе нашел пример:
procedure TForm1.Button1Click(Sender: TObject);

var
 ProgressBar: TProgressBar;
begin
 ProgressBar := TProgressBar.Create(Self);
 with ProgressBar do
 begin
   Parent := Self;
   Align := alBottom;
 end;
end;


При компиляции пишет ошибку: Undeclared identifier: "TProgressBar"
Что делать? В хелпе неправильно?


 
Александр Иванов ©   (2005-03-09 14:35) [5]

в секцию uses включи модуль ComCtrls


 
Zeqfreed ©   (2005-03-09 14:36) [6]

BALU1111   (09.03.05 14:31) [4]
TProgressBar + F1 = исчерпывающая информация


 
BALU1111   (2005-03-09 14:41) [7]

Работает, спасибо.
А теперь как сделать цикл создания 500 компонентов класса Label и CheckBox?


 
Anatoly Podgoretsky ©   (2005-03-09 14:45) [8]

О, ну это уже сложно, придется уходить на начальные основы языка. Задача уже сводится не к минутам, а к дням, месяцам.


 
BALU1111   (2005-03-09 14:47) [9]

Ясно, тогда буду вручную тыкать, спасибо всем за помощь.


 
Zeqfreed ©   (2005-03-09 14:48) [10]

BALU1111   (09.03.05 14:41) [7]

Полностью согласен с [8]
Вот пример того, как не нужно делать, попробуй преобразовать его во что-то приемлемое:

procedure TForm1.Button3Click(Sender: TObject);
var
mylabel : TLabel;
begin
mylabel := TLabel.Create(Self);
with mylabel do begin
 Parent := Self;
 Caption := "label";
 Alignment := taCenter;
 Align := alBottom;
end;
end;

procedure TForm1.Button4Click(Sender: TObject);
var
i : Integer;
begin
for i := 0 to 499 do begin
 Button3.OnClick(self);
end;
end;


 
BALU1111   (2005-03-09 15:06) [11]

Тут как я понял будет создаваться один и тот же компонент i раз, а мне нужно все i количество компонентов на форме.


 
BALU1111   (2005-03-09 15:07) [12]

Тут как я понял будет создаваться один и тот же компонент i раз, а мне нужно все i количество компонентов на форме.


 
Ольга   (2005-03-09 15:07) [13]


> Мне на форме нужно создать более 500 компонентов TLabel
> и TCheckBox

А вы хорошо продумали интерфейс вашей программы?
500 компонентов на одной форме - по-моему, это перебор.
Бедные пользователи.


 
BALU1111   (2005-03-09 15:10) [14]

> Ольга честно говоря программу создаю для личного пользования, работа заключается в обработке психологического теста - 500 вопросов, и скорее всего бедный я.


 
Ольга   (2005-03-09 15:16) [15]

Сколько вопросов (вариантов ответов) одновременно вы можете видеть на экране. 5-10, не больше. Не надо создавать такую куту компонентов, можно просто обновлять в них информацию.


 
Virgo_Style ©   (2005-03-09 15:17) [16]

Я бы лучше вывел 500 раз диалог Да-Нет-Отмена... Гораздо проще и симпатичней, на мой взгляд...
У тебя места-то на форме хватит??


 
BALU1111   (2005-03-09 15:19) [17]

Я надеюсь что хватит


 
BALU1111   (2005-03-09 15:21) [18]

> Ольга Передо мной будут только бланки с ответами, а вопросы мне даже не нужны.


 
Anatoly Podgoretsky ©   (2005-03-09 15:27) [19]

BALU1111   (09.03.05 15:10) [14]
Тебя тоже жалко.


 
Virgo_Style ©   (2005-03-09 15:50) [20]

Есть такая штука - FormReader... Очень недешевая, правда. Это аналог FineReader"а для считывания данных с бланков. API, документация... Очень хорошая штука.


 
BALU1111   (2005-03-09 16:11) [21]

> Virgo_Style Я знаю, она мне не помешала бы, но в силу финансововй ограниченности, приходится искать иной выход


 
Erik1 ©   (2005-03-09 17:24) [22]

А по секрету тебе скажу, что в [11] ты неправ. Не один и тотже компонент будет создоватся i раз, а один и тотже класс. Что означает разные объекты, ты просто неможеш набрать 500 разных классов!


 
Glex ©   (2005-03-09 18:46) [23]


var aObj: array of Objects;
   i, top: integer
procedure TForm1.CreateObjects
begin        
setlength(aObj, 500);
     
     for i:=0 to 499 do begin
         aObj[i]:= TObject.Create(self);
         aObj[i].Parent:=self;
         aObj[i].Top:=top;
         aObj[i].Left:=15;
         top:=top+10;
     end;

end;

Простите за ламерский код. Работает, сам проверил, вместо Obj ставь что угодно.


 
Плохиш ©   (2005-03-09 18:59) [24]


>Glex ©   (09.03.05 18:46) [23]

Интересно, с каких пор у TObject появились Top, Left и Parent?


 
Glex ©   (2005-03-09 20:30) [25]

Ну я имею в виду, что вместо TObject можно использовать всё что угодно: TPanel, TChekBox, TComboBox.


 
Glex ©   (2005-03-09 20:30) [26]

Ну я имею в виду, что вместо TObject можно использовать всё что угодно: TPanel, TCheckBox, TComboBox.


 
Glex ©   (2005-03-09 20:31) [27]

Sorry, глюк


 
BALU1111   (2005-03-10 14:48) [28]

Проверил. Все работает! А теперь иной вопрос, но по той же теме: как сделать, чтобы все созданные объекты отображались не на самой форме, а на расположенной на форме PageControl? Заранее спасибо.

> Erik1 © Огромное спасибо за поправку, но я как полагаю меня все правильно поняли, а на момент написания, у меня не нашлось подходящего слова)))


 
Плохиш ©   (2005-03-10 14:59) [29]


>BALU1111   (10.03.05 14:48) [28]

Может, в конце концов, справку для Parent сам почитаешь?


 
Zeqfreed ©   (2005-03-10 15:54) [30]

Плохиш ©   (10.03.05 14:59) [29]
Лучше пусть книгу купит, для начинающих.

BALU1111   (10.03.05 14:48) [28]
См. первые 2 строки. Ты предложи кому-нибудь сразу все целеком за тебя написать и не парь ни себе ни другим мозги.



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

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

Наверх




Память: 0.53 MB
Время: 0.047 c
1-1110954242
Sapsi
2005-03-16 09:24
2005.03.27
массив записей


14-1110226586
Fatal
2005-03-07 23:16
2005.03.27
Delphi2005


6-1106804544
ТехникПТО
2005-01-27 08:42
2005.03.27
Создание TWebBrowser


1-1110463005
denis24
2005-03-10 16:56
2005.03.27
Список из файлов ,соот маске


9-1104546897
Xerx
2005-01-01 05:34
2005.03.27
OpenGL и вывод текста GDI