Ответ на этоот вопрос можно найти в FAQ
Их лежит несколько штук на http://delphi.da.ru
По-моему интересный примерчик в FAQ
"Использование Windows API и VCL" от Akzhan'а
Anton S.
an...@lanck.ru
"I hope ..."
Вот еще на закуску (FAQ от Nick Slepchenko)
> Как сделать произвольную (непрямоугольную) форму?
Win32 (Windows'95 or Windows NT 4.0 or above).
Достаточно создать регион нужной формы и вызвать SetWindowRgn -
HRGN rgn := CreateEllipticRgn( 10,10,100,100 );
SetWindowRgn( hMyWnd,rgn );     // Вот и будет круглое окно
При этом регион этот теперь используется Windows и будет уничтожен при
закрытии окна.
  Вот, например:
  ........................................................
  procedure TForm1.FormCreate(Sender: TObject);
  const W=36*pi/180;
  var   R,R1,R2: HRgn; X,Y,i:integer;
     function S(a:integer;R:integer):integer;
     begin
       Result:=round(R*sin(W*a));
     end;
     function C(a:integer;R:integer):integer;
     begin
       Result:=round(R*cos(W*a));
     end;
     function GetStarReg(X,Y,R:integer):HRGN;
     var  P : array [0..4] of TPoint;
     begin
        P[0] := Point(X, Y-R);
        P[1] := Point(X-S(4,R), Y-C(4,R));
        P[2] := Point(X-S(8,R), Y-C(8,R));
        P[3] := Point(X-S(2,R), Y-C(2,R));
        P[4] := Point(X-S(6,R), Y-C(6,R));
        Result := CreatePolygonRgn(P, 5, WINDING);
     end;
  begin
     X:=Width div 2;
     Y:=Height div 2;
     R:=GetStarReg(X,Y,100);
     i:=1;
     repeat
       R1:=GetStarReg(X-S(i,120),Y-C(i,110),40);
       CombineRgn(R,R,R1,RGN_OR);
       inc(i,2);
     until i>9;
     R1:=GetStarReg(X,Y,30);
     CombineRgn(R,R,R1,RGN_DIFF);
     R1:=CreateEllipticRgn(3,3,Width-6,Height-6);
     R2:=CreateEllipticRgn(20,10,Width-20,Height-10);
     CombineRgn(R1,R1,R2,RGN_DIFF);
     CombineRgn(R,R,R1,RGN_OR);
     SetWindowRgn(Handle, R, True);
  end;
In <7hrj5n$sdp$1...@px.f1.ru> Vladimir Shishkin (sh...@valley.ru) wrote:
> Hi, All!
> Подскажите каким образом можно создавать "непрямоугольные" формы. Например
> как в Kai Power Tools (типа циферблата) т.е. на основе некоторого контура?
> Киньте примерчик, pls или ссылочку где можно посмотреть.
> Bye!
> VSh
несколько дней назад народ писал :
In <7gcijo$qvc$1...@merryer.comcent.nikolaev.ua> Родион Тарабанов (u...@comcent.mk.ua) wrote:
> Sergey Teliatnik пишет в сообщении <7gbf5a$5fh$2...@conjurer.tyumen.ru> ...
>>Можно ли создать дочернюю панель не в виде прямоугольника, а в виде
> например
>>треугольника.
>>
> Да можно.
> В книге С. Орлика "Секреты Delphi" приведен небольшой пример относительно
> создания окна с дыркой.
> ...
> var
>  FormRgn: HRGN;
> EllRgn:HRGN;
> ...
> procedure Form1.Create(sender: TObject);
> begin
>   {область совпадающая с окном}
>   FormRgn:= CreateRectRgn(0,0, Width, Height);
>   {область дырки}
>   EllRgn := CreateEllipticRgn(....);
>  {Вырезаем дырку в окне}
>  CombaineRgn(FormRgn, FormRgn, EllRgn, RGN_DIFF);
>  {Присваеваем область окну}
> SetWindowRgn(Handle, FormRgn, True);
> end;
> procedure TForm1.FormDestroy(sender: TObject);
> begin
> deleteObject(FormRgn);
> deleteObject(EllRgn);
> end;
> конец цитаты.
> Очевидно, что для создания треугольных окон и иже с ними (Windowed Controls)
> необходимо использовать такие функции API как:
> CombineRgn
> CreateEllipticRgn
> CreateEllipticRgnIndirect
> CreatePolygonRgn
> CreatePolyPolygonRgn
> CreateRectRgn
> CreateRectRgnIndirect
> CreateRoundRectRgn
> EqualRgn
> ExtCreateRegion
> FillRgn
> FrameRgn
> GetPolyFillMode
> GetRegionData
> GetRgnBox
> InvertRgn
> OffsetRgn
> PaintRgn
> PtInRegion
> RectInRegion
> SetPolyFillMode
> Подробнее см хелп.
> BR Rodion
С Уважением.
               Лукин Виктор.
ftp://sunsite.icm.edu.pl:/vol/wojsyl3/delphi/ftp/d20free/formrgn.zip