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.