DBMemoにName = dbmemSummaryがあります。また、DB Memoから余分な改行を削除するReplaceLineBreaksメソッドがあります。カーソル位置の設定に問題があります。改行を置き換えた後にDelphiのカーソル位置を維持する方法
これは、メソッドの抜粋です -
procedure ReplaceLineBreaks;
var
Save_Cursor: TCursor;
aOldTextList: TStringList;
aNewTextList: TStringList;
i, : Integer;
begin
inherited;
aOldTextList := TStringList.Create;
aNewTextList := TStringList.Create;
try
Save_Cursor := Screen.Cursor;
aOldTextList.text := dbmemDisciplineSummary.text;
for i := 0 to aOldTextList.Count - 1 do begin
if (i = 0) and(Trim(aOldTextList[i]) <> '') then
aNewTextList.Add(aOldCN_TextList[i])
else if not ((i<>0) and (Trim(aOldTextList[i - 1]) = '') and (Trim(aOldTextList[i]) = '')) then
aNewTextList.Add(aOldTextList[i]);
end;
cdsPTClinicalNotesCNTEXT.AsString := aNewTextList.Text;
finally
Screen.Cursor := Save_Cursor;
FreeAndNil(aOldTextList);
FreeAndNil(aNewTextList);
end;
end;
しかし、そのバックと同じ位置にカーソルを設定されていません...いくつかのいずれかが助けてくださいことはできますか?あなたがメモのSelStart
とSelLength
プロパティではなく、Screen.Cursor
プロパティを使用する必要が
TCursorは、マウスポインタではなく、一部の人々は、カーソルを呼び出すメモキャレット、です。あなたはキャレット位置のためのメモのSelStartプロパティを調べたいでしょう。行を削除するときにそれを追跡する必要があります。個人的には、メモのテキストをセルの開始位置の左右に分割し、StringReplaceを使って別々に行を削除します。 – MikeD