Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2006.08.27;
Скачать: [xml.tar.bz2];

Вниз

Не получается послать 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 вся ветка

Форум: "KOL";
Текущий архив: 2006.08.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.053 c
1-1152790476
Rater1
2006-07-13 15:34
2006.08.27
dde после выполнения макроса не сбрасывает флаг waitstat


6-1144664680
Std
2006-04-10 14:24
2006.08.27
Indy tc clien


15-1154599687
3S
2006-08-03 14:08
2006.08.27
Как вернуть..


2-1155098588
importru
2006-08-09 08:43
2006.08.27
Дельта групп импортёр.


1-1152706062
Kerk
2006-07-12 16:07
2006.08.27
TdxDBEdit + 7E6





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский