Hallo Axxus,
fangen wir hinten an: Windows basiert auf Nachrichten und ein multiline edit control (TMemo ist eine Delphi-Kapselung dafür) versteht unter anderem die Nachricht
EM_SETTABSTOPS.
Die Methode Perform() übergibt die Nachricht und wartet solange, bis sie verarbeitet wurde. Ich setze der Einfachheit halber eine einheitliche Tabulatorweite, da ja eh nur zwei Spalten benötigt werden - deshalb die 1 im Aufruf von Perform().
Als letzter Parameter muss die Adresse einer Tabelle mit den Tab-Positionen übergeben werden. Mir genügt ja ein einzelnes DWORD (TabWidth, hätte ich auch als DWORD oder Cardinal deklarieren können, aber da ich nie in die Nähe des Vorzeichenbits kommen werde ...). Da die Einheit für die Tab-Positionen sogenannte dialog template units sind und diese mit vier multipliziert die mittlere Zeichenbreite des aktuellen Font ergeben, bedeutet 20 * 4 dass ich etwa 20 Zeichen für die erste Spalte ansetze. SHL 2 ist dasselbe wie "mal 2 hoch 2" also "mal 4".
Und dass ich ColWidth als Konstante definiert habe ist eine Angewohnheit von mir. Sie erlaubt mir die Trennung von Steuerung und Ausführung und erleichtert damit die Wiederverwendung meines Codes an vielen Stellen.
Grüße vom marabu