Всплывающие окна

3 минуты на чтение

Здравствуйте, в данной статье хотел бы рассказать как я реализовал в одном своем проекте всплывающее окно. Да я знаю есть достаточно компонентов, которые позволяют сделать всплывающее окно, а также навести красоту в этом, но мне не надо было наводить красоту, обычное окно, которое будет информировать пользователей о чем-то. Может это метод, который делал я не совсем правильный, но я как-то так реализовал это. Использовал я в первую очередь 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;

Достаточно неплохо, так что можно делать и свои всплывающие окна, только их приукрасить

Facebook Vk Ok LinkedIn Telegram

Похожие записи:

Всем здравствуйте. Данная статья, будет рассказывать о том, как можно в Skype разрешить доступ программам к Skype и постоянно не отвечать на всплывающие окна Skype. Скажу сразу, что вся ответственность за добавления в список безопасных программ лежит на Вас, п...
Ну что, любитель MapWindow GIS, пора возвращаться к нашей теме. Давненько мы ничего интересного не рассматривали. Долго искал тему, чтобы такое новое и интересное написать про MapWindow GIS, в итоге нашел и решился. Помните нашу статью о том, когда мы выделяли...
Здравствуйте, в этой статье хотел бы поговорить немного о «липких» окнах. Да эффект в приложениях довольно распространенный и чаще всего встречается в каких-нибудь проигрывателях, например, Winamp. Так вот, когда я делал свой проигрыватель на основе bass.dll, ...