![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
создание формы в run_time
alexey_mas © (2007-01-23 13:45:00)Добрый день подскажите по созданию формы и компонентов в run_time
на основной форме(создана в design time) сделал кнопку по нажатию которой создается форма и кнопка на ней.
Проблема с обработчиком нажатия кнопки
procedure TForm12.SpeedButton4Click(Sender: TObject);
var
Button1_reg,Button2_reg : TButton;
begin
Form_reg := TForm.Create(Application);
Form_reg.Caption:='Регистрация удаленного сервера';
Form_reg.Height:=350;
Form_reg.Width:=450;
Form_reg.Position:=poMainFormCenter;
Button1_reg:=TButton.Create(Form_reg);
Button1_reg.OnClick:=OnClickButton; - вот сдесь при компиляции ошибка Incompatible types: 'Integer' and 'TNotifyEvent'
Button1_reg.Parent:=Form_reg;
Form_reg.ShowModal;
Form_reg.Free;
также в секцию private основной формы добавил procedure OnClickButton(Sender: TObject);
и
добавил описание события
Procedure TForm12.OnClickButton( Sender : TObject );
Begin
ShowMessage('Нажали на кнопку');
End;
Где я ошибаюсь?
Думаю событие OnClickButton( Sender : TObject ); нужно описать для новосозданной формы Form_reg но не понимаю где и как это можно сделать.
Плохиш (2007-01-23 18:35:00) [1]
> Button1_reg:=TButton.Create(Form_reg);
>
> Button1_reg.OnClick:=OnClickButton; - вот сдесь
> при компиляции ошибка Incompatible types: 'Integer' and
> 'TNotifyEvent'
> alexey_mas © (23.01.07 14:16) [3]
> Сории нашел ошибку. все работает.
> Но интересно ошибочка выдавалась
> во сдесь просто значения забыл поставить и из-за множества
> коментариев в коде не замечал :)
>
> Button1_reg.Top:=
> Button1_reg.Left:=
Интересно, и почему это меня не удивляет...
> alexey_mas © (23.01.07 17:41) [8]
Ошибка, наверное, опять где-то между строк:
> Edit2_reg.Text:='1';
> вот здесь ищи
> UpDown_reg:=TUpDown.Create(Form_reg);
PS. Автор, как, по твоему мнению, нафига люди толстые и не очень книги по программированию в среде делфи, в частности, пишут? От нечего делать?
alexey_mas (2007-01-23 17:41:00) [2]продвигаюсь дальше :)
Почему при присвоении Edit-a вылетает Acess Violation?
var
UpDown_reg:TUpDown;
Edit2_reg:TEdit;
begin
........................
Edit2_reg:=TEdit.Create(Form_reg);
Edit2_reg.Name:='Edit2_reg';
Edit2_reg.Text:='1';
UpDown_reg:=TUpDown.Create(Form_reg);
UpDown_reg.Associate:=Edit2_reg; - вот тута
И еще вопросик по run time. Где посмотреть какое свойство нужно писать первое чтобы последующие не перекрывали его?
TRUNK (2007-01-23 16:27:00) [3]В таком случае сделай так:
1) у этой самой кнопки Cansel свойство ModulResult := mrCancel;
2) в обработчике OnClick для неё не надо пытаться закрыть окно, если никаких других действий от кнопки не требуется - убрать обработчик совсем;
3) Если всё-таки необходимо это дочернее окно уничтожить, то надо это делать так:
ChildWindow := TChildWindow.Create(Application);
ChildWindow.Properties := SomeValues; // устанока свойств, если надо
ChildWindow.ShowModal;
ChildWindow.Free;
P.S. Часть названий вымышлены.
alexey_mas (2007-01-23 16:12:00) [4]> А где находится кнопка Cansel? В главном окне или в дочернем
> модальном ?
в дочернем модальном
TRUNK (2007-01-23 16:06:00) [5]
> Button1_reg.OnClick:=OnClickButton; - Incompatible types:
> 'Integer' and 'TNotifyEvent'
Button1_reg.OnClick := @OnClickButton;
> по кнопке кансел я пытаюсь закрыть форму ...
> но не возвращается фокус (управление) на главную форму
А где находится кнопка Cansel ? В главном окне или в дочернем модальном ?
alexey_mas (2007-01-23 15:57:00) [6]а как при закрытии формы вернуть управление главной форме?
т.е. я из главной формы в run_time создал дочернюю форму и запустил её в шоумодал
по кнопке кансел я пытаюсь закрыть форму, т.е. уничтожить дочернюю
Procedure TForm12.OnClickButton( Sender : TObject );
Begin
if (TControl(Sender).Name='Button2_reg') then begin
Form_reg.Free;
end;
End;
но не возвращается фокус (управление) на главную форму
т.е. только через program reset можно сбросить программу после такого закрытия
alexey_mas (2007-01-23 14:16:00) [7]Сории нашел ошибку. все работает.
Но интересно ошибочка выдавалась
во сдесь просто значения забыл поставить и из-за множества коментариев в коде не замечал :)
Button1_reg.Top:=
Button1_reg.Left:=
а компилятор ругался на
Button1_reg.OnClick:=OnClickButton; - Incompatible types: 'Integer' and 'TNotifyEvent'
Прошу прощения.
clickmaker (2007-01-23 14:03:00) [8]
> Где я ошибаюсь?
а в чем ты видишь ошибку?
icWasya (2007-01-23 13:54:00) [9]у меня компилируется без ошибок(D5)
что-то не так в другом месте