Har på fornemmeren at jeg skal bruge OwnerData = True og tegne det selv, men hvordan tegner man en multiline string ? skal den deles op eller hur ?
--
It compiles...Let\\'s ship it!
Hej,
Du skal bruge Win32 API kaldet DrawText.
Her kan du angive en rect samt at din tekst skal ombrydes.
Her er et eks:
// Der er automatisk linie skift når det er nødvendigt samt hvis
// din streng indeholder #10#13 (linebreak).
procedure DrawMultiLine(ACanvas : TCanvas; AText : String; ARect : TRect; ATransparent : Boolean = False);
var
Old : HGDIOBJ;
begin
// Sæt font'en som skal bruges til at skrive ud med.
Old := SelectObject(ACanvas.Handle, ACanvas.Font.Handle);
// Sørg for at vi skriver med transparent baggrund hivs det er valgt
if ATransparent then
SetBkMode(ACanvas.Handle, TRANSPARENT)
else
SetBkMode(ACanvas.Handle, OPAQUE);
// Skriv teksten ud på vores canvas
Windows.DrawText(ACanvas.Handle,
PChar(AText),
Length(AText),
ARect,
DT_WORDBREAK+DT_NOPREFIX);
// Sæt den gamle font tilbage på vores canvas.
SelectObject(ACanvas.Handle, Old);
end;