---
title: "Transparent"
type: "forum-thread"
url: "https://www.webforum.nu/amne/programmering/115221-transparent"
topic: "Programmering"
topic_url: "https://www.webforum.nu/amne/programmering"
author: "msossna"
published: "2004-11-06T00:51:04.000Z"
updated: "2004-11-06T17:24:00.000Z"
replies: 2
views: 279
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/programmering/115221-transparent"
---

# Transparent

## #1 — msossna, 2004-11-06T00:51Z

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

Permalänk: https://www.webforum.nu/p/115221

## #2 — SB, 2004-11-06T09:13Z

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

Permalänk: https://www.webforum.nu/p/1476699

## #3 — Hardrocker, 2004-11-06T17:24Z

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

Permalänk: https://www.webforum.nu/p/1476843

---

Tråden på webben: https://www.webforum.nu/amne/programmering/115221-transparent
