PDA

Ver la Versión Completa : Tus formularios de "forma" diferente


dec
30-06-2006, 23:11:21
Bueno este truco esta muy chido, pero siendo sinceros la mayoria de los casos solo la utilizaremos para hacer SplashScreens, en fin hay muchas formas de hacerlo pues solo menciono elipses, reectangulos y circulos, pero le dejo al lector de tarea crear formas irregulares, tal vez trapecios o hexagonos, etc. (a veces el API de Windows es tan rara!!!)


procedure TForm1.FormCreate(Sender: TObject);
var
hRgn: THandle;
begin
// Crear una zona eliptica
hRgn := CreateEllipticRgn(10, 10, Width - 20, Height - 20);
// poner la nueva region
SetWindowRgn(Handle, hRgn, False);
end;
</pre>
Código para crear un form con un hoyo
<pre>
procedure TForm1.FormCreate(Sender: TObject);
var
hRgn1, hRgn2: THandle;
begin
// creamos una zona rectangular del mismo tamaño del form
hRgn1 := CreateRectRgn(0, 0, Width, Height);
// creamos una zona circular de 100 x 100 en el centro del form
hRgn2 := CreateEllipticRgn((Width div 2) - 50, (Height div 2) - 50, (Width div 2) + 50, (Height div 2) + 50);
// combinamos las regiones quitando la region circular
// de la rectangular
CombineRgn(hRgn1, hRgn1, hRgn2, RGN_DIFF);
// poner la nueva region
SetWindowRgn(Handle, hRgn1, False);
// borrar la region 2, la region 1 se la apaña por windows y la borrawindows
DeleteObject(hRgn2);
end;