Признаюсь честно, не все мне понятно. В частности, в качестве примера, сделал программу, в которой при нажатии на кнопку динамически создается новая форма. Код:
- Код: Выделить всё
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.
Вроде все работает, но меня не покидает ощущение, что я сделал неправильно. Так сказать непрофессионально.
Уважаемые знатоки, подскажите что здесь не так?