Динамическое создание компонентов
От: _Student_ Россия http://www.totalprogramming.narod.ru/
Дата: 20.04.05 19:38
Оценка:
Доброе время суток уважаемой конфе...

Подскажите пожалуйста, как мне правильо создать визуальную компоненту и разместить ее на форме в run-time?

пробовал что-то типа этого:


TButton *Btn = new TButton(Form1);


вроде бы оно создается но на форме его не видно....

вообще суть в том, что мне надо на форму накидать заранее неизвестное количество однотипных элементов. к каждому из них при этом должен быть доступ.

Буду благодарен за любые пояснения. спасибо.
Я не волшебник, я только учусь...
Re: Динамическое создание компонентов
От: DangerDen  
Дата: 20.04.05 20:18
Оценка: -1
Здравствуйте, _Student_, Вы писали:

_S_>Доброе время суток уважаемой конфе...


_S_>Подскажите пожалуйста, как мне правильо создать визуальную компоненту и разместить ее на форме в run-time?


_S_>пробовал что-то типа этого:



_S_>
_S_>TButton *Btn = new TButton(Form1);
_S_>


_S_>вроде бы оно создается но на форме его не видно....


_S_>вообще суть в том, что мне надо на форму накидать заранее неизвестное количество однотипных элементов. к каждому из них при этом должен быть доступ.


_S_>Буду благодарен за любые пояснения. спасибо.


А ты потом динамически установи свойство visible в true и размеры с положением задачй.

Btn->Visible=truel

Btn->Top=...
....
Re: Динамическое создание компонентов
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 20.04.05 20:31
Оценка:
Здравствуйте, _Student_, Вы писали:


_S_>
_S_>TButton *Btn = new TButton(Form1);
_S_>


_S_>вроде бы оно создается но на форме его не видно....


Не забывайте устанавливать свойство Parent :

TCheckBox* cb = new TCheckBox(this);
cb->Parent = Panel1; // чекбокс будет на панели
Re: Динамическое создание компонентов
От: Rusland  
Дата: 21.04.05 05:28
Оценка:
Здравствуйте, _Student_, Вы писали:

_S_>Доброе время суток уважаемой конфе...


_S_>Подскажите пожалуйста, как мне правильо создать визуальную компоненту и разместить ее на форме в run-time?


_S_>пробовал что-то типа этого:



_S_>
_S_>TButton *Btn = new TButton(Form1);
_S_>


_S_>вроде бы оно создается но на форме его не видно....


_S_>вообще суть в том, что мне надо на форму накидать заранее неизвестное количество однотипных элементов. к каждому из них при этом должен быть доступ.


_S_>Буду благодарен за любые пояснения. спасибо.


Я например делал так:

procedure TForm1.Button1Click(Sender: TObject);
var
I:Integer;
S: String;
begin

FList := TList.Create;
for I := 0 to ListBox1.Items.Count-1 do begin // у меня в listbox несколько элементов
with TSpinEdit(FList[FList.Add(TSpinEdit.Create(Self))]) do begin // по кол-ву элементов создаю SpinEdit-ы
Parent := Self;
Left := 4;
Top := 2+i*22;
Width := 80;
Tag:=I;
S:=ListBox1.Items[I];
Text:=Copy(S,1,Pos('ms',S)-1);
OnChange:=SpinEdit1Change;
end;
with TEdit(TEdit.Create(Self)) do begin
Parent := Self;
Left := 90;
Top := 2+i*22;
Width := 80;
Tag:=I;
S:=ListBox1.Items[I];
Text:=Copy(S,Pos('ms',S)+3,Length(S)-Pos('ms',S)+1);
OnChange:=Edit1Change;
end;
Re: Динамическое создание компонентов
От: _Student_ Россия http://www.totalprogramming.narod.ru/
Дата: 21.04.05 05:36
Оценка:
Здравствуйте, _Student_, Вы писали:

_S_>Доброе время суток уважаемой конфе...


_S_>Подскажите пожалуйста, как мне правильо создать визуальную компоненту и разместить ее на форме в run-time?


_S_>пробовал что-то типа этого:



_S_>
_S_>TButton *Btn = new TButton(Form1);
_S_>


_S_>вроде бы оно создается но на форме его не видно....


_S_>вообще суть в том, что мне надо на форму накидать заранее неизвестное количество однотипных элементов. к каждому из них при этом должен быть доступ.


_S_>Буду благодарен за любые пояснения. спасибо.


Все делаю как сказали.

В итоге получается:

TButton *Btn = new TButton(Form1);
Btn->Parent = Panel1;                 // Панелька на форме валяется
Btn->SetBounds(10,10,100,100);


При выполнении второй строки получаю:
---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EOSError with message 'System Error. Code: 1410.
Class already exists'. Process stopped. Use Step or Run to continue.
---------------------------

И как это понимать???
Я не волшебник, я только учусь...
Re: Динамическое создание компонентов
От: _Student_ Россия http://www.totalprogramming.narod.ru/
Дата: 21.04.05 05:40
Оценка:
Здравствуйте, _Student_, Вы писали:

_S_>Доброе время суток уважаемой конфе...


_S_>Подскажите пожалуйста, как мне правильо создать визуальную компоненту и разместить ее на форме в run-time?


