Vielleicht kannst Du hiermit etwas anfangen:
Delphi-Quellcode:
procedure TForm1.SetMemoTab(Memo: TMemo; TabWidth: Integer);
var
DialogUnitsX: LongInt;
PixelsX: LongInt;
TabArray: array[0..19] of integer; // kann ggf. auch größer gesetzt werden
i: integer;
begin
Memo.WantTabs := true;
DialogUnitsX := LoWord(GetDialogBaseUnits);
PixelsX := TabWidth;
for i := 1 to Length(TabArray) do
TabArray[i - 1] := ((PixelsX * i) * 4) div DialogUnitsX;
SendMessage(Memo.Handle, EM_SETTABSTOPS, Length(TabArray), LongInt(@TabArray));
Memo.Refresh;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text:='';
// Starteinstellung, hier mit TabAbstand = 50 Pixel
SetMemoTab(Memo1, 50);
end;
// Möglichkeit zur nachträglichen Änderung des TabAbstandes
procedure TForm1.Button1Click(Sender: TObject);
Var TabDist: Integer;
begin
// TabAbstand zuvor in Edit1 vorgeben, z.B. auf 100 Pixel
if not TryStrToInt(Edit1.text, TabDist) then exit;
SetMemoTab(Memo1, TabDist);
end;
Die Einstellung der Tabs wirkt sich grundsätzlich immer auf alle Zeilen aus, d.h. dies auch bei nachträglicher Veränderung des Tabulaturabstandes.