Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Tastenkombination über VK_xxxxx abfragen (https://www.delphipraxis.net/131920-tastenkombination-ueber-vk_xxxxx-abfragen.html)

RWarnecke 18. Apr 2009 13:00

Re: Tastenkombination über VK_xxxxx abfragen
 
Zitat:

Zitat von taaktaak
Moin Rolf,
alternativ auf den integrierten inplace-editor verzichten und ein eigenes Editierfenster verwenden - wenn gewünscht, kannst du es ja von allem 'drumherum befreien, dass es in der Optik dem inplace-editor entspricht.

Moin Ralph,
dann muss ich das Editierfenster ja selber zeichnen. So wie es mleyen in seinem letzten Beitrag geschrieben hat, funktioniert es schon mal. Jetzt muss ich nur noch ausschneiden und kopieren einfügen. Ich bin nur gerade an einem anderen Fall dran, deshalb habe ich es noch nicht weiter ausprobiert.

RWarnecke 27. Apr 2009 18:00

Re: Tastenkombination über VK_xxxxx abfragen
 
Zitat:

Zitat von mleyen
Ich hoffe das hilft jetzt. :?

Noch nicht hundertprozentig. In meinem Testprogramm funktioniert das ganze wunderbar. Nur wenn ich es auf das Programm CodeOrakel übernehmen will, komme ich nicht in die IF-Abfrage GetKeyState(VK_CONTROL), obwohl ich die STRG-Taste gedrückt halte. Kann es sein, dass ich da ein Problem mit den Messages habe ?

Edit : Was wären typische Merkmale dafür, dass ich mir irgendwo die Messages blockiere ?

shmia 27. Apr 2009 18:27

Re: Tastenkombination über VK_xxxxx abfragen
 
Muss das Editieren wirklich so restriktiv abgesichert sein?
Folgende Situation:
Benutzer editiert Knotennamen (name ist noch leer) und entscheidet sich spontan zuerst einen anderen Knoten nochmal zu ändern.
Er kommt jetzt aber aus dem Editor nicht raus. :wall:
Es kann auch nicht mal kurz auf einen anderen Knoten springen, den Namen kopieren, auf den namenlosen Knoten springen, Namen einfügen und dann abändern.
Ich würde erst dann, wenn das Treeview gespeichert oder sonstwas damit passiert prüfen.
Alle Knoten durchgehen, falls Knotenname nicht den Regeln entspricht den Focus darauf setzen und dem Benutzer eine Mitteilung anzeigen.

Diese Vorgehensweise hat auch den Vorteil, dass die Logik zum Prüfen des Treeviews kompakt und zentral an einer Stelle sitzt.
Bei deinem Ansatz ist die Logik verteilt und greift ausserdem relativ unangenehm in das Messageverhalten von Windows ein.
Ausserdem werden Daten, die per Copy & Paste eingefügt werden nicht geprüft (falls ich mich nicht irre).

RWarnecke 27. Apr 2009 18:46

Re: Tastenkombination über VK_xxxxx abfragen
 
Zitat:

Zitat von shmia
Muss das Editieren wirklich so restriktiv abgesichert sein?

Ich hatte diese Procedure OnAppMsg erst garnicht drin. Sie ist erst dazugekommen, wie ich darauf aufmerksam gemacht wurde, dass die Knoten mit der Standardvorgabe nicht in der Datenbank von Code-Orakel abgespeichert wurden. Darauf hin habe ich diese Procedure entwickelt (mit Hilfe von euch :wink: ) um beim betätigen der Enter-Taste abzuprüfen, ob noch die Standardvorgabe der Knotenname ist oder nicht und dementsprechend eine Message auszugeben. Mittlerweile merke ich, dass das nicht so eine gute Idee war.

Zitat:

Zitat von shmia
Folgende Situation:
Benutzer editiert Knotennamen (name ist noch leer) und entscheidet sich spontan zuerst einen anderen Knoten nochmal zu ändern.
Er kommt jetzt aber aus dem Editor nicht raus. :wall:

Er kommt mit der Escape-Taste aus dem Knoten und der Ursprung wird wiederhergestellt.

Zitat:

Zitat von shmia
Es kann auch nicht mal kurz auf einen anderen Knoten springen, den Namen kopieren, auf den namenlosen Knoten springen, Namen einfügen und dann abändern.
Ich würde erst dann, wenn das Treeview gespeichert oder sonstwas damit passiert prüfen.
Alle Knoten durchgehen, falls Knotenname nicht den Regeln entspricht den Focus darauf setzen und dem Benutzer eine Mitteilung anzeigen.

Diese Vorgehensweise hat auch den Vorteil, dass die Logik zum Prüfen des Treeviews kompakt und zentral an einer Stelle sitzt.
Bei deinem Ansatz ist die Logik verteilt und greift ausserdem relativ unangenehm in das Messageverhalten von Windows ein.
Ausserdem werden Daten, die per Copy & Paste eingefügt werden nicht geprüft (falls ich mich nicht irre).

Da besteht bei mir jetzt das Problem, wie kann ich es anders lösen ? Ich schreibe die Daten des TreeViews direkt in die Datenbank mit dem Ereignis OnEdited vom TTreeView.

Edit: Nach jetzt weiteren Tests, habe ich festgestellt, dass wohl irgendeine Einstellung an der Komponente oder an einer anderen Komponente das hervor ruft, das ich kein Copy&Paste machen kann. Wenn jemand weiß, woran es liegt sage doch bitte Bescheid. Ich komme nämlich echt nicht mehr weiter.

RWarnecke 29. Apr 2009 16:04

Re: Tastenkombination über VK_xxxxx abfragen
 
Ich habe jetzt nochmal einiges getestet und ausprobiert. Ich habe jetzt mal alle Funktionen/Proceduren aus meinem Programm komplett entfernt, die mit Messages gearbeitet haben. Das einzigste was ich noch drin habe, ist die Drag&Drop Funktion im TreeView.

Folgende Situation habe ich. Ich habe einen TreeView auf einer Seite von einem PageControl mit alClient sitzen. Wenn ich jetzt einen Knoten editiere oder neu erstelle, kann ich nicht mit der Tastenkombination STRG+V Text aus der Zwischenablage einfügen. Benutze ich die Maus mit der rechten Maustaste, kann ich den Text einfügen. Wenn ich einen Knoten zu editieren aufrufe, mache ich das über den Befehl TV_Category.Selected.EditText. Ein neuer Knoten wird ganz einfach über AddChild erstellt.

So nun zu meiner Frage, womit und wie habe ich es abgefangen, dass die Tastenkombinationen STRG+X, STRG+C, STRG+V nicht an meinen TreeView in den Editiermodus eines Knotens weitergeleitet werden ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:53 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz