![]() |
Panelwidth an Caption anpassen ?
Moin,
ich brauche ein paar Ideen. Es geht darum, die Breite eines Panels in Abhängigkeit von der Caption darzustellen. D.h. je länger die Caption, desto größer die Breite. Rechts und links von der Caption soll noch ein Rand hinzugefügt werden und der soll unabhängig von der Caption gleich groß sein. Egal, bei welcher Schrift. So was wie hier :
Delphi-Quellcode:
scheidet also direkt aus. Ich habe bereits eine Lösung im Kopf, die funktionieren müsste, zuerst will ich mal Meinungen hören, wie man das überhaupt machen könnte. :zwinker: Was mir bisher vorschwebt, das dürfte unnötig kompliziert sein. :mrgreen:
Font*length (Caption)
|
Re: Panelwidth an Caption anpassen ?
Es geht viel einfacher : Canvas hat ne Funktion, wo du die Textbreite in Pixel herausfinden kannst.
Delphi-Quellcode:
Hoffe ich konnte dir helfen
Canvas.TextWidth(Caption) +2; //die +2 für die abstehende Breite
//das geht nur wenn du einen neue Komponente erstellst. Zur Design-Zeit, also wo du die Komponenten aufs Form ziehst, musst du erst ne Variable Canvas erstellen var Canvas : TCanvas; begin Canvas := TCanvas.Create; Canvas.Handle := GetDC(Panel.Handle); end; //und dann halt TextWidth machen Gruß NickelM |
Re: Panelwidth an Caption anpassen ?
TCanvas kennt eine Methode, mit der man die Länge einer zeichenkette in Pixel bestimmen kann. Guck mal in der Hilfe nach, mir fällt gerade nicht der Name ein.
|
Re: Panelwidth an Caption anpassen ?
Lass die Caption doch leer und nimm stattdessen ein Label. Das Label platzierst du im Panel und setzt bei beiden Autosize auf True. Abstände könntest du mit den Properties Padding bzw Margin einstellen.
|
Re: Panelwidth an Caption anpassen ?
Zitat:
Delphi-Quellcode:
type
THACK_CustomPanel = class(TCustomPanel); procedure TForm1.Button1Click(Sender: TObject); begin Panel1.Width := THACK_CustomPanel(Panel1).Canvas.TextWidth(Panel1.Caption) + 16; end; |
Re: Panelwidth an Caption anpassen ?
Panel hat doch kein Canvas ? :gruebel: Jedenfalls war keines der angeführten Beispiele zum laufen zu kriegen. Habe jetzt mal meine eigene Idee getestet und sie an, die geht :
Delphi-Quellcode:
Was soll ich denn überhaupt in mein Programm eine WinAPI-Funktion reinmachen oder irgendwie ein Canvas erzeugen ? Ich lasse einfach das Label die richtige Width errechnen. Das liefert dann dem Panel die richtige Width und fertig. :shock: Was ist davon zu halten ?
lblHilf.Caption := (c as TPanel).Caption;
lblHilf.Font := (c as TPanel).Font; (c as TPanel).Width := lblHilf.Width; // jetzt Breite anpassen |
Re: Panelwidth an Caption anpassen ?
Zitat:
Gruß Ansgar |
Re: Panelwidth an Caption anpassen ?
Zitat:
|
Re: Panelwidth an Caption anpassen ?
Zitat:
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz