のような2行のテキストを含むメモがあります
aaaa : dsfdsfdsffsf bbbbbbbbbb : fgdfgff
同じ行で「:」を取得したい-次のように
aaaa:dsfsfd bbbbbbbb :ghjghjgjhjg
私はデルファイとコードを使用しています。
memo.lines.add(some_string + ' : ' + some_string);
使用しようとしましSetLength
たが、今は方法がわかりません。
メモのフォントを のような等幅フォントに設定しCourier New
ます。そうすれば、すべての文字が同じ幅になり、それを使用してテキストを揃えたり、メモに ASCII アートを表示したりできます。
または、列にテキストを表示することをサポートする listview または stringgrid を使用することもできます。あなたの目的のために、これはおそらくより良いオプションです。
メモに固執する場合は、フォントの設定とは別に、コロンの前のすべての文字列を同じ幅にする必要があります。そのために単純なパディング関数を使用できます。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;
したがって、次のように使用できます。
Memo.Lines.Add(RightPad('some_string', ' ', 20) + ':' + some_string);
最初に、「:」の前の文字列の最大長を知る必要があります。次に、「:」を個別にシフトするための処理を行う必要があります。この 2 回目の反復では、他の応答で前に示したアプローチの 1 つを使用します。