|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
26.04.2007, 07:55 | #1 |
/\/\Et@/\|/|$T
Пользователь
Регистрация: 26.03.2007
Сообщений: 89
|
как сделать нестандартную форму
Здраствуйте!!!
у меня такой вопрос: как зделать нестандартную форму например треугольную или чтоб внутри формы была дыра ?
there are no programmers there is no life
|
26.04.2007, 09:04 | #2 |
Форумчанин
Регистрация: 18.04.2007
Сообщений: 135
|
У формы меняешь значения:
BorderStyle в bsNone Color в clFuchsia TransparentColor в True TransparentColorValue в clFuchsia Добавляешь Image1 с рисунком твоей будущей формы. Всё!!! |
26.04.2007, 09:20 | #3 |
/\/\Et@/\|/|$T
Пользователь
Регистрация: 26.03.2007
Сообщений: 89
|
а как с параметрами бордер стайл -bsnone можно мышай перемещать форму
there are no programmers there is no life
|
26.04.2007, 09:32 | #4 |
Форумчанин
Регистрация: 30.03.2007
Сообщений: 124
|
Так будет правильнее, SF_RgnWindow устанавливает форму
например SF_RgnWindow(sender,SF_RGN_OnlyButt on(sender)); остануться только контрол элементы розбирайся: Код:
Тут без 100г не розберешся.....
Спасибо не нужно, а на весы слева кликнуть не помешает!!! |
26.04.2007, 09:50 | #5 |
Форумчанин
Регистрация: 18.04.2007
Сообщений: 135
|
to mrandrey:
Интересно чем же правильней. Результат один и тот же, так зачем писать больше)) to steck: Форму перетаскивать так: Ставишь для твоего рисунка, который у тебя повторяет очертания формы обработчик MouseDown такого вида: procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin ReleaseCapture; Perform(WM_SysCommand,$F012,0); end; И всё...двигай сколько душе угодно. Обработчик можно поставить не только для рисунка, но например для панельки на форме и таскать форму за панельку) |
26.04.2007, 10:45 | #6 |
Форумчанин
Регистрация: 30.03.2007
Сообщений: 124
|
а правильней тем, что попробуй свой вариант, ну скажем на Win 98 и увидишь что выйдет!! Да и заголовок иногда нужен.
А если форму менять нужно раз 15, что 15 картинок за собой тянуть?
Тут без 100г не розберешся.....
Спасибо не нужно, а на весы слева кликнуть не помешает!!! |
26.04.2007, 11:31 | #7 |
Форумчанин
Регистрация: 16.04.2007
Сообщений: 298
|
procedure TForm1.FormCreate(Sender: TObject);
var hRgn1, hRgn2: Cardinal; begin ClientWidth := ClientHeight; hRgn1 := CreateEllipticRgn(0, 0, ClientWidth, ClientHeight); //Первый эллипс, все параметры - координаты начала и конца отрисовки hRgn2 := CreateEllipticRgn(ClientWidth div 2 - 100, ClientHeight div 2 - 100, ClientWidth div 2 + 100, ClientHeight div 2 + 100); CombineRgn(hRgn1, hRgn2, hRgn1, RGN_XOR); //объединяем два региона, вычитая второй из первого и помещая результат в первый SetWindowRgn(Handle, hRgn1, true); // выводим результат end; В результате получается грамотный бублик
Не надо ничего усложнять. Все достаточно тривиально.
Последний раз редактировалось Shuraken; 26.04.2007 в 11:40. |
26.04.2007, 12:24 | #8 |
Форумчанин
Регистрация: 18.04.2007
Сообщений: 135
|
to mrandrey:
Ну 98, слава богу, сейчас за редким исключением только в страшном сне увидишь, а вот с твоим вариантом попробуй сделать действительно сложную форму. С моим вариантом это дело пяти секунд. |
26.04.2007, 13:16 | #9 |
Delphi/C++/C#
Участник клуба
Регистрация: 29.10.2006
Сообщений: 1,972
|
Есть такая вещь: FormRGN - набор компонентов, облегчающих работу с регионом самой формы и её заголовка. (В архиве набор компонентов, инструкция, хелп, примеры)
|
26.04.2007, 18:24 | #10 |
/\/\Et@/\|/|$T
Пользователь
Регистрация: 26.03.2007
Сообщений: 89
|
а чё удобная вёщь
there are no programmers there is no life
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как сделать форму невидимой при запуске | dns-s | Общие вопросы Delphi | 3 | 15.08.2009 08:18 |
Помогите советом! Как сделать форму сворачиваемой? | Bezdar | Microsoft Office Excel | 3 | 18.08.2008 13:52 |
Как сделать форму? | HAMMAN | Помощь студентам | 1 | 29.01.2008 22:11 |
Как сделать форму всегда активной? | londoner | Общие вопросы Delphi | 3 | 04.03.2007 14:44 |
Как сделать главную форму невидимой | londoner | Общие вопросы Delphi | 10 | 06.02.2007 17:11 |