![]() |
Synmemo zeilen umdrehen
hallo, ich hab folgendes vor:
in einem Synmemo soll der Benutzer Zeilen markieren können und dann kopieren, diese sollen dann umgedreht werden ungefähr so: 1 2 3 4 5 6 ------ 6 5 4 3 2 1 Jetzt würde ich gerne wissen wie ich die Makierten Zeile in eine Listbox lesen kann? Kann mir dazu jemand helfen? Ach ja, also des müssen immer die MAKIERTEN Zeilen sein also nicht wie oben von 1 an. Danke für den Tipp Dragon27 |
Re: Synmemo zeilen umdrehen
Hi Dragon27,
nur mal so ein Gedanke von mir, da ich ned weiß ob es dafür eine spezielle Prozedur gibt. Du könntest alle markierten Zeilen in einem Array speichern und diese Zeilen dann am Ende in verdrehter Reihenfolge wieder ausgeben. Tschüß Markus |
Re: Synmemo zeilen umdrehen
hallo Markus,
ja des is klar aber wie bekomme ich raus von welcher Zeile aus ich einlesen soll und bis welche Zeile ich lesen soll? Danke für deine Mühe! |
Re: Synmemo zeilen umdrehen
Ich weiß nicht, obs leichter geht, aber über SelStart und SelLength kannst du rausfinden, wo markiert wurde. Über Length(Lines[index]) kannst du dann rausfinden, welche Zeile das sein muss. Alles vorher kopieren, dann das von Markus machen und den Rest wieder übernehmen.
(vorausgesetzt SynMemo funktioniert wie ein normales Memo) |
Re: Synmemo zeilen umdrehen
Wenn du die Zeilen im Ganzen haben willst und nicht nur die selektierten Zeichen, dann müsste es so gehen:
Delphi-Quellcode:
CharIndexToRowCol gibt dir von einer absoluten Position Line und Char. Das wird in umgekehrter Reihenfolge in eine StringList geschrieben. Die StringListe wird dann an die Items der ListBox übergeben.
Var
StartLn, EndLn, i: Integer; SList: TStrings; Begin With SynMemo1 Do Begin StartLn := pred(CharIndexToRowCol(SelStart).Line); EndLn := pred(CharIndexToRowCol(SelEnd).Line); End; SList := TStringList.Create; Try For i := EndLn Downto StartLn Do SList.Add(Trim(SynMemo1.Lines[i])); ListBox1.Items.Assign(SList); Finally FreeAndNil(SList); End; End; Edit: Tippfehler |
Re: Synmemo zeilen umdrehen
CharIndexToRowCol kannte ich nicht. Dann einfach alles bis eins vor die Zeile übernehmen, umdrehen und Rest dranpacken. Und eventuell für demn 100%igen Service die ursprüngliche Markierung wieder herstellen (machen nur wenige nette Programme).
|
Re: Synmemo zeilen umdrehen
Die Markierung wird bei meinem Code-Schnipsel nur gelesen, aber nicht geändert.
|
Re: Synmemo zeilen umdrehen
Sicher, dass sie nicht trotzdem verloren geht?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:17 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 by Thomas Breitkreuz