Авторизация

Логин: Пароль:
Регистрация Забыли свой пароль?

Форма произвольной формы ;)

Страницы: 1
Форма произвольной формы ;), Программа с окном оригинальной формы
Однажды столкнулся с маленькой проблемкой: нужно было создать форму, которая имеет нестандартную для Delphi геометрическую форму. Описываю процесс создания на примере простенькой программы, окно которой имеет форму подсказки, может кому пригодится(исходники прикреплены).

Рисунок

Итак, для создания окна такой формы в событии OnCreate основной формы нужно прописать следующий код:
Код
procedure TForm1.FormCreate(Sender: TObject);
begin
  //Создаем массив точек с координатами нижнего треугольника
  StemPts[0] := Point(Form1.Width - 37,Form1.Height - 16);    //левая верхняя вершина
  StemPts[1] := Point(Form1.Width - 25,Form1.Height - 16);    //правая верхняя вершина
  StemPts[2] := Point(Form1.Width - 25,Form1.Height - 2);     //нижняя вершина

  //Создаем прямоугольник с закругленными краями
  RoundRectForm := CreateRoundRectRgn(0,0,Form1.Width - 15,Form1.Height - 15,20,20);

  //Создаем треугольник, передаем массив точек с координатами
  TriangleForm := CreatePolygonRgn(StemPts, 3, WINDING);

  //Создаем дополнительный регион, для обьединения треугольника с прямоугольником
  Region := CreateRectRgn(0, 0, 1, 1);

  //Обьединяем регионы
  CombineRgn(Region,  RoundRectForm, TriangleForm,  RGN_OR);

  //Устанасливаем наш регион вместо стандартной формы
  SetWindowRgn(Handle,Region,true);
end;

Раздел описания переменных имеет следующий вид:
Код
var
  Form1: TForm1;
  RoundRectForm, TriangleForm, Region : HRGN;
  StemPts: array[0..2] of TPoint;

Вот какая форма в результате получилась у меня, окошко появляется при наведении мыши:

Рисунок
Form1.zip (254.58 КБ) [ Скачать ]
Изменено: Сергей Коржевский - 29.06.2010 21:22:52
Спасибо!
Я где-то в одной из книг встречал пример круглой формы... Насколько я помню там просто из обычной формы выделялся круглый "кусок" smile:).
Это тоже так реализовано?
Изменено: Valera - 02.07.2010 20:18:01
Наверняка. Автор, спасибо за статью. Наглядно и просто описано. Теперь у меня 2 способа создания нестандартной формы =)
Цитата
Теперь у меня 2 способа создания нестандартной формы

А какой же второй?
Второй - это рисовать в том же фотошопе форму и вставлять рисунок в свой проект, выделяя прозрачный цвет
Страницы: 1
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)