_S_>пробовал что-то типа этого:



_S_>
_S_>TButton *Btn = new TButton(Form1);
_S_>


_S_>вроде бы оно создается но на форме его не видно....


_S_>вообще суть в том, что мне надо на форму накидать заранее неизвестное количество однотипных элементов. к каждому из них при этом должен быть доступ.


_S_>Буду благодарен за любые пояснения. спасибо


Да кстати забыл сказать. на форме уже есть одна кнопка с именем Button1. Может в этом дело?
Я не волшебник, я только учусь...
Re[2]: Динамическое создание компонентов
От: Гай Россия  
Дата: 21.04.05 05:45
Оценка:
Здравствуйте, _Student_.

Вы писали 21 апреля 2005 г., 9:40:07:


> From: _Student_  http://www.totalprogramming.narod.ru/

> Здравствуйте, _Student_, Вы писали:

_S_>>Доброе время суток уважаемой конфе...


_S_>>Подскажите пожалуйста, как мне правильо создать визуальную компоненту

_S_>>и разместить ее на форме в run-time?

_S_>>пробовал что-то типа этого:



_S_>> _S_>TButton *Btn =new TButton(Form1);_S_>



_S_>>вроде бы оно создается но на форме его не видно....


_S_>>вообще суть в том, что мне надо на форму накидать заранее неизвестное

_S_>>количество однотипных элементов. к каждому из них при этом должен быть
_S_>>доступ.

_S_>>Буду благодарен за любые пояснения. спасибо


За синтаксис С++ ручаться не буду, а в Delphi это так:

Button.Parent := Form1;

--
С уважением,
Новости mailto:guy@nalogtelecom.ru
Posted via RSDN NNTP Server 1.9
Re: Динамическое создание компонентов
От: kavlad Россия http://www.wavesoft.ru
Дата: 21.04.05 06:29
Оценка: 2 (1)
Здравствуйте, _Student_, Вы писали:

_S_>
_S_>TButton *Btn = new TButton(Form1);
_S_>


После создания экземпляра надо в свойство Parent кнопки назначить эту форму. Или использовать метод формы InsertControl.
... << RSDN@Home 1.1.4 beta 4 rev. 302>>
Re[2]: Динамическое создание компонентов
От: kavlad Россия http://www.wavesoft.ru
Дата: 21.04.05 06:34
Оценка:
Здравствуйте, _Student_, Вы писали:

_S_>Да кстати забыл сказать. на форме уже есть одна кнопка с именем Button1. Может в этом дело?


При создании компонентов в рантайме имена (property Name) им не присваиваются.
... << RSDN@Home 1.1.4 beta 4 rev. 302>>
Re[2]: Динамическое создание компонентов
От: DangerDen  
Дата: 23.04.05 13:29
Оценка:
Здравствуйте, kavlad, Вы писали:

K>Здравствуйте, _Student_, Вы писали:


_S_>>
_S_>>TButton *Btn = new TButton(Form1);
_S_>>


K>После создания экземпляра надо в свойство Parent кнопки назначить эту форму. Или использовать метод формы InsertControl.


А в конструктор разве не Parent передается?
Re: Динамическое создание компонентов
От: Slicer [Mirkwood] Россия https://ru.linkedin.com/in/maksim-gumerov-039a701b
Дата: 24.04.05 04:47
Оценка:
Брр, что-то не могу местный FAQ найти по таким проблемам. Типа раскраски грида, создания компонент в рантайме и т.п. Ведь был же?!

Slicer
Специалист — это варвар, невежество которого не всесторонне :)
Re[3]: Динамическое создание компонентов
От: Гай Россия  
Дата: 25.04.05 06:06
Оценка:
Здравствуйте, DangerDen.

Вы писали 23 апреля 2005 г., 17:29:04:


> From: DangerDen 

> Здравствуйте, kavlad, Вы писали:

K>>Здравствуйте, _Student_, Вы писали:


_S_>>> _S_>>TButton *Btn =new TButton(Form1);_S_>>



K>>После создания экземпляра надо в свойство Parent кнопки назначить эту

K>>форму. Или использовать метод формы InsertControl.

> А в конструктор разве не Parent передается?



Нет, в конструкторе передаётся Owner


--
С уважением,
Новости mailto:guy@nalogtelecom.ru
Posted via RSDN NNTP Server 1.9
Re: Динамическое создание компонентов
От: Аноним  
Дата: 26.04.05 14:04
Оценка:
Здравствуйте, _Student_, Вы писали:

_S_>Доброе время суток уважаемой конфе...


_S_>Подскажите пожалуйста, как мне правильо создать визуальную компоненту и разместить ее на форме в run-time?


_S_>пробовал что-то типа этого:



_S_>
_S_>TButton *Btn = new TButton(Form1);
_S_>


_S_>вроде бы оно создается но на форме его не видно....


_S_>вообще суть в том, что мне надо на форму накидать заранее неизвестное количество однотипных элементов. к каждому из них при этом должен быть доступ.


_S_>Буду благодарен за любые пояснения. спасибо.


Подпиши сроку ниже Btn->Parent=Form1;
Ну и Height, Width, Top, Left cоответственно проставь какие надо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.