Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Entf-Taste in mehreren Komponenten? (https://www.delphipraxis.net/180982-entf-taste-mehreren-komponenten.html)

OrNEC 4. Jul 2014 20:22

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!

Sir Rufo 4. Jul 2014 20:54

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)

himitsu 4. Jul 2014 21:02

AW: Entf-Taste in mehreren Komponenten?
 
Genau das Gegenteil fon dem http://www.delphipraxis.net/180894-f...mit-tedit.html ?

"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

Dejan Vu 4. Jul 2014 21:26

AW: Entf-Taste in mehreren Komponenten?
 
Zitat:

Zitat von Sir Rufo (Beitrag 1264500)
Genau das musst du dann auch deinem Programm beibringen.

Echt? Also ich muss hier nix beibringen, das Edit behandelt die Entf-Taste ganz normal, ohne das ich irgend etwas tue. Nur für das ListView muss ich definieren, was die Entf-Taste machen soll.

Zitat:

Zitat von himitsu (Beitrag 1264502)
"Ich hab eine globale Behandlung für eine Taste eingebaut und wundere mich jetzt, daß die eben global vor allem Anderem abgearbeitet wird." :stupid:

Wo ist denn da was global :stupid: ?

Wie wäre es, wenn ihr weniger sarkastisch, aber dafür etwas nachsichtiger hinsichtlich der Art der Fragestellung wärt?

himitsu 4. Jul 2014 21:30

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

Sir Rufo 4. Jul 2014 22:14

AW: Entf-Taste in mehreren Komponenten?
 
Zitat:

Zitat von Dejan Vu (Beitrag 1264503)
Zitat:

Zitat von Sir Rufo (Beitrag 1264500)
Genau das musst du dann auch deinem Programm beibringen.

Echt? Also ich muss hier nix beibringen, das Edit behandelt die Entf-Taste ganz normal, ohne das ich irgend etwas tue. Nur für das ListView muss ich definieren, was die Entf-Taste machen soll.

Zitat:

Zitat von himitsu (Beitrag 1264502)
"Ich hab eine globale Behandlung für eine Taste eingebaut und wundere mich jetzt, daß die eben global vor allem Anderem abgearbeitet wird." :stupid:

Wo ist denn da was global :stupid: ?

Wie wäre es, wenn ihr weniger sarkastisch, aber dafür etwas nachsichtiger hinsichtlich der Art der Fragestellung wärt?

Wie wäre es wenn du den ersten Beitrag sorgfältiger lesen würdest?

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.

Dejan Vu 5. Jul 2014 07:20

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.

OrNEC 5. Jul 2014 11:34

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...

Aviator 5. Jul 2014 16:52

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.

himitsu 5. Jul 2014 17:20

AW: Entf-Taste in mehreren Komponenten?
 
Zitat:

Zitat von OrNEC (Beitrag 1264533)
Die Entf-Taste habe ich einem (Delete)MenuItem per ShortCut zugewiesen.

Es gibt wichtige Informationen, die sollte man doch mal im Ausgangspost mit erwähnen. :wall:

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.

OrNEC 5. Jul 2014 18:05

AW: Entf-Taste in mehreren Komponenten?
 
Zitat:

Zitat von himitsu (Beitrag 1264555)
Und was für ein Menü denn nun?
Hauptmenü oder Kontextmenü nur an der ListBox?

In beiden Menüs.

Zitat:

Zitat von himitsu (Beitrag 1264555)
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.

:gruebel: ahm... wie bitte? Kapiere ich nicht.

p80286 6. Jul 2014 09:19

AW: Entf-Taste in mehreren Komponenten?
 
Zitat:

Zitat von OrNEC (Beitrag 1264559)
Zitat:

Zitat von himitsu (Beitrag 1264555)
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.

:gruebel: ahm... wie bitte? Kapiere ich nicht.

Was daran ist unverständlich?

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

OrNEC 6. Jul 2014 17:14

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!

Jasocul 7. Jul 2014 08:37

AW: Entf-Taste in mehreren Komponenten?
 
Es gibt mehrere Lösungsansätze. Einige wurden schon beschrieben.
  • Sinnvolle ShortCuts. Z.B. Strg+Entf
  • Prüfen, ob das ListView überhaupt den Focus hat
  • Das "Entf" nicht "global" behandeln
Ein weiterer Vorschlag von mir:
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