Создание красивых форм
Народ, подскажите как можно создать красивые формы ? Какие компоненты для этого существуют ?
On 2001-10-21 02:07, Malder wrote:
Народ, подскажите как можно создать красивые формы ? Какие компоненты для этого существуют ?
</BLOCKQUOTE></FONT></TD></TR><TR><TD><HR></TD></TR></TABLE>
Что ты понимаешь под словом красивые?
On 2001-10-21 14:43, Mr. API wrote:
<TABLE BORDER=0 ALIGN=CENTER WIDTH=85%><TR><TD>Quote:<HR></TD></TR><TR><TD><FONT SIZE=-1><BLOCKQUOTE>
On 2001-10-21 02:07, Malder wrote:
Народ, подскажите как можно создать красивые формы ? Какие компоненты для этого существуют ?
</BLOCKQUOTE></FONT></TD></TR><TR><TD><HR></TD></TR></TABLE>
Что ты понимаешь под словом красивые?
</BLOCKQUOTE></FONT></TD></TR><TR><TD><HR></TD></TR></TABLE>
Ну чтоб форма была непрямоугльной. Чтобы можно было создавать свой заголовок (не просто там закрыть - крестик, свернуть..... нолик )) , а можно было самому рисовать. Как пример, можно рассотреть WinAMP. Как он сделан ? Хоть прада прямоугольный. Но все же ?
Ну чтоб форма была непрямоугльной. Чтобы можно было создавать свой заголовок (не просто там закрыть - крестик, свернуть..... нолик )) , а можно было самому рисовать. Как пример, можно рассотреть WinAMP. Как он сделан ? Хоть прада прямоугольный. Но все же ?
</BLOCKQUOTE></FONT></TD></TR><TR><TD><HR></TD></TR></TABLE>
Как сделать форму не прямоугольной, другого вида, я тебе могу сказать. Причем без компонентов. Я видел такие, но не всегда получается, то, что хочешь, а тут ты сам себе мастер.
На счет, лругого загаловка.
Сделай форму, без заголовка, свой сделай Image'ом.
Если найдешь компонент, напиши. Самому интересно.
<TABLE BORDER=0 ALIGN=CENTER WIDTH=85%><TR><TD>Code:<HR></TD></TR><TR><TD><FONT SIZE=-1><PRE>
procedure TForm1.FormCreate(Sender: TObject);
var
fRgn: hRGN;
begin
fRgn := CreateRoundRectRgn (0, 0, Width - 1, Height - 1, 64, 64);
SetWindowRgn (Handle, fRgn, TRUE);
DeleteObject (fRgn);
end;
</PRE></FONT></TD></TR><TR><TD><HR></TD></TR></TABLE>
Этот пример делает форму с закруглённым краями. Если требуется, чтобы форма была с изменяемыми размерами, то надо ловить OnResize, в нём создавать заново fRgn с учётом новых размеров формы и снова вызывать SetWindowRgn. Для создания кривых, дырявых и прочих форм используются функции
CreateEllipticRgn // эллипс
CreatePolygonRgn // многоугольник
CreatePolyPolygonRgn // серия пересекающихся многоугольников
CreateRectRgn // прямоугольник
CreateRoundRectRgn // закруглённый многоугольник
в сочетании с функцией CombineRgn, позволяющей применять к двум регионам булевские операции (AND, OR, XOR etc.)
Что касается своих системных кнопок, бордюров и пр. Здесь надо ловить событие WM_NCPAINT, возникающее в момент отрисовки "не-клиентской" области формы. В этом событии средствами Win Api можно нарисовать любые системные кнопки, заголовок, frame и т.д.
Причем, первый и последний элемент в нем должны совпадать.
>в сочетании с функцией CombineRgn, ?>позволяющей применять к двум регионам ?>булевские операции (AND, OR, XOR etc.).
Я бы не сказал, что они булевые. Названия только. Но я не о том. Возможностей у CombineRgn.
Вот небольшая вырезка:
RGN_AND The intersecting parts of two original regions define a new region.
RGN_COPY A copy of the first (of the two original regions) defines a new region.
RGN_DIFF The part of the first region that does not intersect the second defines a new region.
RGN_OR The two original regions define a new region.
RGN_XOR Those parts of the two original regions that do not overlap define a new region.