Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
Delphi 12 Athens
|
AW: Memo zeichen pro zeile
15. Dez 2011, 19:59
Wenn man allerdings lediglich ermitteln möchte, wie oft derselbe String in eine Zeile passt, könnte es so klappen (Fehler vorbehalten):
Delphi-Quellcode:
function GetStringCountPerLine(Memo: TMemo; const aString: string): integer;
var
tempDC: hDC;
cv: TCanvas;
NeededWidth, Margins, XOffset: integer;
begin
Result := -1;
if Assigned(Memo) then
begin
tempDC := CreateCompatibleDC(0);
if tempDC <> 0 then
try
cv := TCanvas.Create;
try
cv.Handle := tempDC;
cv.Font.Assign(Memo.Font);
NeededWidth := cv.TextWidth(aString);
Margins := SendMessage(Memo.Handle, EM_GETMARGINS, 0, 0);
XOffset := (Margins shr 16) + (Margins and $0000FFFF);
if NeededWidth <> 0 then
Result := (Memo.ClientWidth - XOffset) div NeededWidth
else
Result := 0;
finally
cv.Free;
end;
finally
DeleteDC(tempDC);
end;
end;
end;
Detlef "Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
|