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 OnSelect bei ComboBox programmseitig aufrufen (https://www.delphipraxis.net/19439-onselect-bei-combobox-programmseitig-aufrufen.html)

himitsu 3. Apr 2004 11:43


OnSelect bei ComboBox programmseitig aufrufen
 
Bei einem Button kann man ja mit

Delphi-Quellcode:
Button1.Click;
die in Button1.OnClick angegebene Prozedure aufrufen.



Wie geht das aber mit dem OnSelect-Ereignis in einer ComboBox?


Ich hab mir einige ComboBoxen abgeändert, leider wird aber beim Sprung der ItemIndex vom letzten zum ersten Item nicht die OnSelect-Prozedur aufgerufen.


Derzeit hab'sch das zwar mit der roten Abfrage gelöst, aber so ideal ist das nicht gerade.
Mir wär da sowas wie TComboBox(Sender).Select; lieber.
Code:
  Procedure TForm1.ComboBoxXKeyDown(Sender: TObject; Var Key: Word; Shift: TShiftState);
    Begin
      If (Key = 13) and (not TComboBox(Sender).DroppedDown) Then Begin
        If TComboBox(Sender).ItemIndex < TComboBox(Sender).Items.Count - 1 Then
          TComboBox(Sender).ItemIndex := TComboBox(Sender).ItemIndex + 1 Else TComboBox(Sender).ItemIndex := 0;
        Key := 0;
      End;
      If Key in [37, 38] Then Begin
        TComboBox(Sender).DroppedDown := True;
        If TComboBox(Sender).ItemIndex = 0 Then Begin
          TComboBox(Sender).ItemIndex := TComboBox(Sender).Items.Count - 1;
          Key := 0;
        End;
      End;
      If Key in [39, 40] Then Begin
        TComboBox(Sender).DroppedDown := True;
        If TComboBox(Sender).ItemIndex = TComboBox(Sender).Items.Count - 1 Then Begin
          TComboBox(Sender).ItemIndex := 0;
          Key := 0;
        End;
      End;
[color=red]     If Key = 0 Then
        If (TComboBox(Sender) = ComboBox1) or (TComboBox(Sender) = ComboBox2) or (TComboBox(Sender) = ComboBox3) or (TComboBox(Sender) = ComboBox4) Then ComboBox1bis4Select(nil)
        Else If TComboBox(Sender) = ComboBox7 Then ComboBox7Select(nil)
        Else If TComboBox(Sender) = ComboBox11 Then ComboBox11Select(nil)
        Else If TComboBox(Sender) = ComboBox5 Then ComboBox5Select(nil);[/color]
    End;

  Procedure TForm1.ComboBoxXKeyUp(Sender: TObject; Var Key: Word; Shift: TShiftState);
    Begin
      If Key in [13, 37..40] Then Key := 0;
    End;

SirThornberry 3. Apr 2004 12:36

Re: OnSelect bei ComboBox programmseitig aufrufen
 
So sollte es auch gehen
Delphi-Quellcode:
if Assigned(TComboBox(Sender).OnSelect) then TComboBox(Sender).OnSelect(Sender);

himitsu 3. Apr 2004 17:43

Re: OnSelect bei ComboBox programmseitig aufrufen
 
Danke.

(manchmal kommt man einfach nicht auf die einfachsten Dinge)


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