Форум: "Начинающим";
Текущий архив: 2007.11.18;
Скачать: [xml.tar.bz2];
ВнизParent и Owner Найти похожие ветки
← →
Ega23 © (2007-10-24 15:01) [0]Это что же получается: я создал фрейм, Owner - nil, потом ему назначил в качестве Parent форму, потом эту форму убил. фрейм, получается, тоже погиб???
← →
Palladin © (2007-10-24 15:04) [1]нет... с чего бы...
← →
Германн © (2007-10-24 15:04) [2]
> фрейм, получается, тоже погиб???
С чего бы ему погибать?
← →
Сергей М. © (2007-10-24 15:09) [3]"Погиб" - это когда Owner <> nil и ты убил этого Owner"а.
А в сабже фрейм просто останется бесхозным, неприкаянным)
← →
Leonid Troyanovsky © (2007-10-24 15:11) [4]
> Ega23 © (24.10.07 15:01)
> ему назначил в качестве Parent форму, потом эту форму убил.
> фрейм, получается, тоже погиб???
Конечно, это обязанность Parent.
--
Regards, LVT.
← →
Leonid Troyanovsky © (2007-10-24 15:13) [5]т.е., если этого не хочешь,
предварительно сделай ему Parent := nil
--
Regards, LVT.
← →
Сергей М. © (2007-10-24 15:26) [6]
> Leonid Troyanovsky © (24.10.07 15:11) [4]
> Конечно, это обязанность Parent.
Обязанность уничтожать фрейм как VCL-объект ?
Хм ..
← →
Ega23 © (2007-10-24 15:28) [7]
> т.е., если этого не хочешь,
> предварительно сделай ему Parent := nil
>
Ага, это я уже понял. Просто я всё жизнь считал, что если Owner=nil, то Parent в убийстве никакой роли не играет...
А оно вон оно как, оказывается...
← →
Palladin © (2007-10-24 15:33) [8]
> Leonid Troyanovsky © (24.10.07 15:11) [4]
Это обязанность Owner, обязанность Parent предоставить кусочек монитора (если он сам конечно имеет кусочек монитора), где контрол будет жить полноценной жизнью, а не таиться в черных темных пещерах оперативки...
← →
Сергей М. © (2007-10-24 15:36) [9]
> Ega23 © (24.10.07 15:28) [7]
Интересно, на основании чего ты пришел к такому умозаключению ?
Ты перекрывал деструктор фрейма или обрабатывал его OnDestroy и стал очевидцем вызова деструктора или возникновения события при "убийстве родителя" ?
← →
Palladin © (2007-10-24 15:37) [10]
> Ega23 © (24.10.07 15:28) [7]
ну так ты совершенно верно считал...
← →
KSergey © (2007-10-24 15:38) [11]Интересно: подерутся "голубые" или нет?
← →
Leonid Troyanovsky © (2007-10-24 15:41) [12]
> Сергей М. © (24.10.07 15:36) [9]
See Control.pas: destructor TWinControl.Destroy
--
Regards, LVT.
← →
Ega23 © (2007-10-24 15:44) [13]
> Интересно, на основании чего ты пришел к такому умозаключению
> ?
>
> Ты перекрывал деструктор фрейма или обрабатывал его OnDestroy
> и стал очевидцем вызова деструктора или возникновения события
> при "убийстве родителя" ?
>
unit uMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uTreeViewFrame, uDBTreeViewFrame, StdCtrls, DB, ADODB;
type
TFMain = class(TForm)
btnDBTreeViewFrame: TButton;
btnConnect: TButton;
ADOConnMain: TADOConnection;
adsClasses: TADODataSet;
dsClasses: TDataSource;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure btnConnectClick(Sender: TObject);
procedure btnDBTreeViewFrameClick(Sender: TObject);
private
{ Private declarations }
public
DBTreeViewFrame : TDBTreeViewFrame;
end;
var
FMain: TFMain;
implementation
uses uModalForm;
{$R *.dfm}
//*****************************************************************************
procedure TFMain.FormCreate(Sender: TObject);
begin
DBTreeViewFrame := TDBTreeViewFrame.Create(nil);
end;
//*****************************************************************************
procedure TFMain.FormDestroy(Sender: TObject);
begin
TreeViewFrame.Free;
end;
//*****************************************************************************
procedure TFMain.btnConnectClick(Sender: TObject);
begin
ADOConnMain.Connected := True;
adsClasses.Open;
end;
//*****************************************************************************
procedure TFMain.btnDBTreeViewFrameClick(Sender: TObject);
begin
Application.CreateForm(TModalForm, ModalForm);
try
DBTreeViewFrame.DataSource := dsClasses;
ModalForm.InitFrame(DBTreeViewFrame);
ModalForm.ShowModal;
finally
DBTreeViewFrame.Parent := nil; // <-
ModalForm.Free;
end;
end;
//*****************************************************************************
end.
Если Parent фрейма не присвоить nil, то я попадаю на деструктор TDBTreeView, которой лежит на данном фрейме.
← →
Сергей М. © (2007-10-24 15:46) [14]
> Leonid Troyanovsky © (24.10.07 15:41) [12]
Угу, вижу.
Ты был прав.
← →
Palladin © (2007-10-24 15:48) [15]нет... не подерутся... проверил... освобождается...
плохо...
← →
Сергей М. © (2007-10-24 15:49) [16]
> Ega23 © (24.10.07 15:44) [13]
Виноват-с)... Это меня заклинило на ParentWindow
← →
Leonid Troyanovsky © (2007-10-24 15:49) [17]
> Palladin © (24.10.07 15:37) [10]
> ну так ты совершенно верно считал...
RTFM: Delphi help. TControl.Parent. Note
--
Regards, LVT.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.11.18;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.037 c