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

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

создание формы в 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)
что-то не так в другом месте


Наверх

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