Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Динамически создать три формы и для каждой свою кнопку [D7]


Сергей ©   (2009-09-18 18:45:00) 

Господа,
нужно динамически создавать три формы с кнопками. Как вызвать обработчик динамически созданной кнопки?


Сергей   (2009-09-18 20:45:00) [1]

ок. спасибо.


{RASkov}   (2009-09-18 20:41:00) [2]

> [8] Сергей   (18.09.09 20:31)

поищи в яндексе или гугле "жизнь и смерть в run time" или прямо на королевстве это ищи
прямой ссылки у меня нет.


Сергей   (2009-09-18 20:31:00) [3]

Согласен, но как? Может есть ссылка для моего случая?


{RASkov}   (2009-09-18 20:20:00) [4]

> [5] Сергей   (18.09.09 19:55)
> NewButton( ?????);

дык у тебя function NewForm(Form1:TForm):TForm; - функция, а используешь ее как процедуру, почему?
вот твой код:
procedure TForm1.Button5Click(Sender: TObject);
begin
 NewButton(NewForm(Form1));
end;

но если честно общее мнение по коду(по всему коду из [5]) - переделать.


Жорж   (2009-09-18 19:57:00) [5]

Видимо, автор имеет ввиду, что не знает, как присвоить обработчик динамически созданной кнопке
это делается приблизительно так:

type
  TMyForm = class(TForm)
...
 public
 procedure ButtonClick(Sender: TObject);
 end;

...

procedure TMyForm.ButtonClick(Sender: TObject);
begin
 //Sender as TButton  - это указатель на кнопку
end;
...
var MyForm: TMyForm;
 

var
 B: TButton;

B:=TButton.Create(self);
B.OnClick:=MyForm.ButtonClick;


Сергей   (2009-09-18 19:55:00) [6]

procedure TForm1.Button5Click(Sender: TObject);
begin
NewForm(Form1);
NewButton(?????);
end;

function NewForm(Form1:TForm):TForm;
var F:TForm;
begin
 F:=TForm.Create(Form1);
 //formnumber:= formnumber+1; ?????
 //F.Name:='NewForm' + IntToStr(formnumber);
 F.Top:=20;
 F.Left:=10;
 F.Width:=40;
 F.Height:=50;
 F.Visible:=true;
 NewForm:=F;
end;

function NewButton(?????):TButton;
var B:TButton;
begin
 B:=TButton.Create(????);
 B.Name:='Button ????;
 B.Top:=20;
 B.Left:=10;
 B.Width:=10;
 B.Height:=20;
 B.Visible:=true;
 B.Parent:=?????(form);
 NewButton:=B;
end;


{RASkov}   (2009-09-18 19:38:00) [7]

> [3] Сергей   (18.09.09 19:34)

button1 - это не имя кнопки, а имя переменной(поля)...

Что ты уже сделал в своей задаче?


Сергей   (2009-09-18 19:34:00) [8]

Но у ведь у кнопки еще нет имени (например button1)  Как мне к ней обратиться к ней из другой функции.


clickmaker   (2009-09-18 19:17:00) [9]

> Как вызвать обработчик динамически созданной кнопки?

как любой метод


{RASkov}   (2009-09-18 19:13:00) [10]

Перечитай свой вопрос и представь как на него можно ответить... без мата.


Наверх

Титульная страница Поиск, карта сайта Написать письмо