Autor Beitrag
NetZwerg
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 448

Slackware 10.1
Kylix 3, D5 Standard
BeitragVerfasst: Mi 31.03.04 11:33 
Hallo,

ich möchte meine Form "schön designen" sag ich mal. dazu würde ich aber kein viereck benutzen, sondern meinetwegen einen Kreis... Dazu müsste ich den Hintergrund der Form unsichtbar machen. Wenn ich allerdings

ausblenden Quelltext
1:
Form1.Visible := False;					


benutze, werden auch alle objekte in der Form unsichtbar. Wie kann ich es hinkriegen, dass nur der hintergrund der Form unsichtbar wird?

Danke, Dave :D

_________________
"Manche Leute drücken nur deshalb ein Auge zu, damit sie besser zielen können."
Billy Wilder, amer. Filmregisseur
ixtreme
Gast
Erhaltene Danke: 1



BeitragVerfasst: Mi 31.03.04 11:35 
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
 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;

// Test it:

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

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


Quelle: SDC
NetZwerg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 448

Slackware 10.1
Kylix 3, D5 Standard
BeitragVerfasst: Mi 31.03.04 16:24 
joa, find ich gut... :D thx!

_________________
"Manche Leute drücken nur deshalb ein Auge zu, damit sie besser zielen können."
Billy Wilder, amer. Filmregisseur