Признаюсь честно, не все мне понятно. В частности, в качестве примера, сделал программу, в которой при нажатии на кнопку динамически создается новая форма. Код:
- Код: Выделить всё
- unit Unit1;
 {$mode objfpc}{$H+}
 interface
 uses
 Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
 StdCtrls;
 type
 { TForm1 }
 TForm1 = class(TForm)
 Button1: TButton;
 Button2: TButton;
 procedure Button1Click(Sender: TObject);
 procedure Button2Click(Sender: TObject);
 procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
 private
 { private declarations }
 public
 { public declarations }
 end;
 var
 Form1: TForm1;
 Form2: TForm;
 implementation
 { TForm1 }
 procedure TForm1.Button1Click(Sender: TObject);
 var
 Btn: TButton;
 Lbl: TLabel;
 EdText: TEdit;
 begin
 if not Assigned(Form2) then
 Form2:= TForm.Create(Application);
 with Form2 do
 begin
 BorderStyle:= bsDialog;
 Height:= 84;
 Width:= 324;
 Left:= 350;
 Top:= 250;
 Btn:= TButton.Create(Self);
 with Btn do
 begin
 Parent:= Form2;
 Left:= 131;
 Top:= 44;
 Caption:= 'Найти';
 end;
 Lbl:=TLabel.Create(Self);
 with Lbl do
 begin
 Caption:= 'Найти текст';
 Parent:= Form2;
 Left:= 27;
 Top:= 18;
 end;
 EdText:=TEdit.Create(Self);
 with EdText do
 begin
 Parent:= Form2;
 Width:= 140;
 Left:= 104;
 Top:= 11;
 end;
 Show;
 end;
 end;
 procedure TForm1.Button2Click(Sender: TObject);
 begin
 if MessageDlg ('Закрыть форму?', mtConfirmation,
 [mbYes, mbNo], 0) = mrYes then
 begin
 Form2.Close;
 Form2.Free;
 Form2:= nil;
 end;
 end;
 procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: boolean);
 begin
 Form2.Free;
 Form2:= nil;
 end;
 initialization
 {$I unit1.lrs}
 end.
Вроде все работает, но меня не покидает ощущение, что я сделал неправильно. Так сказать непрофессионально.
Уважаемые знатоки, подскажите что здесь не так?






 ) никогда не писал, потому не представляю.
 ) никогда не писал, потому не представляю.

 ) зачем нужно OnCreate, когда возможно перекрыть конструктор...
 ) зачем нужно OnCreate, когда возможно перекрыть конструктор... По-моему, всё-таки, RAD - больше подходит для проектирования интерфейсов.
 По-моему, всё-таки, RAD - больше подходит для проектирования интерфейсов.