FMX Tmemo 自動改行


はくちゃん  2020-09-19 11:03:48  No: 149155

delphi 10.3 fmx の tmemoへの書き込みで、30文字の 入力数を超えたら 自動改行して次の 行へ 移るようにしたいのですが、 どのようにプログラミングしたらよろしいでしょうか?
よろしくお願い致します。


はくちゃん  2020-09-21 09:56:46  No: 149156

procedure TForm1.Memo1KeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
  Shift: TShiftState);
var
LineCOunt:Integer;
begin
LineCount:=strtoInt(Memo1.Lines.Count.ToString);

if StrtoInt(Memo1.Lines.Text.Length.ToString)>=(30*LineCount) then
    begin
     **  ここに 改行キーの送信をセットしたいです!
    end;
end;


igy  2020-09-21 18:31:54  No: 149157

>LineCount:=strtoInt(Memo1.Lines.Count.ToString);
これは、
LineCount := Memo1.Lines.Count;
で、よさそうな・・

そして、
>if StrtoInt(Memo1.Lines.Text.Length.ToString)>=(30*LineCount) then 

if Memo1.Lines.Text.Length >= (30*LineCount) then 
で、よさそうな・・

ただ、OnKeyUpイベントのたびに、
>if StrtoInt(Memo1.Lines.Text.Length.ToString)>=(30*LineCount) then 
のIF文で処理するのは、正しくないような気もします。


KONNOYA  2020-09-24 16:07:30  No: 149178

ハズしているかもですが、
Memo1.WordWrapプロパティをTRUEに設定すれば、
入力して行った時にTMemo1の右端を超えると改行した様な感じになりますよ。
必ず30文字で改行する必要があるとか、必ず改行コードを入れる必要があるというのなら、
この方法は使えないですが。

プログラムから改行コードを挿入するには、
Memo1.Lines.Text := Memo1.Lines.Text + sLineBreak;
と、書けば改行コードが最後尾に追加されます。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加