Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: line an bestimmter position des memos einfügen

  Alt 5. Apr 2008, 07:39
Herzlich willkommen in der Delphi-PRAXiS, fealXX.

Der Zeilentrenner unter Windows ist sLineBreak - und dahinter steckt #13#10.

Du betrachtest den Text in deinem Memo (Memo3.Lines.Text) bereits als einen einzigen String. So erhältst du beim Suchen nach deinem Platzhalter (#urls#) natürlich das Offset des ersten Zeichens von diesem String. Über Memo3.Cursor steuerst du nicht die Einfügestelle an, sondern da regelst du die visuelle Erscheinung des Cursors, wenn er sich über dem Memo3 befindet. Steht dein Platzhalter nicht sowieso in einer eigenen Zeile?

Delphi-Quellcode:
procedure InsertLinks(
  markup, // Aufnehmende StringList
  links: TStrings; // Liste mit den URLs
  index: Integer; // Zeilenindex für das Einfügen
  bbcTag: string = 'URL'  // Tagname für BB-Code
);
var
  i: Integer;
begin
  markup.BeginUpdate;
  try
    for i := Pred(links.Count) downto 0 do
      markup.Insert(index, Format('[%s]%s[/%s]', [bbcTag, links[i], bbcTag]));
  finally
    markup.EndUpdate;
  end;
end;

procedure TDemoForm.ButtonClick(Sender: TObject);
const
  PLACE_HOLDER = '#urls#';
var
  index: Integer;
begin
  index := Memo.Lines.IndexOf(PLACE_HOLDER);
  if index < 0
    then index := Memo.Lines.Count
    else Memo.Lines.Delete(index);
  InsertLinks(Memo.Lines, ListBox.Items, index);
end;
Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat