Einzelnen Beitrag anzeigen

Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#1

Einzelne Lines im Memo einrücken

  Alt 12. Jan 2012, 15:04
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;
Ralph
  Mit Zitat antworten Zitat