Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - TForm Durchsichtig aber Inhalt nicht


forcedbydelphi - Mo 10.01.11 16:36
Titel: TForm Durchsichtig aber Inhalt nicht
Hi Deplhianer,
ich hab es hingekriegt, dass die Form unsichtbar ist
Alphablended
Alphablendedvalue

mein Problem:
der inhalt also buttons und so sollten aber noch sichtbar bleiben, geht sowas? oder muss ich es ganz lassen^^

Danke


Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mo 10.01.2011 um 17:12
Moderiert von user profile iconNarses: Titel geändert, "DRINGEND" entfernt.


Tony-S - Mo 10.01.11 17:40

Ich versteh das Problem nicht ganz, die Form soll durchsichtig sein und die Buttons nicht, ja?

Dann setzt du TransparentColor auf irgendeine Farbe und änderst die Farbe der Form auf die gleiche Farbe wie bei TransparentColor.

und das sieht dann so aus:

screen

Moderiert von user profile iconNarses: Bild als Anhang hochgeladen.


Delete - Mo 10.01.11 17:47

Und was ist daran jetzt dringend?


forcedbydelphi - Mo 10.01.11 17:54

ich musste es abschicken und ist eh zu spät naja, anstatt so zu fragen konnte man ja etwas Hilfreiches Posten


bummi - Mo 10.01.11 17:59

Der Titel ist unglücklich gewählt...
Mit Alpha hast Du keine Chance, gegf. kannst Du das was Du erreichen möchtest mit TransparentColor und TransparentColorValue erreichen. Wenn Du Alpha brauchst kannst Du nur mit einem 2. Form und zuvor genannten Eigenschaften und anpassen im Move/Size/Focus etc. etwas derartiges "hinfaken".


jaenicke - Mo 10.01.11 18:01

user profile iconforcedbydelphi hat folgendes geschrieben Zum zitierten Posting springen:
ich musste es abschicken und ist eh zu spät
Früher fragen, wenn du nicht weiterkommst...?

Das Stichwort ist jedenfalls SetWindowRgn [http://msdn.microsoft.com/en-us/library/dd145102].

// EDIT:
Stimmt, TransparentColor kann auch reichen, sofern man eine nimmt, die nirgends auf dem sichtbaren Bereich vorkommt.


Gerd Kayser - Mo 10.01.11 19:25

user profile iconforcedbydelphi hat folgendes geschrieben Zum zitierten Posting springen:
der inhalt also buttons und so sollten aber noch sichtbar bleiben, geht sowas?
So würde ich es machen (Beispiel):

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:
procedure TMainform.BtnCloseClick(Sender: TObject);
begin
  Close;
end;

procedure TMainform.FormCreate(Sender: TObject);
var
  Punkt1     : TPoint;
  Punkt2     : TPoint;
  Region     : HRgn;
  RegionTemp : HRgn;
begin
  ReportMemoryLeaksOnShutdown;

  // Damit man das auf dem Desktop wiederfindet.
  Edit1.Color := clLime;
  Memo1.Color := clLime;

  Region := CreateRectRgn(0, 0, 0, 0);

  // Close-Button
  Punkt1.X := BtnClose.Left;
  Punkt1.Y := BtnClose.Top;
  Punkt2.X := BtnClose.Left + BtnClose.Width;
  Punkt2.Y := BtnClose.Top + BtnClose.Height;
  Punkt1 := ClientToScreen(Punkt1);
  Punkt2 := ClientToScreen(Punkt2);
  RegionTemp := CreateRectRgn(Punkt1.X, Punkt1.Y, Punkt2.X, Punkt2.Y);
  CombineRgn(Region, Region, RegionTemp, Rgn_OR);

  // Edit1
  Punkt1.X := Edit1.Left;
  Punkt1.Y := Edit1.Top;
  Punkt2.X := Edit1.Left + Edit1.Width;
  Punkt2.Y := Edit1.Top + Edit1.Height;
  Punkt1 := ClientToScreen(Punkt1);
  Punkt2 := ClientToScreen(Punkt2);
  RegionTemp := CreateRectRgn(Punkt1.X, Punkt1.Y, Punkt2.X, Punkt2.Y);
  CombineRgn(Region, Region, RegionTemp, Rgn_OR);

  // Memo1
  Punkt1.X := Memo1.Left;
  Punkt1.Y := Memo1.Top;
  Punkt2.X := Memo1.Left + Memo1.Width;
  Punkt2.Y := Memo1.Top + Memo1.Height;
  Punkt1 := ClientToScreen(Punkt1);
  Punkt2 := ClientToScreen(Punkt2);
  RegionTemp := CreateRectRgn(Punkt1.X, Punkt1.Y, Punkt2.X, Punkt2.Y);
  CombineRgn(Region, Region, RegionTemp, Rgn_OR);

  SetWindowRgn(Mainform.Handle, Region, true);
end;