Цитата:
Сообщение от sariman
Hi guys! Подскажите правильно я использовал циклы или можно сделать по-лучше? процедура осуществляет плавное затухание и появления label, но уже с другим текстом, вот собственно код:
Код:
procedure TACForm.FadeLabel(ALabel: TAlphaLabel; NewCaption: string);
var
Opacity: Integer;
begin
for Opacity := 0 to 100 do
begin
Application.ProcessMessages;
Sleep(3);
ALabel.AlphaValue := Opacity;
end;
ALabel.Caption := NewCaption;
ALabel.Left := (ACForm.Width div 2) - (ALabel.Width div 2);
for Opacity := 100 downto 0 do
begin
Application.ProcessMessages;
Sleep(3);
ALabel.AlphaValue := Opacity;
end;
end;
|
Слово "Opacity" по-английски значит "непрозрачность", а AlphaValue означает величину прозрачности. Получается что мы величину непрозрачности присваиваем свойству прозрачности
И ещё "Application.ProcessMessages" подразумевает обработку сообщений, так что если в этом месте будет получено сообщение, то затухание или появление label будет приостановлено до полной обработки этого сообщения, поэтому возможно лучше вместо "Application.ProcessMessages" использовать что-то типа "ALabel.Repaint". Правда я не знаю что такое TAlphaLabel, так что ничего точно сказать не могу.