Einzelnen Beitrag anzeigen

Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#3

AW: Memo zeichen pro zeile

  Alt 15. Dez 2011, 19:09
ich schließe mich meinem Vorredner an, wenn Du eine entsprechende Schrift verwendest könntest DU hiermit weiterkommen:
Delphi-Quellcode:
Function GetMemoCharactersPerLine(M:TMemo):Integer;
var
  DC:THandle;
  C:TCanvas;
begin
  Result := 0;
  C:=TCanvas.Create;
  DC := GetDC(M.Handle);
  try
      C.Handle := DC;
      C.Font.Size := M.Font.Size;
      Result := C.TextWidth('X');
  finally
    ReleaseDC(M.Handle,DC);
    C.Free;
  end;
end;

Function GetMemoTextWidth(M:TMemo;Const s:String):Integer;
var
  DC:THandle;
  C:TCanvas;
begin
  Result := 0;
  C:=TCanvas.Create;
  DC := GetDC(M.Handle);
  try
      C.Handle := DC;
      C.Font.Size := M.Font.Size;
      Result := C.TextWidth(s);
  finally
    ReleaseDC(M.Handle,DC);
    C.Free;
  end;
end;


procedure TForm2.Button1Click(Sender: TObject);
begin
  memo1.Font.Size := 8;
  Showmessage( IntToStr(GetMemoCharactersPerLine(Memo1)));
  memo1.Font.Size := 90;
  Showmessage( IntToStr(GetMemoCharactersPerLine(Memo1)));
  Showmessage(IntToStr(GetMemoTextWidth(Memo1,'Nasenbär')));
end;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)

Geändert von Bummi (15. Dez 2011 um 19:12 Uhr)
  Mit Zitat antworten Zitat