Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2007, 18:01   #1
QwErEn
Новичок
Джуниор
 
Регистрация: 30.04.2007
Сообщений: 0
По умолчанию Как изменить стандартную форму на форму любой сложности

Дело в том, что я хочю предать моей программе изящиный вид, а не вид обычной прямоугольной формы. Пожалуста помогитерешить мне решить эту проблему.
QwErEn вне форума Ответить с цитированием
Старый 04.06.2007, 18:50   #2
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Помогаюрешить тебе решить проблему хе-хе, классная формулировка.

Способ 1й, простой:
Если надо форма с дырками или любой формы (тафтология блин):
кидай на форму TImage; align=alClient, загружай в нее рисунок с изображением красивого окна, убирай заголовок, прозрачные области на рисунке делаешь цветом к примеру #FF00FF (гадский розовый clFuchsia), в свойствах формы Transparent=true, Transparentcolor=clFuchsia, F9 -> получишь форму в виде своего рисунка с дырками вместо розового цвета.

Способ 2й, ещё проще:
Качай кучу красивых и тяжелых компонентов http://www.alphaskins.com и наряжай свою "ёлку" как угодно. И без того крупные дельфийские программы заметно потолстеют
пыщь
JTG вне форума Ответить с цитированием
Старый 05.06.2007, 08:12   #3
Трофимов Александр
Форумчанин
 
Аватар для Трофимов Александр
 
Регистрация: 03.11.2006
Сообщений: 321
По умолчанию

Это проще сделать при помощи так называемых регионов:
procedure TForm1.FormActivate(Sender: TObject);
var
Region: HRGN;
begin
Region := CreateEllipticRgn(0, 0, 300, 300);
SetWindowRgn(Handle, Region, True);
end;
в результате получаем круг. используются также полигоны и прочее...
Трофимов Александр вне форума Ответить с цитированием
Старый 05.06.2007, 10:55   #4
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Конечно проще, и быстрее и правильнее и всё такое, но с полигонами сильно не разгуляешься, сложную форму будет трудно создать
пыщь
JTG вне форума Ответить с цитированием
Старый 05.06.2007, 20:03   #5
Viteef
stopfake.org
Участник клуба
 
Регистрация: 03.05.2007
Сообщений: 1,927
Стрелка

Если надо придать окну только форму, как на рисунке window, то рисуй как на рисунке beautwindow. И в свойствах формы устанавливай form1.TransparentColor:=цвет рамки (показываться не будет) и Form1.transparent... =true(точно не помню, дельфы под рукой нету)
Изображения
Тип файла: jpg window.JPG (11.0 Кб, 175 просмотров)
Тип файла: jpg beautwindows.JPG (11.4 Кб, 173 просмотров)
Viteef вне форума Ответить с цитированием
Старый 06.06.2007, 16:19   #6
ZhekON
Форумчанин
 
Аватар для ZhekON
 
Регистрация: 24.01.2007
Сообщений: 323
По умолчанию

такая тема тут ужэ не впервые поднималась...
Всё проще чем вы думаете, нужно только правильно подойти к тому или иному вопросу?
ZhekON вне форума Ответить с цитированием
Старый 08.06.2007, 00:57   #7
VDLab
Embedder
Пользователь
 
Аватар для VDLab
 
Регистрация: 01.11.2006
Сообщений: 68
Смех

Используй компоненты BusinessSkinForm
http://www.realcoding.net/downloads/view/2767
[SHIFT] вправо, [SHIFT] влево считается [ESCAPE]ом и карается REBOOTом!
VDLab вне форума Ответить с цитированием
Старый 08.06.2007, 09:55   #8
OrdJONY
.NET-чик
Форумчанин
 
Аватар для OrdJONY
 
Регистрация: 24.03.2007
Сообщений: 569
По умолчанию

или вот еще эти можеш тоже использовать http://www.saarixx.info/sxskincomponents/ru/
Интересные компоненты со скинами
"Разработка под веб - как работа с пылесосом: нихрена не прикольно, но засасывает"
Мо маленький городок

Последний раз редактировалось OrdJONY; 08.06.2007 в 11:27.
OrdJONY вне форума Ответить с цитированием
Старый 08.06.2007, 10:24   #9
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

дополнение к первому способу JTG:

/////
function CreateRgnFromBitmap(rgnBitmap:TBitm ap):HRGN;
var
TransColor:TColor;
i,j:integer;
I_Width,i_height:integer;
i_left,i_right:integer;
rectrgn:hrgn;
begin
result:=0;
i_width:=rgnBitmap.Width;
i_height:=rgnBitmap.Height;
TransColor:=rgnBitmap.Canvas.Pixels[0,0];
For i:=0 to i_height-1 do
begin
i_left:=-1;
for j:= 0 to i_width-1 do
begin
if i_left<0 then
begin
if rgnBitMap.Canvas.Pixels[i,j]<>transcolor then
i_left:=j;
end
else
if rgnBitMap.Canvas.Pixels[i,j]=transcolor then
begin
i_right:=j;
rectrgn:=CreateRectrgn(i_left,i,i_r ight,i+1);
if result=0 then
Result:=rectrgn
else
begin
Combinergn(result,result,rectrgn,RG N_OR);
DeleteObject(rectRgn);
end;
i_left:=-1;
end;
end;
if i_left>=0 then
begin
rectrgn:=CreateRectRgn(i_left,i,i_w idth,i+1);
if Result=0 then
Result:=rectRgn
else
begin
CombineRgn(Result,Result,rectrgn,RG N_OR);
DeleteObject(rectRgn);
end;
end;
end;
end;
////
procedure TForm1.FormCreate(Sender: TObject);
var
WindowRgn:HRGN;
begin
BorderStyle:=bsNone;
ClientWidth:=Image1.Picture.Bitmap. Width;
ClientHeight:=Image1.Picture.Bitmap .Height;
windowrgn:=CreateRgnFromBitMap(imag e1.Picture.Bitmap);
SetWindowRgn(Handle,windowrgn,True) ;
...
end;
//////////////
В Image1 загружен растр, с "одноцветным фоном (по левому верхнему пикселю)" который определяется функцией CreateRgnFromBitmap и "просвечивается" область на форме.

P.S.: по ссылкам не ходил, так что сорри если повторяю.
Alex21 вне форума Ответить с цитированием
Старый 08.06.2007, 11:44   #10
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

В дополнение способа Алекса
© Фленов Михаил (smirnandr@mail.ru)
пыщь
JTG вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавить фОРМУ... prog38 Помощь студентам 4 02.07.2008 09:07
Как сделать форму? HAMMAN Помощь студентам 1 29.01.2008 22:11
Про форму Marsik Помощь студентам 2 03.11.2007 14:53