Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi DBGrid / Popup-Menü (https://www.delphipraxis.net/207017-dbgrid-popup-menue.html)

wurzelsepp1 17. Feb 2021 10:35

DBGrid / Popup-Menü
 
Moin Gemeinde,

ich hab da mal wieder eine erschreckend einfach Anfängerfrage:

Ich möchte ein DBGrid für eine kaufm. Anwendung komplett Tastenbedienbar machen. Dazu hätte ich gern, dass nach dem Drücken der Enter-Taste in Popup-Menü angezeigt wird. Der Schönheit halber sollte das dort stehen, wo gerade der Datensatz markiert ist.

Frage nun:
- Wie kann ich die aktuelle "Curorposition" ermitteln?

und

- Wie kann ich dem Popup-Menü den Fokus geben? (aktuell ist es so, dass der Fokus beim Grid bleibt.)

Danke für Tipps
Alex

Uwe Raabe 17. Feb 2021 10:55

AW: DBGrid / Popup-Menü
 
Zitat:

Zitat von wurzelsepp1 (Beitrag 1483172)
Dazu hätte ich gern, dass nach dem Drücken der Enter-Taste in Popup-Menü angezeigt wird.

Warum soll es denn die Enter-Taste sein? Immerhin gibt es für das Kontext-Menü ja schon eine dedizierte Taste: Menü-Taste

Aviator 17. Feb 2021 11:03

AW: DBGrid / Popup-Menü
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1483174)
Warum soll es denn die Enter-Taste sein? Immerhin gibt es für das Kontext-Menü ja schon eine dedizierte Taste: Menü-Taste

Kurzer Einwand an der Stelle: Nicht jede Tastatur hat eine solche Taste.

Vielleicht passt Enter aber auch einfach in die Bedienung des restlichen Programms. Wer weiß. :roll:


Die TPopupMenu Komponente hat eine Popup() Methode. Der kannst du die X und Y-Koordinaten übergeben. Eventuell hilft in dem Zusammenhang noch ClientToScreen() und ScreenToClient() weiter.

Poelser 17. Feb 2021 11:10

AW: DBGrid / Popup-Menü
 
Zitat:

Zitat von Aviator (Beitrag 1483176)
Kurzer Einwand an der Stelle: Nicht jede Tastatur hat eine solche Taste.

Dann nimmt man eben [Shift][F10], das geht auch.

--
LG aus dem hohen Norden, Edmund

wurzelsepp1 21. Feb 2021 21:03

AW: DBGrid / Popup-Menü
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1483174)
Warum soll es denn die Enter-Taste sein? Immerhin gibt es für das Kontext-Menü ja schon eine dedizierte Taste: Menü-Taste

Weil das Programm komplett Tastaturbedienbar sein soll - wobei "Tastatur" Pfeil- und Enter-Tasten meint.

wurzelsepp1 21. Feb 2021 21:06

AW: DBGrid / Popup-Menü
 
Zitat:

Zitat von Aviator (Beitrag 1483176)
Vielleicht passt Enter aber auch einfach in die Bedienung des restlichen Programms. Wer weiß. :roll:

Die TPopupMenu Komponente hat eine Popup() Methode. Der kannst du die X und Y-Koordinaten übergeben. Eventuell hilft in dem Zusammenhang noch ClientToScreen() und ScreenToClient() weiter.

So ist es. :)

Ja, für das Popup benötige ich ja die Koordinaten. Daher war ja auch die Ursprüngliche Frage, wie bekomme ich die Koordinaten des markierten Datensatzes im Grid?

UND

Wie setze ich den Fokus auf das Popup?

KodeZwerg 21. Feb 2021 22:15

AW: DBGrid / Popup-Menü
 
Das mit den koordinaten ist etwas tricky.
Hier (SO) schau mal rein, die akzeptierte Antwort funktioniert hoffentlich noch.

Hier eine Kopie der Lösung.

Delphi-Quellcode:
// implementation

type
  THackDBGrid=class(TDBGrid);

// Where you need the coordinates
var
  CurrRow: Integer;
  Rect: TRect;
begin
  CurrRow := THackDBGrid(DBGrid1).Row;
  Rect := THackDBGrid(DBGrid1).CellRect(ColIndexYouWant, CurrRow);
// Rect now contains the screen coordinates you need, or an empty
// rectangle if there is no cell at the col and row specified.
end;

wurzelsepp1 26. Feb 2021 12:36

AW: DBGrid / Popup-Menü
 
Zitat:

Zitat von KodeZwerg (Beitrag 1483462)
Das mit den koordinaten ist etwas tricky.
Hier (SO) schau mal rein, die akzeptierte Antwort funktioniert hoffentlich noch.

Danke, das schaue ich am WE mal an.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:35 Uhr.

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