![]() |
Problem mit WM_NOTIFY beim Listview und Return
Delphi-Quellcode:
Der obiger Code sollte eigentlich auch ausgeführt werden, wenn der Listview den Focus hat und man Return drückt. Tut es aber nicht. Der Doppelklick funktioniert aber. :twisted:
WM_NOTIFY:
begin { Benachrichtigungs-Codes vom Listview behandeln } if PNMHdr(lParam).idFrom = IDC_LV then case PNMHdr(lParam)^.code of { Doppelklick auf Listview-Eintrag -> Kontakt-Dialog öffnen } NM_DBLCLK, NM_RETURN: begin { Sender = Listview } Sender := SNDR_LV; Caption := GetCaption(hDlg, IDC_LV); { keinen Eintrag dierekt angeklickt, GetCaption ist gescheitert } if Caption = '' then exit; { ansonsten Kontakt anzeigen } DialogBox(hInstance, MAKEINTRESOURCE(200), hDlg, @dlgContact); end; Der Code stammt aus meiner AdressDB, die man sich auch mit Source von meiner Seite runterladen kann. |
keine Ahnung. Wenn Du gar nicht weiterkommst hilft vielleicht ein Umweg.
OnKeyDown nutzen, auf Enter prüfen und Code in einer ausgelagerten Methode aufrufen (die dann auch für nm_Dblclk nutzen). Gruß oki P.S. Mein Notmotto ist: Viele Wege führen nach Rom. Schick ist nicht alles. |
Wird nicht funktionieren, da das Programm und der Source nonVCL ist.
@Luckie: vielleicht trotzdem in WM_COMMAND schreiben!? Chris |
Geb doch einfach mal PNMHdr(lParam)^.code aus und kuck was da drin ist wenn du Enter drückst...
|
Zitat:
|
Zitat:
|
Das wäre eine Idee. Aber das amche ich erst, wenn Mathias Simmack auch nichts mehr einfällt. :wink:
Ich werde irre. In dem Demo aus meinen Tutorials geht es. Jetzt wird es verrückt:
Delphi-Quellcode:
Mit F2 geht es aber nicht mit VK_RETURN. :shock:
LVN_KEYDOWN:
if(PLVKeyDown(lParam)^.wVKey = VK_F2) then begin { Sender = Listview } Sender := SNDR_LV; Caption := GetCaption(hDlg, IDC_LV); { keinen Eintrag dierekt angeklickt, GetCaption ist gescheitert } if Caption = '' then exit; { ansonsten Kontakt anzeigen } DialogBox(hInstance, MAKEINTRESOURCE(200), hDlg, @dlgContact); end; |
Zitat:
Code:
Keine Probleme. Ich drücke ENTER und der Bearbeiten-Dialog erscheint.
WM_NOTIFY:
case PNMHdr(lp)^.code of LVN_KEYDOWN: case PLVKeyDown(lp)^.wvKey of VK_RETURN: SendMessage(wnd,WM_COMMAND,MAKEWPARAM(IDC_EDITENTRY,BN_CLICKED),0); end; end; So, what? :? |
Ich habe es ausprobiert. Es geht definitiv nicht bei mir. Auch NM_RETURN geht nicht. Farg mich bitte nicht, warum nicht. :roll:
|
Meine Vermutung ist, dass sich -durch deine ganzen Erweiterungen/Änderungen/usw.- Stellen im Programmcode befinden, die zwar keine Fehler verursachen, sich aber gegenseitig behindern. Eine andere Möglichkeit gibt es eigentlich nicht, denn wenn ich an meine Programme denke: HED, UIS und EFlagsEd verfügen auch über Listview, Toolbar und Statuszeile. Prinzipiell also die selben Elemente wie in deiner Datenbank, nur dass ich eben auch mit ENTER die Listview-Items aufrufen kann (bzw. den Dialog, der dann erscheinen soll).
Ich habe mir mal den Quellcode des Programms angesehen, und meine ehrliche Meinung ist: wenn du mal Zeit und Muße hast, dann solltest du es von Grund auf neu schreiben! Dinge, die mir besonders aufgefallen sind:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:38 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