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 Picklist des DBGrids öffnen... (https://www.delphipraxis.net/16149-picklist-des-dbgrids-oeffnen.html)

barnti 11. Feb 2004 14:50


Picklist des DBGrids öffnen...
 
Hallo,
ich habe eine TDBGrid-Komponente auf meinem Formular. Die Felder, die auf Lookup-Fields beruhen kann man beim Klicken auf die entsprechende Zelle öffnen.
Jetzt hätte ich gern einen Tastaturhandler, der die Picklist öffnet, wenn der Benutzer in diesem Feld die Returntaste drückt.

Auf das Tastaturevent reagieren - kein Problem. Nur: Wie weise ich diese Picklist an sich zu öffnen?

Delphi-Quellcode:
Grid.Columns[i].Picklist ... // Tja, hier komme ich nicht so recht weiter...
                             // Bei der Combobox geht das mit Dropdown...?!
Wäre dankbar für Unterstützung,

Gruß,

Barnti

barnti 11. Feb 2004 15:36

Re: Picklist des DBGrids öffnen...
 
Hallo noch einmal,

wenn es nicht auf direktem Weg geht...vielleicht kann ich ja das Klicken auf die Picklist direkt aufrufen.

So in etwa:

Delphi-Quellcode:
procedure Grid.Onkeydown(...)
begin
  if key=return then
     Grid.Mousedown ...
end
So oder so ähnlich?!

Wer kann helfen?

Danke,

Gruß,

Barnti

Memo 11. Feb 2004 16:36

Re: Picklist des DBGrids öffnen...
 
Hallo Barnti,

ich habe leider keinen direkten Weg für dein Problem, aber vieleicht reicht dir der kleine Umweg:
http://delphi.about.com/library/weekly/aa101403b.htm

Damit hast du eine eigene DBLookupCombo. Wenn du den Code dann geringfügig änderst:
Delphi-Quellcode:
 
procedure TForm1.GridKeyPress(Sender: TObject; var Key: Char);
begin
  if (key = Chr(9)) then Exit;
  if (Grid.SelectedField.FieldName = 'Anfahrtstag') then
  begin
     DBLookupComboBox1.SetFocus;
     if key=chr(13) then
      DBLookupComboBox1.DropDown else
      SendMessage(ComboBox1.Handle, WM_Char, word(Key), 0);
  end;
end;

barnti 11. Feb 2004 18:50

Re: Picklist des DBGrids öffnen...
 
Hi,

das ist nett gemeint. :)
Aber eben nicht das, was ich möchte. Die voegeschlagene Lösung verwende ich bei meinen TDBEdit-Komponenten. Da funktioniert das auch alles sehr gut. Da aber ein Grid schon über die gewünschte Funktionalität verfügt, wollte ich nicht noch einen Extraweg einschlagen. Da die Komponente bereits über die Liste verfügt und sich auf Mausklick auch öffnen lässt, gibt es sicher auch einen Weg dies auf Tastendruck zu tun...?!

Danke trotzdem! Noch mehr Ideen? Gern...

Gruß,

Barnti

barnti 18. Feb 2004 08:45

Re: Picklist des DBGrids öffnen...
 
Ah ja...

ich habe das folgende gefunden:

Borland.com: Liste im Grid öffnen

Den Tip der Seite habe ich leider noch nicht umsetzen können. Aber die Liste läßt sich auch mit der Tastenkombination 'alt+arrowdown' öffnen.

Gruß,

Barnti

eddy 18. Feb 2004 14:20

Re: Picklist des DBGrids öffnen...
 
Hallo barnti,

es funktioniert:

Code:
procedure TFAuf.dbg32ColEnter(Sender: TObject);
var
  si : integer;
  fldn : string;
begin
  if (dgEditing in dbg32.Options) then begin
    si := dbg32.SelectedIndex;
    fldn := lower(dbg32.Columns.Items[si].FieldName);
    if fldn = 'posart' then begin
      keybd_event(VK_MENU,0,0,0);
      keybd_event(VK_DOWN,0,0,0);
      keybd_event(VK_DOWN,0,KEYEVENTF_KEYUP,0);
      keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);
    end;
  end;
end;
In meiner ersten Spalte (PosArt) habe ich eine Pickliste hinterlegt. Diese kann aktiviert werden, wenn ich auf den Pfeil abwärts clicke, Alt-Down betätige oder von einer anderen Spalte kommend in diese Spalte clicke.

mfg
eddy

barnti 18. Feb 2004 19:01

Re: Picklist des DBGrids öffnen...
 
hi eddy,

jo hatte grad die Zeit das mal bei mir einzubauen. Klappt jetzt auch.

Habe allerdings das ganze auch so weit umgesetzt, dass es ohne die Maus funktioniert.

Danke + Gruß,

Barnti


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:58 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