![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
События OnCreate, OnShow, OnActivate для формы [D6, Win95/98]
MsGuns © (2002-11-04 19:17:00)Есть такой проект:
program ValBnk;
uses
Forms,
MainU in "MainU.pas" {MainForm},
DMVlBank in "..\DataMod\DMVlBank.pas" {dmBank: TDataModule},
SprsStat in "SprsStat.pas",
SprBxSch in "SprBxSch.pas" {frmSprSch},
GetPer in "GetPer.pas" {frmGetPeriod},
Setting in "Setting.pas" {frmComSet};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TMainForm, MainForm);
Application.CreateForm(TdmBank, dmBank);
Application.CreateForm(TfrmSprSch, frmSprSch);
Application.CreateForm(TfrmGetPeriod, frmGetPeriod);
Application.CreateForm(TfrmComSet, frmComSet);
Application.Run;
end.
В событии MainForm.OnActivate происходит обращение к процедуре, определенной в модуле frmComSet для считывания стартовых опций из ini-файла. В этой процедуре происходит такая вещь:
procedure ReadComParams;
var
i: integer;
begin
ComIni := TIniFile.Create(ComLib+"VBCom.ini");
for i := 0 to frmComSet.Panel1.ControlCount-1 do
if frmComSet.Panel1.Controls[i].ClassType=TEdit then
TEdit(frmComSet.Panel1.Controls[i]).Text :=
ComIni.ReadString(VB_COMMONSECTIONID,frmComSet.Panel1.Controls[i].Name,"");
end;
При обращении к контролам панели вылетает по Access Violation..
Такое впечатление, что форма еще не создана или не завершен конструктор для всех ее контролов. Где я глючу и как проверить из главной формы полностью ли "построена" нужная дочерняя ?
MsGuns (2002-11-04 19:23:00) [21]Вопрос вдогонку:
Как вообще ничего не показывать на экране, кроме часиков, пока ПОЛНОСТЬЮ не завершится конструктор всех форм и контролов, да еще БД откроется (DataModule.OnCreate) ?
Есть способ проверки всех флажков в цикле, которые "поднимает" каждая форма в конце OnCreate, но это совсем уж деревянно и хочется "как у людей"