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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2009, 23:05   #1
DeDoK
Форумчанин
 
Аватар для DeDoK
 
Регистрация: 05.11.2007
Сообщений: 392
По умолчанию затухание формы.

Вопрос такой. хочу чтобы заставка при появлении затухала. пишу так.
Код:
procedure TSplashForm.FormCreate(Sender: TObject);
begin
Timer1.Enabled:=true;
end;

procedure TSplashForm.Timer1Timer(Sender: TObject);
var
i:byte;
begin
i:=1;
while SplashForm.AlphaBlendValue>0 do
begin
SplashForm.AlphaBlendValue:=SplashForm.AlphaBlendValue-i;
end;
Sleep(2000);
Timer1.Enabled:=false;
SplashForm.Close;
end;
в Project > View source пишу так
Код:
begin
SplashForm:=TSplashForm.Create(nil);
SplashForm.Show;
SplashForm.Repaint;
  Application.Initialize;
  Application.CreateForm(TMainForm, MainForm);
  Sleep(2000);
  SplashForm.Hide;
  SplashForm.Free;
Application.Run;
end.
Все компилируется но не работает. по нажатию на кнопку на другой форме
Код:
procedure TMainForm.Button1Click(Sender: TObject);
begin
SplashForm.Show;
SplashForm.Timer1.Enabled:=true;
end;
все работает. как сделать чтобы заставка затухала?
DeDoK вне форума Ответить с цитированием
Старый 10.12.2009, 23:15   #2
apromix
PHP, Delphi
Форумчанин
 
Аватар для apromix
 
Регистрация: 07.05.2008
Сообщений: 388
По умолчанию

Используй (для появления, но должно использоваться и для затухания) AnimateWindow(Handle, 250, AW_BLEND or AW_ACTIVATE);
Мыши плакали, кололись, но продолжали жрать кактус...
мои проекты
apromix вне форума Ответить с цитированием
Старый 10.12.2009, 23:20   #3
DeDoK
Форумчанин
 
Аватар для DeDoK
 
Регистрация: 05.11.2007
Сообщений: 392
По умолчанию

не катит. тоже не работает. щас выложу исходник
DeDoK вне форума Ответить с цитированием
Старый 10.12.2009, 23:22   #4
apromix
PHP, Delphi
Форумчанин
 
Аватар для apromix
 
Регистрация: 07.05.2008
Сообщений: 388
По умолчанию

А, вот нашел здесь на форуме

Код:
  AnimateWindow(Handle, 250, AW_BLEND or AW_HIDE);
Мыши плакали, кололись, но продолжали жрать кактус...
мои проекты
apromix вне форума Ответить с цитированием
Старый 10.12.2009, 23:23   #5
DeDoK
Форумчанин
 
Аватар для DeDoK
 
Регистрация: 05.11.2007
Сообщений: 392
По умолчанию

вот и исходник
Вложения
Тип файла: rar смс.rar (132.1 Кб, 20 просмотров)
DeDoK вне форума Ответить с цитированием
Старый 10.12.2009, 23:24   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

сие...
Код:
while SplashForm.AlphaBlendValue>0 do
begin
SplashForm.AlphaBlendValue:=SplashForm.AlphaBlendValue-i;
будет приводить к мгновенному уменьшению в одном тике таймера, который тут уже ни до чого + i не инкрементируется.



вот вам рабочий вариант...
Вложения
Тип файла: zip splash_form.zip (2.1 Кб, 31 просмотров)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 10.12.2009 в 23:29.
raxp вне форума Ответить с цитированием
Старый 10.12.2009, 23:39   #7
DeDoK
Форумчанин
 
Аватар для DeDoK
 
Регистрация: 05.11.2007
Сообщений: 392
По умолчанию

raxp, спасибо. ваш метод вполне устроил.
DeDoK вне форума Ответить с цитированием
Старый 11.12.2009, 00:15   #8
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Можно добавить затухание не только по альфа, но и по размеру (плавно уменьшать размер вплоть до точки).Что то типа этого (на скорую руку набросал):
форма 500 х 300 плюс кнопка (для примера запуска)
Код:
procedure TForm1.Button1Click(Sender: TObject);
var i: byte;
begin
  for i:= 1 to 100 do
  begin
    Form1.Width:= Form1.Width -2;
    Form1.Height:= Form1.Height - 2;
  end;
  Form1.Canvas.Font.Size:= 16;
  Form1.Canvas.Font.Color:= clRed;
  Form1.Canvas.TextOut(30,10,' Щас-с закроюсь!');
  Sleep(2000);
  Close;
end;
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 11.12.2009, 08:09   #9
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Цитата:
Сообщение от apromix Посмотреть сообщение
Используй (для появления, но должно использоваться и для затухания) AnimateWindow(Handle, 250, AW_BLEND or AW_ACTIVATE);
AW_BLEND Использует эффект постепенного изменения прозрачности окна. Этот флажок может быть использован только в том случае, если параметр hwnd - окно верхнего уровня.
SERG1980 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Элемент формы <input type="image"... не находится в коллекции элементов формы? euroflock Работа с сетью в Delphi 1 01.09.2009 16:17
Заполнение поле формы автоматически из другой формы!! Магомед Microsoft Office Access 8 28.07.2009 13:49
Как сделать границы формы другого цвета,формы?? Дима я Общие вопросы Delphi 3 22.06.2009 07:24
Обращение из формы в dll к элементу главной формы (delphi) a_n_n_a Помощь студентам 3 10.05.2009 04:00
Поочередное затухание. celovec Win Api 2 24.12.2008 09:47