Форум: "Основная";
Текущий архив: 2003.10.23;
Скачать: [xml.tar.bz2];
ВнизКак создать указатель на форму Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c