Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как правильно присвоить значения сразу же после создания объекта? [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, но ИМХО это будет выглядеть по-идиотски


Наверх

Титульная страница Поиск, карта сайта Написать письмо