Witam.
Szukałem postów na ten temat tu na forum i choć było ich wiele to chyba w żadnym nie doszukałem się odpowiedzi. :/
Moim pytanie zatem jest:
czy istnieje odpowiednik funkcji SetWindowRng dla komponentów takich jak: TImage, TBitmap, TBitBtn, TButton??
Jeśłi nie, to jak zaprogramować metody, któregoś z nich tak, aby można było wykorzystać stworzony wcześniej region lub maskę kolorów do zmienienia rozmiarów komponentu?
Drugie pytanie:
znalazłem procedurkę, która tworzy kształt formy tylko tam, gdzie ma ona jakiś komponent. Problem pojawia się gdy komponenty nie są prostokątne ;-( Czy ktoś miałby pomysł jak zmodyfikować tą procedurkę?
Listning poniżej:
function ControlsToRegion(Forma:TForm) :HRGN;
var Ctrl :TControl; index, x0,y0, xa,ya, margin :integer;
rgn :HRGN;
begin
Result :=CreateRectRgn(0,0,0,0);
margin :=(Forma.Width -Forma.ClientWidth) div 2;
x0 :=Margin;
y0 :=Forma.Height -Forma.ClientHeight -Margin;
for index :=0 to Forma.ControlCount-1 do begin
Ctrl :=Forma.Controls[index];
if (Ctrl is TWinControl)or (Ctrl is TGraphicControl) then
if ctrl.Visible then begin
xa := x0 + Ctrl.Left;
ya := y0 + Ctrl.Top;
rgn :=CreateRectRgn (xa,ya, xa+Ctrl.Width,ya+Ctrl.Height );
CombineRgn (Result, Result,rgn, RGN_OR );
DeleteObject (rgn);
end;
end;
end;