ListView - Editieren aller SubItems

  • Hi,
    in einem Listview lassen sich mit dem Style $LVS_EDITLABELS Einträge on-the-fly editieren. Dies gilt aber nur für die Einträge in Spalte 0.
    Mit der folgenden Methode lassen sich alle SubItem sofort editieren. In der zuständigen Funktion verwende ich OnEventMode. Ich habe es aber so geschrieben, dass nur für die Ausführung der Funktion in den OnEventMode geschaltet wird, anschließend wird wieder in den vorherigen Modus zurückgeschaltet (Für all jene, die sich noch immer mit GUIGetMsg rumplagen möchten :D ).
    Das Bsp. habe ich daher auch mal im GetMsgMode erstellt.
    Um den Editiermodus nutzen zu können, darf $LVS_EDITLABELS hier nicht gesetzt sein.


    - mit Doppelklick öffnet sich genau über der angeklickten Spalte ein Editfenster mit dem Inhalt des SubItem
    - der untere Rand des Editfensters liegt an der Mauszeigerspitze
    - das Eingabefeld paßt sich der Breite der zugehörigen Spalte an
    - ist das Fenster so verschoben, dass eine Spalte nach links/rechts über den Desktop hinausragt, wird das Editfenster am Bildschirmrand, statt mittig über der Spalte positioniert
    - der geänderte Inhalt des Fensters wird mit ENTER übernommen und in das SubItem geschrieben
    - findet keine Änderung statt muß das Fenster mit ESC geschlossen werden
    - während des Editierens werden im Fenstertitel Zeilennummer und Spaltenname des editierten SubItem angezeigt



    Hier mal eine alternative Variante, die EditBox kann bei nichtgeändertem Inhalt jetzt auch mit ENTER verlassen werden.


  • nettes Script :P es gibt aber glaube ich ein Problem.
    Nach dem Editieren ist kein Schliessen des Programms mehr möglich.
    Genommen habe ich das Script aus dem Spoiler und gestartet über Scite + F5

    Achtung Anfänger! :whistling:


    Betrachten des Quellcodes auf eigene Gefahr, bei Übelkeit,Erbrechen,Kopfschmerzen übernehme ich keine Haftung. 8o

  • Es funktioniert schon. Nur wenn man 2 mal doppelklickt, wird der Event-Mode einfach überschrieben undnicht mehr zurückgesetzt. Da muss noch eine Abfrage rein, z.B.:

  • Kann das Problem nicht nachvollziehen.
    Wenn SubItem zum Editieren geöffnet wird:
    - es wurde nichts geändert ==> Schließen mit ESC
    - Daten geändert ==> Schließen mit ENTER
    GUI wird normal mit Klick auf |X| beendet.


    Edit: progandys Beitrag erschien, als ich schrieb. :D
    Danke, aber man muß wirklich an jede noch so blödsinnige Aktion der User denken. :whistling:

  • Warum schließt sich eigentlich das Editfenster nicht, wenn man einfach Enter drückt. Ich meine ohne was geändert zu haben . Liegt das am OnEventMode ? Hat jetzt nichts mit der Funktion des Scriptes an sich zu tun. Würde mich aber Interessieren .

  • Das verstehe ich . Was mein Anliegen war, gibt es eine Möglichkeit das die Input auf ein einfaches Return reagiert? Normalerweise verhällt sich die Input ja immer so ,das sie erst auf Return reagiert wenn der Inhalt sich geändert hat . Ich weiß das gehört jetzt nicht in den thread , aber will nicht einen neuen eröffnen .

  • Hab mir schon gedacht, das es da keine einfache Möglichkeit gibt das Verhalten des Input zu manipuliern. Danke für deine Antwort . :)

  • Coole Sache das .Hab ich euch jetzt so viel Mühe gemacht . Danke Progandy und Bugfix :thumbsup: