Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2010, 13:47   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию Спрятать панель после отсчета времени в обработчике OnShow формы

Привет всем!
Сделал я так сказать форму секретных настроек которые обычный пользователь видеть не должен...

Закрыл эти настройки панелью.. и там разместил инфу типа ""Если в согласны что понимаете суть этих настроек..."

на панеле надпись "Эта панель закроется через.... n секунд"...

так вот в чем проблема... такое реализованно в примере SplashForm для Alpha skins... п аттаче исходник + бинарник...
показывается Splashформа на ней надпись "Главное окно программы откроется через.. 5-4-3-2-1 ...секунд" и открывается окно...

работает это так в примере:
Код в DPR:
Код:
  Application.Initialize;
  try
    // DataModule with TsSkinManager component should be created first
    Application.CreateForm(TDataModule1, DataModule1);
    SplashForm := TfmSplash.Create(Application);
    SplashForm.Show;
//    Application.ProcessMessages;

    // Until all forms in application will be created, our splash-form will be shown
    Application.CreateForm(TForm1, Form1);
    // Here maybe placed any initialization or other code
    for i := 5 downto 1 do begin
      SplashForm.sLabelFX2.Caption := 'This form will be shown for ' + IntToStr(i) + ' seconds...';
      Application.ProcessMessages;
      Sleep(1000);
    end;

  finally
    // Closing Splash-Screen and freeing memory (this code maybe placed in other parts of application,
    FreeAndNil(SplashForm); // for example - in Form1.OnShow event)
  end;
  Application.Run;
  
end.
я решил реализовать у себя тоже самое только с панелью на форме...
при отрисовке форма OnShow пишу подобное..
Код:
procedure SercretForm.OnShow(Sender:TObject);
var
i:integer;
begin
for i:=45 downto 0 do
begin
ComfirmLabel.Caption:='Эта панель закроется через'+IntToStr(i)+' Секунд';
Application.processMessages;
end;
end;
в таком варианте что-то все очень быстно...
вызываю форму а число уже на 0-ле...
если как в примере сделать и дописать
Код:
procedure SercretForm.OnShow(Sender:TObject);
var
i:integer;
begin
for i:=45 downto 0 do
begin
ComfirmLabel.Caption:='Эта панель закроется через'+IntToStr(i)+' Секунд';
Application.processMessages;
Sleep(1000);

//где-то тут ещё какой-то код....
end;
end;
то форма нарисуется только после того как i достигнет 0-ля....

А создовать ещё форму это уже "габаритно".... в чем причина?

Запустите exe-шник и посмотрите как работает...

P.S. странно что-то не заливается на форум.. вот прямая ссыль:
http://alphaskins.com/sfiles/demos/splashdemo.zip
Человек_Борща вне форума Ответить с цитированием
Старый 20.05.2010, 18:28   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

поможет кто-нибуть? просто скачать 700 кб и посмотреть как работает..

да даже скачивать не надо=)
Человек_Борща вне форума Ответить с цитированием
Старый 20.05.2010, 19:20   #3
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

если хочеш чтобы каждый раз при запуске это всё србатывало, и форма была уже создана и отображена, то и размещай в модуле проекта. В dpr
особо не старался просто закинул, но думаю как сделать всё понятно
Код:
program Project1;

uses
  Forms, windows, sysutils,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}
    var
i:integer;
begin
  Application.Initialize;
   Application.CreateForm(TForm1, Form1);
  form1.Show;
for i:=8 downto 0 do
begin
Form1.Label1.Caption:='Эта панель закроется через'+IntToStr(i)+' Секунд';
Application.processMessages;
Sleep(1000);

//где-то тут ещё какой-то код....
end;
Form1.Label1.Caption:='закрыто';
  Application.Run;
end.

Последний раз редактировалось vovk; 20.05.2010 в 19:23.
vovk вне форума Ответить с цитированием
Старый 20.05.2010, 20:11   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

не-не не так понял=)
Организовать на форме "Form1.Label1.Caption:='Эта панель закроется через'+IntToStr(i)+' Секунд';"

эт я и так могу....

приложение уже запущено..
нужно реализовать такое с панелью, которая закрывает вызываемую форму... если пользователь дал правельный ответ то панель спряталоась.. если нет то форма клоуз...
Человек_Борща вне форума Ответить с цитированием
Старый 20.05.2010, 20:22   #5
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

ну а форма то где создаётся? или она создаётся автоматом а потом висит скрытая до отображения?
В общем как ты эту форму вызываеш? и где, кнока с другой формы show ? динамическое создание по какому то событию?

Последний раз редактировалось vovk; 20.05.2010 в 20:26.
vovk вне форума Ответить с цитированием
Старый 21.05.2010, 13:56   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

формы создаются автоматически, в DPR файле этому созданию ни как услолий не ставится..

На определённой форме пользователь набирает комбинацию кнопок с зажатыми Ctrl+shift и
скрытая форма вызывается как ShowModal...

Все компоненты формы перекрыты панелью...(Tpanel)
нужно что-бы эта панель исчезала после x секунд...
Человек_Борща вне форума Ответить с цитированием
Старый 21.05.2010, 16:12   #7
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

завтра отпишусь, идеи есть, неоходимо проверить, сегодня неполучится проверить..
vovk вне форума Ответить с цитированием
Старый 22.05.2010, 17:36   #8
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Есть идеи? кроме как загромождать все это дело таймером?
Человек_Борща вне форума Ответить с цитированием
Старый 22.05.2010, 17:49   #9
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

В форме создаёшь перменную agree, равную в начале false. В кнопке соглашения пишешь agree:=true;
Код:
program Project1;

uses
  Forms, windows, sysutils,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}
    var
i:integer;
begin
  Application.Initialize;
   Application.CreateForm(TForm1, Form1);
  form1.Show;
for i:=8 downto 0 do
begin
Form1.Label1.Caption:='Эта панель закроется через'+IntToStr(i)+' Секунд';
Application.processMessages;
Sleep(1000);
if (agree) then 
 break;
end;
if agree then 
 Form1.Panel.Visible:=false
else
 Form1.Close;
  Application.Run;
end.
TwiX вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос удаляющий документ после определенного времени zmejsan Microsoft Office Word 18 14.01.2016 07:30
Событие после открытия формы VistaSV30 Microsoft Office Access 2 29.01.2010 11:19
Как в своем компоненте подключиться к событиям формы (OnShow, OnHide) Stas1 Компоненты Delphi 4 27.01.2009 13:28
Как мне в обработчике хука узнать хендл окна? vitalik007 Win Api 5 16.05.2008 09:34
Событие OnShow формы Antoha Общие вопросы Delphi 4 12.02.2008 21:13