Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.03.2008, 18:12
SERЖant SERЖant вне форума
Начинающий
 
Регистрация: 22.03.2008
Адрес: г.Елец , Липецкой области , Россия
Сообщения: 104
Репутация: 7
По умолчанию Плавность и прозрачность

Человеки! Как с помошью параметров AlphaBlend и AlphaBlendValue заставить форму плавно появиться? Приветствуются все самые разные предложения.
Ответить с цитированием
  #2  
Старый 22.03.2008, 19:07
Аватар для KOOL
KOOL KOOL вне форума
Активный
 
Регистрация: 06.01.2008
Адрес: Рязань
Сообщения: 306
Версия Delphi: 2009
Репутация: 6150
По умолчанию

тебе нужно юзать таймеры(один для увеличения прозрачности, другой для уменьшения), которые будут изменять глобальную переменную прозрачности и присваивать ее значение AlphaBlendValue
Ответить с цитированием
  #3  
Старый 22.03.2008, 19:58
SERЖant SERЖant вне форума
Начинающий
 
Регистрация: 22.03.2008
Адрес: г.Елец , Липецкой области , Россия
Сообщения: 104
Репутация: 7
По умолчанию

Ну а как код выглядеть то будет. Если не сложно , напишите.
Ответить с цитированием
  #4  
Старый 22.03.2008, 21:09
Аватар для KOOL
KOOL KOOL вне форума
Активный
 
Регистрация: 06.01.2008
Адрес: Рязань
Сообщения: 306
Версия Delphi: 2009
Репутация: 6150
По умолчанию

вот мой код для уменьшения прозрачности:
Код:
procedure TForm1.DisAppearTimerTimer(Sender: TObject);
begin
  dec(trans,(255-AlphaV) div 15); //trans-глобальная переменная типа byte. div 15 не обязательно-у меня это для скорости
  Form1.AlphaBlendValue := trans; //в AlphaV хранится нужное значение прозрачности
  if ali>AlphaV then //если текущая прозрачность меньше нужной
    exit; //то выходим
  trans := AlphaV; //на всякий случай
  Form1.AlphaBlendValue := trans;
  DisAppearTimer.Enabled:=false; //все уже сделано. вырубаем
end;

end;
для увеличения аналогично:
Код:
procedure TForm1.AppearTimerTimer(Sender: TObject);
begin
  if (trans<255)And not(DisAppearTimer.Enabled) then //если не сделать проверку то будет нехорошо
    begin
      inc(trans,(255-AlphaV) div 15);
      Form1.AlphaBlendValue := trans;
    end;
  if trans<255then
    exit;
  trans:=255;
  Form1.AlphaBlendValue := 255;
  AppearTimer.Enabled:=false;
end;
чтобы это работало, нужны обработчики событий AppActivate и AppDeactivate для изменения прозрачности при потере или получении фокуса или FormShow если надо только при появлении. Таймеры по умолчанию должны быть выключены!!!:
Код:
procedure TForm1.AppActivate(Sender: TObject);
begin
  Form1.AppearTimer.Enabled:=True;
end;

procedure TForm1.AppDeactivate(Sender: TObject);
begin
  Form1.DisAppearTimer.Enabled:=True;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnActivate := AppActivate; //присваиваем процедуры проге
  Application.OnDeActivate := AppDeactivate;
end;

//ИЛИ
procedure TForm1.FormShow(Sender: TObject);
begin
  Form1.AppearTimer.Enabled:=True;
end;
Ответить с цитированием
  #5  
Старый 22.03.2008, 21:29
SERЖant SERЖant вне форума
Начинающий
 
Регистрация: 22.03.2008
Адрес: г.Елец , Липецкой области , Россия
Сообщения: 104
Репутация: 7
По умолчанию

Спасибо KOOL.Очень помог.Обязательно оставлю отзыв!
Ответить с цитированием
  #6  
Старый 22.03.2008, 21:48
SERЖant SERЖant вне форума
Начинающий
 
Регистрация: 22.03.2008
Адрес: г.Елец , Липецкой области , Россия
Сообщения: 104
Репутация: 7
По умолчанию

KOOL , ОН пишет ошибку Undeclared identifier: AlphaV. Че делать?
Ответить с цитированием
  #7  
Старый 22.03.2008, 22:08
Аватар для KOOL
KOOL KOOL вне форума
Активный
 
Регистрация: 06.01.2008
Адрес: Рязань
Сообщения: 306
Версия Delphi: 2009
Репутация: 6150
По умолчанию

AlphaV тоже надо было указать в глобальных переменных, желательно в Public формы(для опций)
Ответить с цитированием
  #8  
Старый 22.03.2008, 22:26
SERЖant SERЖant вне форума
Начинающий
 
Регистрация: 22.03.2008
Адрес: г.Елец , Липецкой области , Россия
Сообщения: 104
Репутация: 7
По умолчанию

Спасибо, теперь все работает.
Ответить с цитированием
  #9  
Старый 22.03.2008, 22:56
SERЖant SERЖant вне форума
Начинающий
 
Регистрация: 22.03.2008
Адрес: г.Елец , Липецкой области , Россия
Сообщения: 104
Репутация: 7
По умолчанию

Жаль, что сначала происходит перерисовка окна, т.е. окно сначала появляется и тут же начинает плавно снова появляться. Это никак нельзя обойти.
Ответить с цитированием
  #10  
Старый 22.03.2008, 23:14
Аватар для KOOL
KOOL KOOL вне форума
Активный
 
Регистрация: 06.01.2008
Адрес: Рязань
Сообщения: 306
Версия Delphi: 2009
Репутация: 6150
По умолчанию

можно у формы сделать AlphaBlendValue по умолчанию равным 0 и будет норм.
З.Ы. C AlphaSkins не заработает
Ответить с цитированием
  #11  
Старый 22.03.2008, 23:28
SERЖant SERЖant вне форума
Начинающий
 
Регистрация: 22.03.2008
Адрес: г.Елец , Липецкой области , Россия
Сообщения: 104
Репутация: 7
По умолчанию

Теперь все выглядит на 5. Вообще прикольно! Спасибо , что помог.
Ответить с цитированием
  #12  
Старый 02.04.2008, 20:46
Аватар для AXS
AXS AXS вне форума
Новичок
 
Регистрация: 26.11.2006
Адрес: РК г. Талдыкорган
Сообщения: 67
Репутация: 15
По умолчанию

А так не проще?..

появляется...
Код:
procedure TForm1.FormActivate(Sender: TObject);
var
  i: Integer;
begin
  for i:=0 to 255 do
    begin
      Form1.AlphaBlendValue:=i;
      Sleep(1);
      Application.ProcessMessages;
    end;
end;

...исчезает.
Код:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
  i: Integer;
begin
  for i:=255 downto 0 do
    begin
      Form1.AlphaBlendValue:=i;
      Sleep(1);
      Application.ProcessMessages;
    end;
end;

Последний раз редактировалось AXS, 02.04.2008 в 20:50.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:20.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter