Здравствуйте, у меня возникла следующая проблема. Есть форма. На ней растянут Имейдж. Для того, чтобы форма плавно появлялась был написан следующий код:
Procedure TForm1.FormCreate(Sender: TObject);
Begin
Form1.AlphaBlendValue:=0;
Form1.AlphaBlend:=True;
End;
Procedure TForm1.FormActivate(Sender: TObject);
Var i: Integer;
Begin
For i:=1 To 255 Do
Begin
Form1.AlphaBlendValue:=i;
Application.ProcessMessages;
End;
End;
Procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
Var i: Integer;
Begin
Form1.Enabled:=False;
For i:=254 DownTo 0 Do
Begin
Form1.AlphaBlendValue:=i;
Application.ProcessMessages;
End;
End;
Но тут возникла проблема. При первом открытии форма появляется то плавно, но сперва появляется только одна часть формы, а через пару секунд, открывается пропущенная часть. При последующих открытиях - все нормально. Потом я писал другой код тоже с он Активэйт - и был такой же прикол( Подскажите пожалуйста, как можно избежать появление формы частями или на какое событие можно поменять ОнАктивейт, чтобы добится плавного появления формы
Проблема с OnActivate
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
Нужно отрисовать форму, а только потом играться с прозрачностью. Попробуй перевесить на onShow
[syntax=Delphi] [/syntax]
Кроме того, можно поставить sleep(1) в цикл, чтобы это происходило чуть медленней.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.