Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.02.11;
Скачать: CL | DM;

Вниз

создание формы в run_time   Найти похожие ветки 

 
alexey_mas ©   (2007-01-23 13:45) [0]

Добрый день подскажите по созданию формы и компонентов в 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 но не понимаю где и как это можно сделать.


 
icWasya ©   (2007-01-23 13:54) [1]

у меня компилируется без ошибок(D5)
что-то не так в другом месте


 
clickmaker ©   (2007-01-23 14:03) [2]


> Где я ошибаюсь?

а в чем ты видишь ошибку?


 
alexey_mas ©   (2007-01-23 14:16) [3]

Сории нашел ошибку. все работает.
Но интересно ошибочка выдавалась
во сдесь просто значения забыл поставить и из-за множества коментариев в коде не замечал :)


  Button1_reg.Top:=
  Button1_reg.Left:=


а компилятор ругался на
Button1_reg.OnClick:=OnClickButton;   -  Incompatible types: "Integer" and "TNotifyEvent"

Прошу прощения.


 
alexey_mas ©   (2007-01-23 15:57) [4]

а как при закрытии формы вернуть управление главной форме?

т.е. я из главной формы в run_time создал дочернюю форму и запустил её в шоумодал
по кнопке кансел я пытаюсь закрыть форму, т.е. уничтожить дочернюю

Procedure TForm12.OnClickButton( Sender : TObject );
Begin
if (TControl(Sender).Name="Button2_reg") then begin
Form_reg.Free;
end;
End;



но не возвращается фокус (управление) на главную форму
т.е. только через program reset можно сбросить программу после такого закрытия


 
TRUNK ©   (2007-01-23 16:06) [5]


> Button1_reg.OnClick:=OnClickButton;   -  Incompatible types:
>  "Integer" and "TNotifyEvent"

Button1_reg.OnClick := @OnClickButton;

> по кнопке кансел я пытаюсь закрыть форму ...
> но не возвращается фокус (управление) на главную форму

А где находится кнопка Cansel ? В главном окне или в дочернем модальном ?


 
alexey_mas ©   (2007-01-23 16:12) [6]

> А где находится кнопка Cansel? В главном окне или в дочернем
> модальном ?


в дочернем модальном


 
TRUNK ©   (2007-01-23 16:27) [7]

В таком случае сделай так:
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 17:41) [8]

продвигаюсь дальше :)

Почему при присвоении 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. Где посмотреть какое свойство нужно писать первое чтобы последующие не перекрывали его?


 
Плохиш ©   (2007-01-23 18:35) [9]


>        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. Автор, как, по твоему мнению, нафига люди толстые и не очень книги по программированию в среде делфи, в частности, пишут? От нечего делать?



Страницы: 1 вся ветка

Текущий архив: 2007.02.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.036 c
4-1159770751
Samurai Kruche chem Jakudza
2006-10-02 10:32
2007.02.11
EnumProcesses


2-1169532094
M1sT
2007-01-23 09:01
2007.02.11
Сервер InterBase...


15-1169159622
MaximMsk1
2007-01-19 01:33
2007.02.11
Распечатывание


15-1169252464
lookin
2007-01-20 03:21
2007.02.11
Группа StereoTotal - кто слушал?


2-1169480316
Jimmy
2007-01-22 18:38
2007.02.11
Узнать, имеет ли Edit фокус