Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-1109753342
NeyroSpace
2005-03-02 11:49
2005.03.27
Нужен эмулятор медленного компьютера для запуска


6-1106823966
ТехникПТО
2005-01-27 14:06
2005.03.27
Установка EmbeddedWb


8-1102541657
fashionguide
2004-12-09 00:34
2005.03.27
Вопрос по Bass.dll


1-1110725163
noded
2005-03-13 17:46
2005.03.27
подскажите класс с которым можно было бы работать как с например


3-1109448613
serko
2005-02-26 23:10
2005.03.27
Очистка базы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский