![]() |
Einzelne Lines im Memo einrücken
Hallo,
kann hier wer mal drüber gucken, ob das irgendwie eleganter geht? Ziel ist es in einem Memo die Zeilen, die selektiert sind mit "--" einzurücken bzw. "zurückzurücken". Dabei soll es egal sein, wo in einer Zeile die Selektion anfängt/aufhört. Dies soll dem auskommentieren und einrücken mancher IDE's nachempfunden sein.
Delphi-Quellcode:
procedure TSelector.acDecommentExecute(Sender: TObject);
var i:Integer; begin for i:=Startline to Endline do if Pos('--',SelectMemo.Lines[i])=1 then SelectMemo.Lines[i]:=Copy(SelectMemo.Lines[i],3,Length(SelectMemo.Lines[i])); end; procedure TSelector.acCommentExecute(Sender: TObject); var i:Integer; begin for i:=Startline to Endline do SelectMemo.Lines[i]:='--'+SelectMemo.Lines[i]; end; function TSelector.Endline: Integer; var i,l:Integer; endfound: Boolean; begin endfound := false; l:=0; Result:=0; for i:=0 to SelectMemo.Lines.Count-1 do begin l:=l+Length(SelectMemo.Lines[i])+2; if not endfound then begin if l>=SelectMemo.SelStart+SelectMemo.SelLength then begin endfound:=true; result:=i; end; end; end; end; function TSelector.Startline: Integer; var i,l:Integer; startfound: Boolean; begin startfound := false; l:=0; Result:=0; for i:=0 to SelectMemo.Lines.Count-1 do begin l:=l+Length(SelectMemo.Lines[i])+2; if not startfound then begin if l>SelectMemo.SelStart then begin startfound:=true; result:=i; end; end end; end; |
AW: Einzelne Lines im Memo einrücken
StartLine und Endline könnten vielleicht eleganter mit
![]() |
AW: Einzelne Lines im Memo einrücken
Zitat:
Ansonsten ist im obigen Code/Vorgehen noch irgendwo ein logischer Fehler drin. Wenn ohne Selection der Cursor (oder aber bei Selection SelStart am Anfang (oder Ende?) einer Zeile steht, wird fälschlicherweise schonmal die vorherige Zeile mit eingerückt. Muss ich ggf. morgen mal ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz