Einzelnen Beitrag anzeigen

David Martens

Registriert seit: 29. Sep 2003
205 Beiträge
 
Delphi XE Enterprise
 
#7

AW: Hint mit Tabulator formatieren

  Alt 14. Jun 2010, 15:44
Du kannst dir ja die Breite der einzelnen Texte berechnen und dann zu einer gestimmten Breite auffüllen.

Hier wie ich die Breite der DropdownListe für ComboBoxen ermittle:
Delphi-Quellcode:
procedure OnComboBoxDropdown(Sender: TObject);
var
  WMF : TMetafile; // virtuelle WMF bzw. EMF Datei (enthält das Image)
  WMFCanvas : TMetafileCanvas; // virtuelle Oberfläche des Metafiles
  i, Width : integer;
begin
  WMF := TMetafile.Create;
  WMFCanvas := TMetafileCanvas.Create( WMF, 0);

  WMFCanvas.Brush.Style := bsClear;
  WMFCanvas.Font := TComboBox(Sender).Font;

  Width := TComboBox(Sender).Width;

  for i := 0 to TComboBox(Sender).Items.Count - 1 do
  begin
    Width := max(Width ,WMFCanvas.TextWidth(TComboBox(Sender).Items[i]) + 25);
  end;

  TComboBox(Sender).Perform(CB_SETDROPPEDWIDTH, Width, 0);

  WMFCanvas.Free;
  WMF.Free;
end;
Im Grunde reicht dir WMFCanvas.TextWidth(String) mit den richtigen Fonteinstellungen für die einzelnen Texte und das muß dann nur mit Leerzeichen sinnvoll aufgefüllt werden.
  Mit Zitat antworten Zitat