Форум: "Начинающим";
Текущий архив: 2009.05.03;
Скачать: [xml.tar.bz2];
ВнизКак правильно присвоить значения сразу же после создания объекта? Найти похожие ветки
← →
SP (2009-03-17 16:34) [0]
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 у фрейма нет...
Как мне правильно поступить?
← →
SP (2009-03-17 16:38) [1]Можно конечно попробовать сделать через Рostmessage, но ИМХО это будет выглядеть по-идиотски
← →
Anatoly Podgoretsky © (2009-03-17 16:45) [2]> SP (17.03.2009 16:34:00) [0]
Сделай это в OnShow
← →
Ega23 © (2009-03-17 16:46) [3]перекрыть TFrame.AfterConstruction ?
← →
SP (2009-03-17 16:54) [4]
> Сделай это в OnShow
Его у фрейма тоже нет..
> Ega23 © (17.03.09 16:46) [3]
>
> перекрыть TFrame.AfterConstruction ?
Хм... Щас попробую.
← →
SP (2009-03-17 16:59) [5]
> перекрыть TFrame.AfterConstruction ?
Работает. Спасибо!
← →
MsGuns © (2009-03-17 16:59) [6]Кстати действительно есть определенные неудобства оттого что у фрэйма нет OnCreate - приходится писать и извне вызывать методы, инициализирующие фрйэм. Аналогично при его разрушении
Может, я чего-то недопонимаю ?
← →
Ega23 © (2009-03-17 17:11) [7]
> Может, я чего-то недопонимаю ?
Есть AfterConstruction, есть BeforeDestruction. Они виртуальные.
← →
SP (2009-03-18 00:15) [8]
> Они виртуальные.
Хм... Не то чтобы именно виртуальные, но пустые. По крайней мере в D7
← →
Германн © (2009-03-18 00:25) [9]
> SP (18.03.09 00:15) [8]
>
>
> > Они виртуальные.
>
>
> Хм... Не то чтобы именно виртуальные, но пустые.
Главное, что они именно виртуальные. Поэтому то что они пустые - это ерунда.
← →
девушка (2009-03-18 07:43) [10]
> Есть AfterConstruction, есть BeforeDestruction. Они виртуальные.
интересно, конечно...
Но я обычно пишу 2 метода - для инициализации и для очистки, а потом вы вызываю их в форме.
Одно из преимуществ - возможность передачи каких угодно параметров.
← →
Ega23 © (2009-03-18 09:07) [11]
> Но я обычно пишу 2 метода - для инициализации и для очистки,
> а потом вы вызываю их в форме.
> Одно из преимуществ - возможность передачи каких угодно
> параметров.
>
Ну и пиши свои методы, кто запрещает-то?
А вызов ставь в AC и BD. Или свой механизм придумывай.
Минус BeforeDestruction в том, что отменить действие не получится. В отличие от какого-нибудь Tform.OnCloseQuery
← →
Cobalt © (2009-03-19 11:35) [12]> Ega23 © (18.03.09 09:07) [11]
> Минус BeforeDestruction в том, что отменить действие не
> получится. В отличие от какого-нибудь Tform.OnCloseQuery
К фрейму это, слава богу, неприменимо. Это ж не форма какая, которую можно закрыть, или как "закрытие вкладки в Tab-контроле".
← →
Плохиш © (2009-03-19 12:17) [13]
> SP (18.03.09 00:15) [8]
>
>
> > Они виртуальные.
>
>
> Хм... Не то чтобы именно виртуальные, но пустые.
Как пустота связана с виртуальностью?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.05.03;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c