Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Anfängerfrage zum Comboboxverhalten (https://www.delphipraxis.net/15753-anfaengerfrage-zum-comboboxverhalten.html)

Trush 3. Feb 2004 17:11


Anfängerfrage zum Comboboxverhalten
 
Hallo,

ich schreibe gerade an meinen ersten zwei Delphiprogrammen und bin so gut wie fertig, es fehlen eigentlich nur noch ein paar "kosmetische Korrekturen". :wink:
Aber bei einem Problem, weiß ich nicht, wie ich es lösen kann.
Ich benutze mehrere Male eine Combobox und diese soll auf Knopfdruck aufklappen. Das habe ich durch folgenden Code realisiert:
Delphi-Quellcode:
procedure TForm1.Einheit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
 begin
  if sendmessage(Einheit1.handle, CB_GETDROPPEDSTATE, 0, 0)=0 then
     SendMessage(Einheit1.Handle, CB_SHOWDROPDOWN, 1, 0);
  end;
end;
Was mich nur stört ist, dass beim Benutzen der Pfeiltasten der bisher ausgewählte Eintrag ändert. Ich hätte es gerne so wie es ist, wenn man bei einer Combobox alt + Pfeil nach unten drückt. Dazu müsste er die Pfeiltaste als beliebige andere Taste ansehen, solange die Combobox nicht aufgeklappt ist, aber wie geht das? :gruebel:

Wäre echt toll, wenn jemand die Antwort weiß
Trush

Trush 5. Mär 2004 15:58

Re: Anfängerfrage zum Comboboxverhalten
 
Hallo,

ich habe mir jetzt selber eine Lösung ausdenken können (ja, ich bin lernfähig ;))
Das oben beschriebene Problem lässt sich folgendermaßen lösen:
Delphi-Quellcode:
procedure TForm1.Einheit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if sendmessage(Einheit1.handle, CB_GETDROPPEDSTATE, 0, 0)=0 then
    begin
      if (Key=VK_LEFT) or (Key=VK_DOWN) or (Key=VK_RIGHT) or (Key=VK_UP) then
        begin
          Key:=VK_NUMPAD0; {einfach irgend eine Taste, die man an der Stelle garantiert nicht braucht.}
          SendMessage(Einheit1.Handle, CB_SHOWDROPDOWN, 1, 0);
        end;
    end;
end;
Das einzige was mich ein wenig wundert ist, dass die Prozedur auch auch auf F4 reagiert, keine Ahnung warum, aber das stört ja nicht wirklich

himitsu 5. Mär 2004 16:23

Re: Anfängerfrage zum Comboboxverhalten
 
Die Antwort mit dem F4 ist ganz einfach.

Die Combobox wird in diesem Fall nicht von deinem Code aufgeklappt.
Dein Code ist in dieser Richtung nicht Fehlerhaft.

Mit F4 wird das standardmäßig gemacht.


Kannst ja einfach mal deinen Code deaktivieren. Und du siehst, das es immernoch mit F4 geht.

Trush 5. Mär 2004 17:22

Re: Anfängerfrage zum Comboboxverhalten
 
Ach so ist das, könnte mein Code dann einfach vereinfacht werden indem ich Key:=VK_F4 einsetze? Muss ich gleich mal probieren ob das geht (spart bestimmt unglaublich viele Bits ;))

Klappt tatsächlich, stark *gg*

Danke sehr
Trush


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