Moin moin,
der Text im Memo geht doch vorne nie gleich beim allerersten Pixel los, sondern erst mit einem kleinen Offset rechts davon. Genauso endet die Textanzeige am rechten Memo-Rand auch schon etwas vorm letzt möglichen Pixel. Ergo musst du diese Versatzlängen zur eigentlichen TextWidth einfach immer noch dazuaddieren:
Delphi-Quellcode:
Offsets := 8; // 8, sonst schlägt das "WordWrap" zu, wenn dieses TRUE ist
Memo1.ClientWidth := Offsets + Label1.Canvas.TextWidth(Label1.Caption);
Übrigens kann man die Größe dieser Abstandsränder bei einem Memo oder einem RichEdit auch selbst auslesen bzw. selbst einstellen, und zwar mittels EM_GETRECT bzw. EM_SETRECT.
Auch schönen Sonntag noch,
mfg