![]() |
Entf-Taste in mehreren Komponenten?
Hallo,
ich habe ein Edit und eine ListView, KeyPreview des Forms ist true. Nun wenn sich der Cursor in dem Edit befindet und man die Taste Entf klickt, springt die Funktion zum entfernen eines Eintrages in der ListView an, was ich nicht möchte. Wie weise ich die Entf-Taste der jeweiligen Komponenten zu? Danke! |
AW: Entf-Taste in mehreren Komponenten?
Dann erklär doch mal, wann die Entfernen-Taste was auslösen soll.
Genau das musst du dann auch deinem Programm beibringen. Z.B.: "Wenn ein Edit-Control aktiv ist, dann soll der Standard passieren" Oder besser noch die Ausnahmen vom Standard-Verhalten der Entfernen-Taste bei bestimmten Controls (ListView). Dann musst du also nur aktiv werden, wenn ein ListView aktiv ist und dann bei dem ListView das aktuelle bzw. alle selektierten Einträge entfernen. (Wenn du die Schlagworte nun auf englisch übersetzt hast du eigentlich schon die Lösung) |
AW: Entf-Taste in mehreren Komponenten?
Genau das Gegenteil fon dem
![]() "Ich hab eine globale Behandlung für eine Taste eingebaut und wundere mich jetzt, daß die eben global vor allem Anderem abgearbeitet wird." :stupid: - entweder man macht soeinen Mist nicht global - oder man nuß eben dort einbauen, daß in einem bestimmten Moment das globale nicht gemacht wird, oder man baut die einzelne Behandlung oder auch manuell ein, wenn das bestimmt Control aktiv ist |
AW: Entf-Taste in mehreren Komponenten?
Zitat:
Zitat:
Wie wäre es, wenn ihr weniger sarkastisch, aber dafür etwas nachsichtiger hinsichtlich der Art der Fragestellung wärt? |
AW: Entf-Taste in mehreren Komponenten?
Wo?
KeyPreview :stupid: Hinten gibt es zwei Schränke (Edit und ListBox), wobei der eine Schrank (Edit) auf ein bestimmtes Ereignis (Entf) reagieren würde. Wenn jetzt aber schon die Haustür der Wohnung (Form) auf das selbe Ereignis (Entf) reagiert und das abfängt, bevor es bis zum Schrank (Edit) durchrauscht, dann wird der Schrank (Edit) natürlich nicht darauf reagieren können. - entweder der Türsteher fragt "wo willst du hin" und lässt das Ereignis eventuell einfach durch - oder er fängt es dennoch ab, aber bringt wenigstens es selber zum Edit |
AW: Entf-Taste in mehreren Komponenten?
Zitat:
Wie denkst du kann es passieren, dass beim Drücken der Entfernen-Taste ein Eintrag aus einer ListView verschwindet? Das Stichwort "KeyPreview der Form" lässt also erahnen warum das passiert. Und den TE in die richtige Richtung stubsen - ihm also die Chance zum selber erarbeiten geben - war hier bis zum 31. März 2014 eigentlich eine gängige und bewährte Praxis. Sarkasmus ist in meinem Beitrag nicht enthalten ... aber ich werde jetzt mal schauen, wie du dem TE hier hilfreich zur Seite stehst. |
AW: Entf-Taste in mehreren Komponenten?
Der 'Sarkasmus' war zu allgemein, Sir Rufo. Deinen Beitrag betrifft das nicht, und da Du dich bei meinem Rundumschlag angesprochen fühlen musstest, entschuldige ich mich.
PS: Den Beitrag habe ich gelesen, nur keinen Code. Und mutmaßen tue ich nicht, hätte ich aber können. |
AW: Entf-Taste in mehreren Komponenten?
Die Entf-Taste habe ich einem (Delete)MenuItem per ShortCut zugewiesen.
Was ich aber jetzt machen soll, um mein Problem zu lösen, ist mir noch nicht ganz glasklar... aber ich denke noch nach... |
AW: Entf-Taste in mehreren Komponenten?
Der Delete-Shortcut bezog sich dann ja vmtl. auf die ListView um dort ein entsprechendes Element rauszulöschen. Also müsstest du im KeyDown, KeyPress oder KeyUp der Form einfach nur auswerten, ob die ListView Komponente gerade den Fokus hat und dann entsprechend das selektierte / die selektieren Element(e) rauslöschen/entfernen.
|
AW: Entf-Taste in mehreren Komponenten?
Zitat:
Und was für ein Menü denn nun? Hauptmenü oder Kontextmenü nur an der ListBox? Menüs sind sogar noch globaler, als KeyPreview, da sie noch davor behandelt werden. Aber jetzt rate mal, warum solche ShortCuts normaler Weise noch ein Strg oder Alt mit drin haben. > Damit sie nicht einfach so z.B. mit irgendeiner Textbehandlung kollidieren. :stupid: Tja, und ShortCuts des Hauptmenüs haben halt vorrang vor Allem. Entweder der Menüeintrag kommt da hin, wo er sich auswirken soll (z.B. ins passende Kontextmenü) oder du deaktivierst einfach den Eintrag, wenn er nicht arbeiten soll. |
AW: Entf-Taste in mehreren Komponenten?
Zitat:
Zitat:
|
AW: Entf-Taste in mehreren Komponenten?
Zitat:
Vielleicht wäre es gut wenn Du Dir einmal die Mühe machen könntest zu beschreiben was Du hast, und was Du erreichen willst. Immer nur Informationsbröckchen zu versenden ist auf Dauer nicht so befriedigend. Gruß K-H |
AW: Entf-Taste in mehreren Komponenten?
OK, also so sieht es bei mir aus. Ich habe in meiner Anwendung unter anderem ein EditFeld (was als Suchfeld agiert), ein ListView, ein MainMenu und ein Popupmenu. In beiden Menüs ist ein MenuItem namens Löschen, diesen wird per ShortCut die ENTF-Taste zugewiesen. Nun das Problem, wenn ich in dem Edit was eingebe und gewisse Zeichen mit ENTF entfernen möchte springt die Funktion zum löschen eines Eintrages in ListView an, da ein MenuItem auf die ENTF-Taste reagiert hat. Nun die Frage wie kann die ENTF-Taste im EditFeld Zeichen löschen und im ListView die Einträge löschen, also so, dass sie voneinander nichts wissen?
Hier noch mal meine Einstellungen: Form->KeyPreview: True MainMenu->MenuItem->ShortCut: Entf PopupMenu->MenuItem->ShortCut: Entf Danke! |
AW: Entf-Taste in mehreren Komponenten?
Es gibt mehrere Lösungsansätze. Einige wurden schon beschrieben.
Man kann Menüpunkte auch deaktivieren. Sollte das ListView den Focus bekommen, kann man die Menüpunkte aktivieren (Enabled := True). Dann reagiert das "Entf" korrekt. Sobald das ListView den Focus verliert, müssen die Menüpunkte deaktiviert werden (Enabled := False). Eine TActionList kann da hilfreich sein. Zu jeder Action gibt es Ereignis on Update. Dort kann man die entsprechende Action En-/Disablen, was sich bei korrekter Zuordnung in den Menüs entsprechend auswirkt. Viele Wege führen nach Rom. Was der richtige Ansatz für dieses Problem ist, muss der TE selbst entscheiden. EDIT: Wozu eigentlich das KeyPreview der Form? Ich habe das Gefühl, dass das hier eigentlich nur stört. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:14 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