webForumDet fria alternativet

Transparent

2 svar · 256 visningar · startad av msossna

msossnaMedlem sedan feb. 2002476 inlägg
#1

kan man få delar av en TForm transparent? Dvs så man ser ex skrivbordet, använder Delphi 7 personal ed.

SBMedlem sedan maj 2000194 inlägg
#2

Så här kan du göra:

private 
    { Private declarations } 
    FullRgn, ClientRgn, CtlRgn: THandle; 
    procedure MakeTransparent; 
    procedure UndoTransparent; 
  end; 

{...} 

implementation 

{...} 

procedure TForm1.MakeTransparent; 
var 
  AControl: TControl; 
  A, Margin, X, Y, CtlX, CtlY: Integer; 
begin 
  Margin    := (Width - ClientWidth) div 2; 
  FullRgn   := CreateRectRgn(0, 0, Width, Height); 
  X         := Margin; 
  Y         := Height - ClientHeight - Margin; 
  ClientRgn := CreateRectRgn(X, Y, X + ClientWidth, Y + ClientHeight); 
  CombineRgn(FullRgn, FullRgn, ClientRgn, RGN_DIFF); 
 for A := 0 to ControlCount - 1 do  
  begin 
    AControl := Controls[A]; 
    if (AControl is TWinControl) or (AControl is TGraphicControl) then with AControl do  
      begin 
        if Visible then  
        begin 
          CtlX   := X + Left; 
          CtlY   := Y + Top; 
          CtlRgn := CreateRectRgn(CtlX, CtlY, CtlX + Width, CtlY + Height); 
          CombineRgn(FullRgn, FullRgn, CtlRgn, RGN_OR); 
        end; 
      end; 
  end; 
  SetWindowRgn(Handle, FullRgn, True); 
end; 

procedure TForm1.UndoTransparent; 
begin 
  FullRgn := CreateRectRgn(0, 0, Width, Height); 
  CombineRgn(FullRgn, FullRgn, FullRgn, RGN_COPY); 
  SetWindowRgn(Handle, FullRgn, True); 
end; 

procedure TForm1.Button1Click(Sender: TObject); 
begin 
  MakeTransparent 
end; 

procedure TForm1.Button1Click(Sender: TObject); 
begin 
  UndoTransparent 
end;
HardrockerMedlem sedan nov. 2003310 inlägg
#3

du kan även sätta Alphablend på forumläret.
Sätt alpahblend till true och ändra på AlphaBlendValue för att ange hur genomskinligt formuläret ska vara.

Skillnaden mellan mitt exempel och SBs exempel är att med SBs kod så blir formuläret inte bara genomskinligt utan forumläret (exkl. komponenterna på det) "försvinner" så man kan klicka "genom" formuläret för att komma åt grejorna bakom det.

Genom att ändra alphablend så blir allting genomskinligt inkl. komponterna. Formuläret finns fortfarande kvar så du kan inte klicka "genom" formuläret.
/Ante S

129 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)