AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

IOTA Undo-Problem

Ein Thema von r29d43 · begonnen am 2. Jun 2021 · letzter Beitrag vom 7. Jun 2021
 
r29d43

Registriert seit: 18. Jan 2007
289 Beiträge
 
Delphi 10.4 Sydney
 
#1

IOTA Undo-Problem

  Alt 2. Jun 2021, 16:09
Hallo!

Mit folgendem einfachen Code tauscht mein IOTA-Package den CommentText einer Codezeile ab einer bestimmten Caret-Position bis zum jeweiligen Zeilenende durch einen neuen Text aus:

Delphi-Quellcode:
  TopView := (BorlandIDEServices As IOTAEditorServices).TopView;

  oldCaretX := TopView.Buffer.EditPosition.GetColumn;
  oldCaretY := TopView.Buffer.EditPosition.GetRow;
  TopView.Buffer.EditPosition.Move(spcCaretLine,spcCaretCol);

  J := Length(QuellCodeAnsiStrList.Strings[spcCaretLine-1]) - spcCaretCol +1;
  if J > 0 then TopView.Buffer.EditPosition.Delete(J);
                                                                                
  if length(newCommentString) > 0 then
    TopView.Buffer.EditPosition.InsertText(newCommentString);

  TopView.Buffer.EditPosition.Move(oldCaretY,oldCaretX);
So weit so gut. Nur - wenn ich so einen Vorgang dann aber anschließend per IDE-Undo-Funktion rückgängig mache (per Ctrl-Z-Key oder Mausklick auf die UndoButton), dann wird dieser Undo-Akt eine ziemlich chaotische Sache, welche dann erst oft nach so 10-20 Klicks endet. Zwischendrin springt dann der Caret ganz gerne mal irgendwo in die Gegend, gerne auch mal an den Unit-Anfang insgesamt, um dann nach dem gefühlten "zigten" UndoButton-Klick endlich plötzlich doch wieder an der aufeinmal wiederhergestellten Ausgangszeile aufzutauchen.

Ich habe mir schon überlegt, ob das event. auch was mit meinem IOTA-Code zu tun haben könnte, mittels dem ich diesen Text mit einem anderen austausche. Aber der diesbezügliche IOTA-Code ist eigentlich so einfach, dass der so eine Undo-Irrung kaum verursacht haben könnte.

Gibts event. eine Möglichkeit, diesen Undo-Buffer selbst irgendwie zu manipulieren, bzgl. irgendwelcher Teilarbeiten ein- oder auszuschalten etc..

Bzw. man müsste das Undo so einstellen können, dass er alle ZwischenPositionen des Carets einfach unterdrückt und nur tatsächliche Textänderungen umsetzt. Vllt. noch mit einer einzigen Caret-Positionierung zu diesem TextänderungsOrt davor. Aber das müsste es dann gewesen sein, weil, wie gesagt, alles andere ziemlich schnell in Chaos ausartet.

Thx im Voraus
...
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:55 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