webForumDet fria alternativet

Transparent

Programmering

2 svar · 258 visningar · startad av msossna

Medlem sedan feb. 2002476 inlägg
Frågan#1

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

Medlem 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;
Medlem 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

262 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)