Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » *.exe и timer

Ответить
Настройки темы
*.exe и timer

Пользователь


Сообщения: 83
Благодарности: 0

Профиль | Отправить PM | Цитировать


можноли зделать следуюшае:
когда нажемаеш кнопку *.exe открывается и через 5 секунд закрывается( Form1 не должно закрыватся).Язык Dephi

Отправлено: 02:00, 02-05-2005

 

Пользователь


Сообщения: 83
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вечерком может положу тут более интересное решение.

былбы очень признателен,а то мучаюсь тут.

Последний раз редактировалось Millenium, 05-05-2005 в 19:54.


Отправлено: 19:17, 05-05-2005 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Savant

Старожил


Сообщения: 300
Благодарности: 6

Профиль | Сайт | Отправить PM | Цитировать


Ну вот собственно этот example, как обещал...
Решил особо не заморачиваться и сделать всё попроще.

Основные моменты:
1. Создаем новый поток, который и будет убирать в нужное время splash screen. Указываем ему приоритет как Idle, чтобы не мешал основному процессу загрузки. Этот поток будет ждать, пока не будет создана главная форма и затем через 250 мс закроет заставку.
Код: Выделить весь код
procedure TMyThread.Execute;
begin
  Form1 := nil;
  while Form1 = nil do ;
  Sleep(250);
  Synchronize(SplashScreen.Hide);
  Synchronize(SplashScreen.Free);
end;
2. На самой форме заставки размещаем картинку и TLabel, хотя можно и другие комбинации. В TLabel можно выводить какую-либо информацию о процессе загрузки приложения.
Код: Выделить весь код
...
  myThread := TMyThread.Create(False);
  SplashScreen := TSplashScreen.Create(Application);
  SplashScreen.Show;
  SplashScreen.Label1.Caption := '> Loading.... Please wait';
  SplashScreen.Update;
...
3. Т.к. заставки используются обычно только при долгой загрузке программы, то я включил специальный код для задержки исполнения программы на 2-3 с.
Код: Выделить весь код
var
  i: Integer;
  a: Extended;
...
  // имитация "тяжелой" загрузки
  a:= 1.0;
  for i:=1 to 9999999 do a:=sin(a) * cos(i * 1.0);
...
Естественно, в реальной программе вместо этого кода будут операции по загрузке конфигурации и инициализации модулей или что-то подобное. После выполнения этих операций создается главная форма и запускается основной цикл сообщений. Вспомним, что созданный дополнительный поток следит за состоянием главной формы и закроет форму с заставкой через 250 мс.
Код: Выделить весь код
...
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
В общем-то и всё

Исходник и откомпилированный exe тут - http://www.webfile.ru/290232 (205 кб)

Отправлено: 22:08, 05-05-2005 | #12



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » *.exe и timer

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Интересует куда делись Regedit.exe | NTSD.exe | NETSETUP.exe | TELNET.exe Ricardo Проект WinStyle 11 30-07-2009 23:36
Проблемы с Club Timer Мила Сетевые технологии 1 01-10-2007 13:39
club timer saltek Сетевые технологии 1 17-10-2005 13:32
Visual Basic+Timer Leonidas Программирование и базы данных 4 15-08-2004 13:27
VBA - Timer в VBA Witaleey Программирование и базы данных 1 29-08-2003 15:26




 
Переход