Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Tpanel verliert die Caption nach BMP Zuweisung (https://www.delphipraxis.net/163543-tpanel-verliert-die-caption-nach-bmp-zuweisung.html)

delphinia 3. Okt 2011 20:26

Delphi-Version: 5

Tpanel verliert die Caption nach BMP Zuweisung
 
Hi :)

lade nen Bild aus der ImageList
Delphi-Quellcode:
  bmp1 := TImage.create(Panel1); // Bild erstellen.
  bmp1.Height := 50;
  bmp1.Width := 155;
  settings_imglst.GetBitmap(0, bmp1.Picture.Bitmap);
  bmp1.Parent := Panel1; // Bild ins Panel setzen

  Panel1.Repaint;
Doch die Caption wird dann überlagert! Wie kann ich das - die Caption dennoch erhalten bleibt und AUF der Bitmap liegt?

himitsu 3. Okt 2011 20:40

AW: Tpanel verliert die Caption nach BMP Zuweisung
 
Die Caption ist nunmal "direkt" auf dem Panel.
Das TImage legst du auf das Panel (genauer davor)
und wenn das TImage nicht durchsichtig ist, an der gewünschten Stelle, dann sieht man nicht mehr, was sich dahinter befindet.

Schau nach rechts, schreib deine Caption auf diese Wand und nun häng ein Bild davor. :zwinker:


Lösungen:
- das Bild im TImage an der gewünschten Stelle transparent machen
- den Text auf das Bild (im TImage) draufmalen
- eine weitere Textkomponente vor das TImage (aber nicht TLabel)

Rob09 5. Okt 2011 14:07

AW: Tpanel verliert die Caption nach BMP Zuweisung
 
Hi!

TPanel besitzt ja wie ich das sehe kein Canvas. Deshalb hätte ich da eigentlich ein TLabel mit .Transparent = True benutzt - was spricht denn dagegen, himitsu?

Beste Grüße!
Robert

himitsu 5. Okt 2011 14:19

AW: Tpanel verliert die Caption nach BMP Zuweisung
 
Ein Panel hat schon eine Art Canvas. (an diesen würde man z.B. über .Handle des Panels rankommen)
Darauf zeichnet sich dann das Label.

Ein TLabel zeichnet sich halt immer auf den Canvas seines Parents.
(ist 'ne delphi-eigene Komponente, welche dahingehend "optimiert" wurde)
Alternativ gibt es Delphi-Referenz durchsuchenTStaticText, welche seitens Windows das ist, was ein TLabel für Delphi darstellen soll.


Darum kann man z.B. auch kein TLabel vor ein TEdit, TButton, TImage legen, weil es sich ja auf den dahinterliegenden Parent zeichnen will, welcher dabei schließlich verdeckt ist.

DeddyH 5. Okt 2011 14:23

AW: Tpanel verliert die Caption nach BMP Zuweisung
 
Liste der Anhänge anzeigen (Anzahl: 1)
Unter XE funktioniert das auch mit einem Label.

[edit] P.S.: TPanel besitzt nicht nur eine Art Canvas, sondern tatsächlich eine Canvas-Property (geerbt von TCustomControl). Nur ist diese protected, deshalb kommt man da nur aus abgeleiteten Klassen heran. [/edit]

himitsu 5. Okt 2011 14:32

AW: Tpanel verliert die Caption nach BMP Zuweisung
 
Die werden doch nicht etwa was am Label geändert haben? :shock:
Grad ausprobiert ... stimmt.

Hmm, ich dachte TImage hätte ein eigenes Canvas.

Aber vielleicht zeichnet es sich auch nur auf den Canvas des Parent?
Wenn ja, dann würde es dieses Verhalten erklären :gruebel:


[add]
k.A. ob das schon immer so war.

Das Canvas des TImage wird nur auf das Canvas des darinliegenden Graphic-Controls geleitet (nicht auf den Bildschirm).
Quasi im OnPaint wird das Graphic-Controls dann, genauso wie das TLabel, ausgegeben.



Fazit: OK, TLabel kann vor TImage (muß nur in der Erstellungsreihenfolge danach kommen), aber dafür kann TImage und TLabel z.B. nicht vor TButton.


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