![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как правильно присвоить значения сразу же после создания объекта? [D7]
SP © (2009-03-17 16:34:00)
unit FrameSetting;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,Ora, StdCtrls;
type
TFrmSetting = class(TFrame)
GBxConnect: TGroupBox;
LblName: TLabel;
LblPass: TLabel;
LblTNS: TLabel;
LblSid: TLabel;
LblServer: TLabel;
LblPort: TLabel;
EdName: TEdit;
EdPass: TEdit;
EdTNS: TEdit;
EdSID: TEdit;
EdServer: TEdit;
EdPort: TEdit;
CbODAC: TCheckBox;
BtnTest: TButton;
BtnSave: TButton;
constructor Create(AOwner:TComponent;OraSession:TOraSession); reintroduce; overload;
private
FOraSession:TOraSession;
public
{ Public declarations }
end;
implementation
{$R *.dfm}
uses main;
constructor TFrmSetting.Create(AOwner:TComponent;OraSession:TOraSession);
begin
Create(AOwner);
FOraSession:=OraSession;
end;
end.
Но нужно сразу после создания фрейма сделать вот это:
EdName.Text:=DBUsername;
EdPass.Text:=DBPassword;
EdTNS.Text:=DBTNS;
EdSID.Text:=DBSID;
EdServer.Text:=DBServer;
EdPort.Text:=IntToStr(DBPort);
CbODAC.Checked:=DBODAC;
Если помещестить все это в конструктор - то это не дает никаких результатов, думаю из-за того, что соответствующие объекты на то время еще не созданы (странно только что я при этом не получаю ексепшенов)
События OnCreate у фрейма нет...
Как мне правильно поступить?
Плохиш (2009-03-19 12:17:00) [1]
> SP (18.03.09 00:15) [8]
>
>
> > Они виртуальные.
>
>
> Хм... Не то чтобы именно виртуальные, но пустые.
Как пустота связана с виртуальностью?
Cobalt (2009-03-19 11:35:00) [2]> Ega23 © (18.03.09 09:07) [11]
> Минус BeforeDestruction в том, что отменить действие не
> получится. В отличие от какого-нибудь Tform.OnCloseQuery
К фрейму это, слава богу, неприменимо. Это ж не форма какая, которую можно закрыть, или как "закрытие вкладки в Tab-контроле".
Ega23 (2009-03-18 09:07:00) [3]
> Но я обычно пишу 2 метода - для инициализации и для очистки,
> а потом вы вызываю их в форме.
> Одно из преимуществ - возможность передачи каких угодно
> параметров.
>
Ну и пиши свои методы, кто запрещает-то?
А вызов ставь в AC и BD. Или свой механизм придумывай.
Минус BeforeDestruction в том, что отменить действие не получится. В отличие от какого-нибудь Tform.OnCloseQuery
девушка (2009-03-18 07:43:00) [4]
> Есть AfterConstruction, есть BeforeDestruction. Они виртуальные.
интересно, конечно...
Но я обычно пишу 2 метода - для инициализации и для очистки, а потом вы вызываю их в форме.
Одно из преимуществ - возможность передачи каких угодно параметров.
Германн (2009-03-18 00:25:00) [5]
> SP (18.03.09 00:15) [8]
>
>
> > Они виртуальные.
>
>
> Хм... Не то чтобы именно виртуальные, но пустые.
Главное, что они именно виртуальные. Поэтому то что они пустые - это ерунда.
SP (2009-03-18 00:15:00) [6]
> Они виртуальные.
Хм... Не то чтобы именно виртуальные, но пустые. По крайней мере в D7
Ega23 (2009-03-17 17:11:00) [7]
> Может, я чего-то недопонимаю ?
Есть AfterConstruction, есть BeforeDestruction. Они виртуальные.
SP (2009-03-17 16:59:00) [8]
> перекрыть TFrame.AfterConstruction ?
Работает. Спасибо!
MsGuns (2009-03-17 16:59:00) [9]Кстати действительно есть определенные неудобства оттого что у фрэйма нет OnCreate - приходится писать и извне вызывать методы, инициализирующие фрйэм. Аналогично при его разрушении
Может, я чего-то недопонимаю ?
SP (2009-03-17 16:54:00) [10]
> Сделай это в OnShow
Его у фрейма тоже нет..
> Ega23 © (17.03.09 16:46) [3]
>
> перекрыть TFrame.AfterConstruction ?
Хм... Щас попробую.
Ega23 (2009-03-17 16:46:00) [11]перекрыть TFrame.AfterConstruction ?
Anatoly Podgoretsky (2009-03-17 16:45:00) [12]> SP (17.03.2009 16:34:00) [0]
Сделай это в OnShow
SP (2009-03-17 16:38:00) [13]Можно конечно попробовать сделать через Рostmessage, но ИМХО это будет выглядеть по-идиотски