Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TStaticText.Transparent funktioniert nicht? (https://www.delphipraxis.net/73260-tstatictext-transparent-funktioniert-nicht.html)

stz 14. Jul 2006 16:09


TStaticText.Transparent funktioniert nicht?
 
Hallo,
ich versuche ein TStaticText auf meiner Form zu platzieren, bei dem der Hintergrund transparent ist. Die Hilfe hat mir dafür die Eigenschaft Transparent angeboten:
Zitat:

Beschreibung
Setzen Sie Transparent auf true, wenn Objekte, die hinter dem TCustomStaticText-Objekt liegen, durch dessen Hintergrund durchscheinen sollen. False bewirkt, dass der Hintergrund der Grafik nicht durchsichtig ist.
, aber leider funktioniert es nicht. Die Objekte im Hintergrund scheinen nicht durch.

Woran kann das liegen?

Gruß
Malte

mkinzler 14. Jul 2006 16:13

Re: TStaticText.Transparent funktioniert nicht?
 
Hast du die Hintergrundfarbe mit .TransparentColor ausmaskiert?

stz 14. Jul 2006 16:18

Re: TStaticText.Transparent funktioniert nicht?
 
Zitat:

Zitat von mkinzler
Hast du die Hintergrundfarbe mit .TransparentColor ausmaskiert?

:wiejetzt: TStaticText hat keine Eigenschaft TransparentColor...

Gruß
Malte

mkinzler 14. Jul 2006 16:29

Re: TStaticText.Transparent funktioniert nicht?
 
:oops: Stimmt.

mkinzler 14. Jul 2006 16:54

Re: TStaticText.Transparent funktioniert nicht?
 
Habe mal verschiedene StaticText-Kompos aus verschiedenen Komponentensammlungen ausprobiert. Keine Einzige unterstützt Transparenz richtig.

mirage228 14. Jul 2006 16:57

Re: TStaticText.Transparent funktioniert nicht?
 
Hi,

Ich meine das liegt daran, dass TStaticText ja ein Handle hat (also Windows-Komponente) und Komponenten mit Handle immer über Komponenten ohne Handle gezeichnet werden (wie TLabel, TGraphicControl und Konsorten)...
Das könnte damit evtl. zusammenhängen.

mfG
mirage228

stz 14. Jul 2006 17:01

Re: TStaticText.Transparent funktioniert nicht?
 
Zitat:

Zitat von mkinzler
Habe mal verschiedene StaticText-Kompos aus verschiedenen Komponentensammlungen ausprobiert. Keine Einzige unterstützt Transparenz richtig.

Schade, Schade, aber im Prinzip auch logisch (hatte zwischenzeitlich eine Eingebung :wink: ), denn die StaticText sind ja Fenster (mit Handle und allem), und Windows unterstützt (zumindestens bis XP) keine echte Transparenz. Ich wundere mich nur, wofür die Eigenschaft wohl gut ist :gruebel:

Gruß
Malte

PS: seh gerade: bin nicht alleine mit der Eingebung...

Flocke 14. Jul 2006 19:58

Re: TStaticText.Transparent funktioniert nicht?
 
Nur zur Info: es hat eigentlich nichts damit zu tun, dass das Fenster ein Handle hat (also ein richtiges API-Fenster ist) - andere "richtige" Fenster können auch transparent sein.

Die Implementierung in der VCL sieht nicht sonderlich gut aus. Es funktioniert offenbar nur, wenn ein Manifest eingebunden wird, also Theming für die Anwendung aktiviert wird.

papajong 12. Feb 2016 14:57

AW: TStaticText.Transparent funktioniert nicht?
 
Nur für den Fall, das sich nochmal jemand hierhin verirrt, transparent funktioniert nur,
wenn man das darunterliegende Control zum Parent des TStaticText macht.
PS. Funktioniert auch bei TLabel

unit Unit1;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.ComCtrls;

type

TForm1 = class(TForm)
Timer1: TTimer;
ProgressBar1: TProgressBar;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private-Deklarationen }
FStaticText1: TStaticText;
public
{ Public-Deklarationen }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin

FStaticText1 := TStaticText.Create(Self);

with FStaticText1 do
begin
Name := 'StaticText1';
Parent := ProgressBar1;
Left := ProgressBar1.Width div 2;
Top := 1;
Width := 59;
Height := 17;
ParentCustomHint := False;
BiDiMode := bdLeftToRight;
Caption := '';
Color := clBtnFace;
ParentBiDiMode := False;
ParentColor := False;
TabOrder := 1;
Transparent := true;
end;

end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
ProgressBar1.StepIt;
FStaticText1.Caption := IntToStr(ProgressBar1.Position);
end;

end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:23 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz