← →Leonid Troyanovsky ©
	             
	            (2007-04-25 15:41)
		        [57]
		        
			     
> Kostafey ©   (25.04.07 03:30) [56] 
> Все же получается удобнее иметь для немодальных форм глобальные 
> указатели,
> будь то, поля главной формы или просто переменные в случае,
>  если каждое окно
> должно быть только в 1 экземпляре.
> Конечно, когда требуется иметь несколько экземпляров окна,
>  тут другого пути нет.
> Но если нужно работать одним экземпляром, то отсутсвие указателя 
> все только усложнит.
Во-первых, корректное хранение ссылки в поле формы 
(никаких переменных!) не так уж и просто. 
Вот пример хранения ссылки на TForm2, которая должна 
существовать лишь в одном экземпляре:
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
    FForm2: TForm;
  public
    { Public declarations }
    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
  end;
implementation
{$R *.dfm}
uses
  unit2;   {у TForm2 сделаем в обработчике OnClose: Action:= caFree}
procedure TForm1.Notification;
begin
  inherited;
  if AComponent = FForm2 then
    if Operation = opRemove then
      FForm2 := nil;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
  if not Assigned(FForm2) then
    begin
      FForm2 := TForm2.Create(nil); 
      FreeNotification(FForm2);
    end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
  if Assigned(FForm2) then
    TForm2(FForm2).Show;
end;
Так что, использование Screen.Forms может быть и проще :)
--
Regards, LVT.
		        

