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

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

Событие после запуска Applet [Delphi, Windows]


Kirill ©   (2005-02-24 13:24:00) 

У меня в проекте нет форм, только Applet.
Нужно после Run(Applet) запустить свою процедуру обработки почты.
Для формы есть событие OnShow. А что использовать для Applet?


Kirill   (2005-03-17 10:09:00) [1]

В личной переписке ECM предложил рабочий вариант

Applet := NewApplet('1').CenterOnParent;
Applet.Visible := true;
fmM := NewForm (Applet,'2').SetSize(400,300).CenterOnParent;
//fmM.OnShow := TOnEvent(MakeMethod(nil,@OnFmShow));
OnFmShow(nil,Applet);
//  Run(Applet);

Однако, Владимир, если есть такая возможность, добавьте событие для формы OnActivate


Kirill   (2005-03-17 09:18:00) [2]

No, I can't use. I have simple task:
all incoming mail save to files, other files send to mail.
var fmM : PControl;

procedure OnFmShow(Dummy: Pointer; Sender: PObj);
var tc : Cardinal;
begin
 Applet.ProcessMessages;
 fmM.Update;
 tc:=GetTickCount;
 while Abs(tc-GetTickCount)<5000 do Applet.ProcessMessages;
 ExePath := ExtractFilePath(ParamStr(0));
 if (UpperCase(ParamStr(1))='/H') or (ParamStr(1)='/?') then
   MessageBox(0, cnstHelp,AppFullName+CopyRight,0)
 else begin
   if UpperCase(ParamStr(1))<>'NEWCONFIG' then begin
     if FileExists(ExePath+CfgFileName) then begin
       ReadConfig(ExePath+CfgFileName);
       RunMailProcess;
     end
     else SetDefaultValues;
   end else SetDefaultValues;
   WriteConfig(ExePath+CfgFileName);
 end;
 fmM.Close;
end;

begin
 Applet := NewApplet(AppName).CenterOnParent;
 Applet.Visible := true;
 fmM := NewForm (Applet,AppFullName).SetSize(400,300).CenterOnParent;
 fmM.OnShow := TOnEvent(MakeMethod(nil,@OnFmShow));
 Run(Applet);


thaddy   (2005-03-17 09:12:00) [3]

Even if you do not use visible form of the applet, if iy has a messageloop, you can use it:
in OnMessage, catch WM_ACTIVATEAPP,WM_ACTIVATE and WM_NCACTIVATE, WM_SHOW etc. If necessary force createn of a very very small window  with one pixel visible from any of the sides of the screen, and hide afterwards.


Kirill   (2005-03-17 06:03:00) [4]

Давно я не заходил на форум. Но вновь понадобилась помощь все в этом же вопросе.
КАК мне отловить тот момент, когда форма появилась? Почему в нет метода OnActivate? Может его можно чем-нибудь заменить о чем я не знаю?


Владимир Кладов   (2005-02-24 21:31:00) [5]

MCK - это не библиотека визуальных классов. Это надстройка времени проектирования, которая просто генерирует код. Во время исполнения в коде присутствуют не классы MCK, а объекты KOL.


Kirill   (2005-02-24 18:58:00) [6]

А, не... я всегда пользуюсь голым kol'ом. Без библиотеки визуальных классов


ECM   (2005-02-24 18:39:00) [7]

Этот файл (ИмяПроекта_1.inc) генерируется автоматически
пакетом MCK.
Вот его содержимое:
{ProjectName_1.inc
 This file is for you. Place here any code to run it
 just following Applet creation (if it present) but
 before creating other forms. E.g., You can place here
 <IF> statement, which prevents running of application
 in some cases. TIP: always use Applet for such checks
 and make it invisible until final decision if to run
 application or not. }


Kirill   (2005-02-24 18:31:00) [8]

А что за файл?
В поставке kol'а его нет


Vladimyr   (2005-02-24 16:44:00) [9]

А чем не подходит " test_1.inc" ?


Kirill   (2005-02-24 16:11:00) [10]

В тесной беседе с ECM было решено использовать Kol только в момент вызова настроек через командную строку, а так без Applet.
Но все же хорошо было бы сделать событие для Applet'а, которое возникает после процедуры Run(Applet): например OnRun - если, конечно, это возможно.


ECM   (2005-02-24 15:59:00) [11]

Точно.
procedure OnAppletShow( Dummy: PObj);
в этом случае будет корректнее...:)


Kirill   (2005-02-24 15:30:00) [12]

Извини,
я ее описал стандартно

procedure OnAppletShow( Dummy: PObj);

Кстати, это ошибка или как?
//Applet:=Newform(nil,'Test');


ECM   (2005-02-24 14:18:00) [13]

FAQ!
program Project1;

uses
 Windows,KOL;

{$R *.res}

function OnAppletShow( Dummy_Self: PObj;
          var Msg: TMsg; var Rslt: Integer ): Boolean;
begin
// Тут выполняется код перед показом главного окна
end;

begin
 Applet:=Newform(nil,'Test');
 Applet.OnShow := TOnEvent(MakeMethod(nil,@OnAppletShow));
 Run(Applet);
end.


Наверх

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