Показать сообщение отдельно
  #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;
Ответить с цитированием