Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Problem mit Label Transparents (https://www.delphipraxis.net/177761-problem-mit-label-transparents.html)

Natcree 26. Nov 2013 10:47

Problem mit Label Transparents
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo ich habe ein label und habe dort Transparent im OI auf true gesetzt nun mehr wenn ich dem label einen String zuweise gibt es einen schwarzen Kasten und keine Schrift. Hier mal ein Bild.

Wo liegt der Fehler?

Der schöne Günther 26. Nov 2013 10:50

AW: Problem mit Label Transparents
 
Das hätte ich jetzt eigentlich erwartet wenn
Delphi-Quellcode:
Transparent = False
und
Delphi-Quellcode:
Color = clBlack
wäre...

Natcree 26. Nov 2013 11:04

AW: Problem mit Label Transparents
 
Zur Erklärung auf der Mainform Wird ein Video abgespielt. Die Display Ausgabe ist ein TPanel. Dieses Ist auch auch auf Transparent = True gesetzt. Nun starte ich über einen Buttonclick eine weitere Form welche auch auf bsclear gesetzt ist. auf dieser Form ist Das Label. Habe ich irgendwas Übersehen???

Der schöne Günther 26. Nov 2013 11:32

AW: Problem mit Label Transparents
 
Ich bin wahrscheinlich sowieso nicht der richtige für VCL-Dinge. Aber trotzdem:
  • Ein TPanel hat doch überhaupt keine Property Transparent. Was meinst du mit
    Delphi-Quellcode:
    Transparent = True
    ?
  • "Form auf bsClear" bedeutet
    Delphi-Quellcode:
    meineForm.Brush.BrushStyle = TBrushStyle.bsClear
    ? Wenn ja, wozu das? Du kannst die Form mit
    Delphi-Quellcode:
    TransparentColor
    durchsichtig machen.
  • Ist
    Delphi-Quellcode:
    Transparent = True
    nicht eigentlich sowieso Standard für ein TLabel?

Natcree 26. Nov 2013 11:43

AW: Problem mit Label Transparents
 
Sorry ja das panel hat keine transp. Habe color auf clnone gesetzt. Hat jemand noch eine Idee???

Andreas L. 26. Nov 2013 11:52

AW: Problem mit Label Transparents
 
Zitat:

Zitat von Natcree (Beitrag 1237457)
Habe color auf clnone gesetzt. Hat jemand noch eine Idee???

Vielleicht liegt hier das Problem. Wie siehts aus wenn du die Panel-Eigenschaften wieder zurück setzt? Color := clBtnFace, ParentColor := True und ParentBackground := True

Natcree 26. Nov 2013 11:55

AW: Problem mit Label Transparents
 
Ändert leider Auch Nichts.. hmmmmmm???

Der schöne Günther 26. Nov 2013 11:57

AW: Problem mit Label Transparents
 
Kannst du ein kleines Beispiel-Projekt zum Reproduzieren des Fehlers einstellen?

Natcree 26. Nov 2013 12:09

AW: Problem mit Label Transparents
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier mal ein Beispiel. Das Video im Mediaplayer1 sowie das Lied im Mediaplayer2 auf form1 sollte noch geändert werden. da diese Dateien zu gross sind zum Hochladen. Mit Klick auf Mitgliederverwaltung öffnet sich die Form2. danach auf datensatz einlesen Klicken.

stahli 26. Nov 2013 12:15

AW: Problem mit Label Transparents
 
Mal eine Einschätzung unter Vorbehalt (kann falsch sein, ist aber mein letzter Kenntsnisstand):

Ein Label zeichnet sich auf dem Canvas seines Parents. Deshalb wird ein Label immer hinter Controls gezeichnet. Hier ist eine Transparenz lösbar, weil das Label dann nur seinen Text zeichnen muss.

Bei Panels ist das schwieriger. Eine echte Transparenz gibt es hier nicht. Ein Panel kann die Farbe seines Parents übernehmen, dann ist es nicht direkt zu sehen.
Ist der Parent aber nicht einfarbig, hilft das auch nicht. Dann könnte man den passenden Ausschnitt des Parent-Canvas auf den Panel-Canvas kopieren und dann z.B. noch Text darauf zeichnen.
Das ist natürlich aufwendig und schwierig.
Wenn ein Panel andere Controls überdeckt (z.B. über zwei Schaltern mit dem gleichen Parent liegt), ist eine Transparenz gar nicht mehr zu erreichen.

Man kann Panels "ausstanzen" oder "ausschneiden" (über Regionen), so dass Teile des Panels "fehlen" und somit eine echte Transparenz entsteht. Dann werden aber auch Controls abgeschnitten, die über der Region liegen. Es sind sozusagen richtige Löcher, die dann auch keine Mausereignisse abfangen können.

Sobald ein Videoplayer ins Spiel kommt wird es noch komplizierter.
Da werden dann die Daten aus einem Videobildspeicherbereich oder so verarbeitet. Da wird man dann auch je nach System mit verschiedenen Ergebnissen rechnen müssen.


Firemonkey bietet da etwas mehr Flexibilität, hat aber auch wieder Schwächen. Die VCL kann man sich leider nicht als übereinander liegende Folien vorstellen, die transparente Bereiche enthalten können.

Ich hoffe, das passt so ungefähr...

Natcree 26. Nov 2013 16:04

AW: Problem mit Label Transparents
 
also gibt es "keine" Lösung für mein Problem. Sehe ich das Richtig???

baumina 27. Nov 2013 06:28

AW: Problem mit Label Transparents
 
Ich kann dir versichern, es gibt eine Lösung für dein kleines Problemchen. Mach ein kleines Testprogramm bei dem das Phänomen auftritt, damit ich es nachvollziehen kann. Denn dein angehängtes Programm beinhaltet Spezialkomponenten, die bei mir nicht installiert sind, so dass ich es nicht in mein Delphi laden kann.

Natcree 27. Nov 2013 13:05

AW: Problem mit Label Transparents
 
Liste der Anhänge anzeigen (Anzahl: 1)
So Hier noch mal ne Funktionierende Version. Das Mit der Transparenz des Labels hat sich erledigt. Das geht jetzt. Siehe Beispiel.rar . Wie gehabt sollte der Filename des Videos im Mediaplayer auf eine eigene Videodatei geändert werden. Und jetzt sind alle Komponenten Standartkomponenten.

Habe nur noch ein Problem. Normalerweise sollte er im 2 Fenster beim erneuten Klicken das Label auf '' setzen. Es passiert aber nichts..

Woran kann das liegen hier mal der Quelltext

Delphi-Quellcode:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Menus, unit1;

type
  TForm2 = class(TForm)
    Timer1: TTimer;
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    Button2: TButton;
    procedure FormShow(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
private
    { Private declarations }
  public
    { Public declarations }
  end;

var
Form2: TForm2;

implementation

{$R *.dfm}

var
a:string;
i:integer;

procedure LaufschriftLabel(ZuschreibenderTextAuswaehlen:string;TimerAuswaehlen:TTimer;LabelAuswaehlen:TLabel);
begin
  a:=ZuschreibenderTextAuswaehlen;
  inc(i);
  if i > length(a)then
  begin
  TimerAuswaehlen.Enabled:=false;
  exit;
  end;
  LabelAuswaehlen.caption:= LabelAuswaehlen.caption + a[i];
end;

procedure TForm2.FormShow(Sender: TObject);
begin
brush.Style:=bsclear;
label2.caption:='';
end;

procedure TForm2.Timer1Timer(Sender: TObject);
begin
LaufschriftLabel('Hallo das ist ein Test',timer1,label2);
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
label2.caption:='';
i:=-1;// hier müsste er die Globale Variable Zurücksetzen
timer1.Enabled:=true;
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
close;
form1.button1.Visible:=true;
end;

end.

baumina 27. Nov 2013 13:25

AW: Problem mit Label Transparents
 
Irgendwie scheint das damit zusammenzuhängen
Delphi-Quellcode:
brush.Style:=bsclear;
, nimmst du die Zeile raus, klappt das alles prima. Ich habe leider nur im Moment die nicht Zeit das alles ganz genau zu analysieren.

Natcree 27. Nov 2013 13:32

AW: Problem mit Label Transparents
 
Habe den Fehler mit dem Label (schwarzes recht eck) gefunden Es lag daran wenn ich den Boderstyle der Form auf bsnone gesetz habe kahm das schwarze Rechteck statt der Label.caption wenn ich auf sizeable setze ist alles Gut nur das Jetzt die Border Icons auf die Form1 ansprechen und nicht auf Form2.

stahli 27. Nov 2013 14:34

AW: Problem mit Label Transparents
 
Die Exe bringt bei mir einen EMCIDeviceError (Datei wurde nicht gefunden).
Ein kompletter Screenshot würde mich aber mal interessieren...

Natcree 27. Nov 2013 15:53

AW: Problem mit Label Transparents
 
stell mal im mediaplayer1 unter filename den pfad zu einem Video rein dann sollte es funtzen

Natcree 27. Nov 2013 20:41

AW: Problem mit Label Transparents
 
So Habe den Fehler gefunden.

Durch das Brush.style:=bsclear der Form2 konnte er Label2.caption:='' nicht ausführen.

Durch das Ändern des Brush Styles auf bssolid konnte ich Label2.caption:='' ausführen.

Das Kuriose ist die Form2 bleibt unverändert auf bsclear;

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
begin
brush.Style:=bssolid;
label2.Caption:='';
i:=-1;
timer1.Enabled:=true;
end;

Danke für euere Bemühungen.... XDDD


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:56 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