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

Вниз

Как создать указатель на форму   Найти похожие ветки 

 
LinOS ©   (2003-10-09 10:31) [0]

Подскажите, как создать указатель на форму.
Создаю форму и потом по указателю надо ее убить, что бы не привязываться к конкретному названию.


 
Radionov Alexey ©   (2003-10-09 10:33) [1]

Когда ты обращаешься к форме, ты всегда имеешь дело с указателем.

А создать еще один указатель:

FormPointer : TForm;


 
Семен Сорокин ©   (2003-10-09 10:35) [2]

что бы не привязываться к конкретному названию.
Form1 - указатель на форму TForm1 по умолчанию :))
var
_ptr: pointer;

_ptr := @(TForm1.Create(nil))


 
LinOS ©   (2003-10-09 10:35) [3]

Понятно, а я думал так нельзя. А то у меня ошибку вали и валит я уже не знаю на что и думать.
Если я сделаю так:
FormPointer := MyForm;
...
...
FormPointer.Free;
FormPointer := nil;

Так корректро писать?


 
Romkin ©   (2003-10-09 10:39) [4]

Корректно. Можно и FreeAndNil


 
Плохиш_   (2003-10-09 10:39) [5]

>LinOS © (09.10.03 10:35) [3]

Если компилятор не против, то корректно ;-)


 
Семен Сорокин ©   (2003-10-09 10:40) [6]

Семен Сорокин © (09.10.03 10:35) [2]
обшибся - без адреса:
_ptr := TForm1.Create(nil)
LinOS © (09.10.03 10:35) [3]
Так корректро писать?
FormPointer := MyForm;
...
...
TForm(FormPointer).Free;
FormPointer := nil;


 
LinOS ©   (2003-10-09 10:51) [7]


var
CurrForm: TForm;
..
..
procedure TMainForm.Image3Click(Sender: TObject);
begin
if CurrForm <> nil then
begin
CurrForm.Free;
CurrForm := nil;
end;
StaffForm := TStaffForm.Create(self);
CurrForm := StaffForm;
StaffForm.WorkPanel.Parent := MainForm.MainPanel;
Image3.Enabled := False;
Image4.Enabled := True;
end;

procedure TMainForm.Image4Click(Sender: TObject);
begin
if CurrForm <> nil then
begin
CurrForm.Free;
CurrForm := nil;
end;
ProffForm := TProffForm.Create(self);
CurrForm := ProffForm;
ProffForm.WorkPanel.Parent := MainForm.MainPanel;
Image3.Enabled := True;
Image4.Enabled := False;
end;

Нажимаю на Image 3 - показывает сод формы Staff
Нажимаю на Image 4 - показывает сод формы Proff
Нажимаю опять на Image 3 - Access Violation
Что не так?


 
Radionov Alexey ©   (2003-10-09 10:54) [8]

CurrForm где-то рожают? Если нет, то

var
CurrForm: TForm=Nil;


 
Anatoly Podgoretsky ©   (2003-10-09 11:09) [9]

Ошмбка где то в другом месте, но вот эти операции лишнии

if CurrForm <> nil then
begin
CurrForm.Free;
CurrForm := nil;
end;

достаточно CurrForm.Free;


 
:)   (2003-10-09 11:16) [10]

или FreeAndNil(CurrForm)


 
:)   (2003-10-09 11:17) [11]

а точнее

if Assigned(CurrForm) then
FreeAndNil(CurrForm)


 
LinOS ©   (2003-10-10 07:26) [12]

Дело в том, что я назначаю WorkPanel из ProffForm отображаться в MainForm.

ProffForm.WorkPanel.Parent := MainForm.MainPanel;

а затем я уничтожаю форму ProffForm, а WorkPanel лежит в MainForm. Думаю дело в этом.



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

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

Наверх




Память: 0.49 MB
Время: 0.018 c
3-74094
uu
2003-10-01 21:47
2003.10.23
Обновление данных в DBGrid


1-74162
Oleg_Al
2003-10-10 10:11
2003.10.23
доступ к дочерним окнам MDI


11-74107
mdw
2003-02-07 17:00
2003.10.23
Checked в BitBtn


3-73966
Caesar
2003-09-24 15:36
2003.10.23
группировка в QReport


3-74055
noiza
2003-10-03 17:43
2003.10.23
Interbase И