Здравствуйте, в данной статье хотел бы рассказать как я реализовал в одном своем проекте всплывающее окно. Да я знаю есть достаточно компонентов, которые позволяют сделать всплывающее окно, а также навести красоту в этом, но мне не надо было наводить красоту, обычное окно, которое будет информировать пользователей о чем-то. Может это метод, который делал я не совсем правильный, но я как-то так реализовал это. Использовал я в первую очередь TTimer, ну а остальное только на таймере я подвигал окно, конечно вместо таймера можно было использовать цикл, или что-то еще, но мне почему-то приглянулся он. На форме у меня
- TTimer
- TLabel
Ну и конечно надо настроить как-то более-менее красиво нашу форму, чтобы было похоже на красивое окно, можно конечно в дальнейшем свой дизайн придумать, нарисовать и украсить, но пока что сделаем ее чуть-чуть прозрачной и просто изменим стиль нашей формы, кроме этого, мы на нашем TLabel напишем что-нибудь, например, «Hello World» =).
Давайте поставим свойство формы AlphBlend в True, а AlphaValue в 180 установим. В свойстве Caption уберем надпись, а в свойстве BorderStyle установим в bsToolWindow, установим нужный размер нашей формы в нужный, а затем на событии OnShow необходимо нам написать первоначальное установление появление окна, по идее все всплывающие окна появляются рядом с треем. Но нам необходимо, чтобы наше окно первоначально появилось ниже панели задач, а из-за панели задач затем уже будет появляться наше окно — всплывать, итак на событии OnShow написан следующий код
procedure TForm1.FormShow(Sender: TObject);
begin
Left:=Screen.Width-Width;
Top:=Screen.Height-Height+90;
end;
Таким образом у нас окно появиться ниже панели задач и как раз в правой стороне экрана и таким образом будет появляться вверх. Теперь нам необходимо сделать якобы движение окна, то есть эффект его появления. Для этого в свойстве TTimer - Interval установим в 1 и на событие OnTimer напишем следующий код
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Top:=Top-1;
if Top=Screen.Height-Height-30 then
Timer1.Enabled:=False;
end;
Тут если окно полностью появилось, то мы останавливаем наш таймер. Можно добиться и другого эффекта, просто уберем TTimer и на OnShow формы напишем следующий код
procedure TForm1.FormShow(Sender: TObject);
begin
Left:=Screen.Width-Width;
Top:=Screen.Height-Height-30;
AnimateWindow(Handle,500,AW_CENTER or AW_SLIDE);
end;
Достаточно неплохо, так что можно делать и свои всплывающие окна, только их приукрасить