Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.27;
Скачать: CL | DM;

Вниз

Не получается послать post-сообщение окну   Найти похожие ветки 

 
-=Mike=-   (2005-11-10 12:21) [0]

В VCL для работы с БД использовал следующий механизм:
в событии OnCreate посылаю главному окну свое (т.е. пользовательское) сообщение с помощью функции PostMessage. Далее обработчик этого события осуществляет вывод диалога запроса пароля и затем открытие БД. Получалось очень хорошо - пользователь видит полностью сформированное и отрисованное главное окно.

Подскажите, как подобное сделать на KOL????


 
ECM ©   (2005-11-10 12:29) [1]

Один из возможных вариантов:
1)
Projects->Options->Forms убрать PassForm из списка "Auto-create forms"

2)
procedure TForm1.KOLForm1FormCreate(Sender: PObj);
...
  Form.Show;
  NewPassForm(PassForm,Applet);
  Ret := PassForm.Form.ShowModal;
  PassForm.Form.Hide;
  if Ret = 1 then begin
   ....


 
-=Mike=-   (2005-11-10 14:33) [2]

это я понимаю. так в общем-то и делается.
единственное что код по созданию и открытию формы запроса пароля, чтения БД переносится в отдельную процедуру, которая вызывается отдельно от FormCreate, но сразу же после нее. Такого я добиваюсь помещением вызова этой процедуры в обработчик своего сообщения. А в конце FormCreate просто делаю вызов PostMessage(Form.Handle, WM_MYMESSAGE, 0, 0);
Т.о. образом получается что приложение полностью проинициализоровалось, создало все свои структуры данных, обработало все сообщения, которые появились при запуске, и только после этого начало открывать БД.
Т.е. нужно добиться эффекта как будто пользователь после запуска программы нажимает на кнопку "Открыть БД", но это мы делаем за него.


 
ECM ©   (2005-11-10 15:00) [3]

Проверил у себя:

procedure TMainForm.KOLForm1FormCreate(Sender: PObj);
...
 PostMessage(Form.Handle,WM_NULL,0,0);
end;

function TMainForm.KOLForm1Message(var Msg: tagMSG;
 var Rslt: Integer): Boolean;
begin
 Result := FALSE;
 if Msg.message = WM_NULL then asm int 3 end;
...


Всё работает.


 
-=Mike=-   (2005-11-10 17:02) [4]

Действительно! Пашет! Как все просто оказалось.
Спасибо!



Страницы: 1 вся ветка

Текущий архив: 2006.08.27;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.057 c
3-1150786225
zdm
2006-06-20 10:50
2006.08.27
Вставка значения в поле с зарезервированным именем(SUM)


2-1154613448
gdaujk
2006-08-03 17:57
2006.08.27
Выделение памяти для массива в DLL.


15-1154618982
Pazitron_Brain
2006-08-03 19:29
2006.08.27
ICQLOG.RU - рулез!


4-1146770949
Dinamyc
2006-05-04 23:29
2006.08.27
Чтение из консоли в окно


6-1144755402
MadSnake
2006-04-11 15:36
2006.08.27
список подключений