Форум: "Основная";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];
ВнизСоздание компонент на форме Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.054 c