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 TAdvCombobox erweitern mit der Option ReturnIsTab (https://www.delphipraxis.net/171776-tadvcombobox-erweitern-mit-der-option-returnistab.html)

RWarnecke 24. Nov 2012 12:47

TAdvCombobox erweitern mit der Option ReturnIsTab
 
Hallo zusammen,

ich verusche gerade irgednwie verwzeifelt eine Option ReturnIsTab in der TAdvCombobox einzubauen. So sieht mein Quelltext aus :
Delphi-Quellcode:
type
  TBISCombobox = class(TAdvComboBox)
  private
    FReturnIsTab : Boolean;
  protected
    procedure KeyDown(var Key: Word; Shift: TShiftState); override;
  public
    { Public-Deklarationen }
  published
    property ReturnIsTab : Boolean read FReturnIsTab write FReturnIsTab default False;
  end;

{...}

procedure TBISCombobox.KeyDown(var Key: Word; Shift: TShiftState);
begin
  if (Key = VK_RETURN) and (FReturnIsTab) then
  begin
    Perform(WM_NEXTDLGCTL, 0, 0);
  end;
  inherited KeyDown(Key, Shift);
end;
Wenn ich jetzt zur Laufzeit die Komponente erstelle und die Option ReturnIsTab auf True setze, wird nicht ins nächte Eingabefeld gesprungen, warum ? Wenn ich für die Komponente das OnKeyDown-Ereignis zuweise und dort
Delphi-Quellcode:
Perform(WM_NEXTDLGCTL, 0, 0)
ausführe, funktionert der Sprung ins nächste Eingabefeld.

Wer keine AdvCombobox hat kann es mal mit der TCombobox ausprobieren. Beide sind von TCustomCombobox abgeleitet und das OnKeyDown-Ereignis steht erst in der TCustomCombobox drin.

daywalker9 24. Nov 2012 13:07

AW: TAdvCombobox erweitern mit der Option ReturnIsTab
 
Das WM_NEXTDLGCTL muss an die PArent Form geschickt werden. Du sendest es nun an deine ComboBox selber, dort sind ja aber keine weiteren Controls drin.

Delphi-Quellcode:
 f:=GetParentForm(Self);
 if assigned(f) then
   f.Perform(WM_NEXTDLGCTL, 0, 0);
Im OnKeyDown hast du wahrscheinlich auch das Perform von dem Form, wo das Control drauf lag aufgerufen.

RWarnecke 24. Nov 2012 13:31

AW: TAdvCombobox erweitern mit der Option ReturnIsTab
 
Hallo Lars,

danke für Deine schnelle Antwort. Der Hinweis mit dem GetParentForm war genau richtig. Es funktioniert jetzt einwandfrei.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:26 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 by Thomas Breitkreuz