Einzelnen Beitrag anzeigen

Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Panelwidth an Caption anpassen ?

  Alt 22. Jul 2009, 15:59
Zitat von Hansa:
Panel hat doch kein Canvas ?
Doch, hat es sehr wohl, ist jedoch protected. Es bietet sich daher an, eine eigene Klasse TAutoSizePanel zu erstellen (zum Beispiel), oder einfach vom Betriebssystem die passende Größe ermitteln zu lassen, dann gibts auch keine Probleme mit Widestrings und so weiter

Zitat von Hansa:
Delphi-Quellcode:
lblHilf.Caption := (c as TPanel).Caption;
lblHilf.Font := (c as TPanel).Font;
(c as TPanel).Width := lblHilf.Width; // jetzt Breite anpassen
Abgesehen davon, dass das Resourcenverschwendung ist und um den Faktor zehn langsamer, funktioniert das nur, wenn lblHilf.AutoSize=true Außerdem hast Du den im Ursprungspost erwähnten Rand links und rechts vergessen Wenn Du Dich an Deine eigene Aufgabenstellung hältst, musst Du noch mehr machen als in den obigen Zeilen

Zitat von Hansa:
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. Was ist davon zu halten ?
"reinmachen" musst Du da nirgends Die Unit Windows sollte in den allermeisten VCL-Programmen so oder so schon vorhanden sein Zum Rest siehe oben. Und wo das hinführt: Die Altlast an der ich momentan arbeite hat auf dem Mainform ca. 250 Controls in mehreren Schichten übereinander angeordnet, ca. 30 davon dienen nur dazu, irgendwelche X/Y-Positionen und Abstände zu ermitteln. Vollkommen bescheuert.
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat