![]() |
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:
|
Zitat:
Aber das ganze noch mal neu schreiben würde viel Arbeit bedeuten. Das einzigste, was ich eventuell machen werde ist es, den Quellcode komplett zu überarbeiten. Ein Anfang ist schon gemacht, ich habe alles mal sortiert. Das lag aber daran, dass der Code-Explorer von den GExperts die Prozeduren nur in alphabetischer Rehenfolge anzeigt, nicht wie sie im Code stehen. :( |
Zitat:
Zitat:
Zitat:
Die etwas feinere Kosmetik brachte eine Ersparnis von 5k ein. Als Anregung: das meiste kannst du beim Lesen und Schreiben der INI-Datei sparen, wenn du den Editfeldern des Dialogs "200" aufeinander folgende IDs gibst und die dazu passenden Namen in einem Array unterbringst. Dadurch reduzieren sich diese X Zeilen mit Lesen & Schreiben auf eine for-Schleife. Willste haben? :wink: |
Zitat:
Ich habe mir überlegt, dass ich das jetzt auch alles etwas objektorinetiert angehe. Also das mit den Einstellungenspiechern kommt in ein Objekt und das Lesen und Schreiben der Datendatei kommt auch in ein Objekt. Ich muß mir nur erst einen Entwurf machen über die Methoden, Eigenschaften usw. In einer Woche dürfte dann das Flagschiff meiner Webseite genaralüberholt sein. Dann stelle ich es auch hier mal vor. |
Klingt, als fühlte sich da wer bei der Ehre gepackt. :mrgreen:
|
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:44 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