Форум: "Начинающим";
Текущий архив: 2007.05.13;
Скачать: [xml.tar.bz2];
ВнизИгра с формами Найти похожие ветки
← →
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.
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.05.13;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.043 c