Définissez la police du mémo sur une police à espacement fixe comme Courier New
. De cette façon, chaque caractère aura la même largeur, et vous pouvez l'utiliser pour aligner les textes ou afficher les arts ASCII dans le mémo.
Vous pouvez également utiliser une listview ou un stringgrid, qui prend en charge l'affichage du texte dans les colonnes. Pour votre but, c'est probablement la meilleure option.
Si vous décidez de coller avec le mémo, alors en dehors de la définition de la police, vous devrez faire toutes les chaînes avant les deux points de la même largeur. Vous pouvez utiliser une simple fonction de remplissage pour cela. Un bel exemple est donné sur SwissDelphiPages:
function RightPad(S: string; Ch: Char; Len: Integer): string;
var
RestLen: Integer;
begin
Result := S;
RestLen := Len - Length(s);
if RestLen < 1 then Exit;
Result := StringOfChar(Ch, RestLen) + S;
end;
Vous pouvez donc l'utiliser comme ceci:
Memo.Lines.Add(RightPad('some_string', ' ', 20) + ':' + some_string);
Vous devriez mieux utiliser une grille pour cela –
Cela n'a vraiment rien à voir avec un mémo, juste avec des chaînes. Et c'est très trivial à effectuer. –
@JerryDodge Je pense que vous avez mal interprété la question. Le fait que le texte soit affiché dans un mémo (ou du moins dans un contrôle visible) est un détail assez important. – GolezTrol