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

Вниз

динамическое создание таймера перед запускм приложения   Найти похожие ветки 

 
GEN++ ©   (2005-02-14 23:46) [0]

В файле .dpr не получается
(выдается ошибка компиляции)
создать TTimer
Как сделать правильно?


program Project55;

uses
 Forms,
 Windows,
 extctrls,
 Classes,
 unit55 in "D:\Program Files\Borland\Delphi5\Bin\unit55.pas" {Form1};

{$R *.RES}
procedure    on_Timer(Sender:TObject);
begin
      //код обработчика
      fl:=false;
end;
var
h:HWND;
tm:TTimer;
fl:boolean;
begin
  Application.Initialize;
  fl:=true;
  tm:=TTimer.Create(Application);
  tm.Interval:=100;
  tm.OnTimer:=on_Timer;//<==  [Error] Project1.dpr(24):
                       // Incompatible types:
                       // method pointer and regular procedure
  tm.Enabled:=true;

 Application.Initialize;
 Application.CreateForm(TForm1, Form1);
 while(fl) do application.ProcessMessages;
 tm.free;
 Application.Run;
end.


 
Palladin ©   (2005-02-14 23:54) [1]

1 Зачем тебе Application.Initialize два раза
2 TTimer можно создавать и без Application
3 OnTimer должент быть (как ты видимо прочитал и проникся) методом объкта, а не регулярной процедурой
4 И в конце концов вся та белебердень которую ты написал сводится к

Sleep(100)


 
Юрий Зотов ©   (2005-02-14 23:55) [2]

Обработчиком события объекта должен быть метод объекта, а не просто процедура.

Вообще говоря, из кода непонятно, почему бы просто не положить таймер на главную форму и получить то же самое без всяких проблем. Но если уж очень хочется, то напишите свой потомок TTimer, добавьте ему обработчик OnTimer и пусть обрабатывает сам себя.


 
Palladin ©   (2005-02-14 23:55) [3]

ЗЫ:
1 unit55 - :) ужас
2 а всетаки зачем тебе h:HWND
3 Application.ProcessMessages до Application.Run это классная идея!


 
GEN++ ©   (2005-02-15 00:11) [4]

>Palladin ©  
 второй Application.Initialize  - "опечатка"
 Sleep(100): нужна не задерка
>Palladin ©  
>Юрий Зотов ©
 
Суть следующая: после Application.CreateForm(TForm1, Form1);
до появления формы, на экран лезет окно, которое
в обработчике таймера должно быть убито.
В unite выше приведенное создание таймера проходит
нормально, а как быть здесь?

Можно запустить вместо таймера небольшое приложение,
но не хотелось бы


 
iskatel ©   (2005-02-15 00:17) [5]

while
FindWindow
ShowWindow


 
Alex Konshin ©   (2005-02-15 00:26) [6]

Суть следующая: после Application.CreateForm(TForm1, Form1);
до появления формы, на экран лезет окно, которое
в обработчике таймера должно быть убито.

Хм. Может проще и не создавать его?


 
GEN++ ©   (2005-02-15 00:27) [7]

>Palladin ©  
>unit55 - :) ужас
Не ужас, а страшная военная тайеа!!!
Вот если бы было: unit54 или unit56 - тогда бы
все, "расстрел на месте без суда и следствия...
      при задержании - огонь на поражение"

h:HWND - конечно нужно убрать в процедуру
>Application.ProcessMessages до Application.Run это классная
>идея!
береженого Бог бережет, как говорила монашка........


 
Юрий Зотов ©   (2005-02-15 00:29) [8]

> GEN++ ©   (15.02.05 00:11) [4]

> после Application.CreateForm(TForm1, Form1);
> до появления формы, на экран лезет окно, которое
> в обработчике таймера должно быть убито.

Какое окно? Откуда оно взялось? Зачем его убивать? И почему обязательно по таймеру?

> В unite выше приведенное создание таймера проходит
> нормально, а как быть здесь?

Вынести свой таймер в юнит. Можно в тот же, где Form1.

===========================

P.S.
До вызова Application.Run таймер все равно не сработает.


 
GEN++ ©   (2005-02-15 00:31) [9]

>Alex Konshin ©  
Убиенное окно создает условно бесплатный компонент
лежащий на форме Form1. При отладке программы "замучался"
его закрывать.


 
Palladin ©   (2005-02-15 00:33) [10]

кащунство...


 
GEN++ ©   (2005-02-15 00:35) [11]

>Юрий Зотов ©  
>До вызова Application.Run таймер все равно не сработает.

 Да, все гениальное простою Ваща правда.
Остается только внешнее приложение.


 
iskatel ©   (2005-02-15 00:36) [12]

да нах тебе таймер? засунь FindWindow в while? туда же sleep и ProcessMessages - т.е. прога будет ждать пока не появится окно, а там и убивай себе...


 
GEN++ ©   (2005-02-15 00:45) [13]

>iskatel ©  
>засунь FindWindow в while?
не катит: while будет выполняться толко после
закрытия "окна":  проверено. Потому и делаю таймер:
рано или поздно он окно закроет.



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

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

Наверх




Память: 0.5 MB
Время: 0.057 c
14-1107722302
GanibalLector
2005-02-06 23:38
2005.02.27
Плагин и СОМ в одном флаконе


1-1108356159
vidiv
2005-02-14 07:42
2005.02.27
"Цветной" скролинг (scroll) у стандартного компонента (TListView)


14-1107109896
Knight
2005-01-30 21:31
2005.02.27
Как удалить глючные файлы на FAT32?


14-1104052102
www.Vlad.uk
2004-12-26 12:08
2005.02.27
Глючит EXPLORER.EXE


1-1107928094
JohnKorsh
2005-02-09 08:48
2005.02.27
Как грамотно стиреть директорию ?