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/)
-   -   ComBobox mit Wildecard - Suche (https://www.delphipraxis.net/160388-combobox-mit-wildecard-suche.html)

daniel71 10. Mai 2011 22:18

ComBobox mit Wildecard - Suche
 
Hallo

Ich habe versucht in einer ComboBox eine Wildcard - Suche zu implementieren.

Delphi-Quellcode:
procedure TTMainPage.CoBoBezKabelseiteKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  i: integer;
  Suchtext, Sucheingabe, SpeisungNr: String;
begin
  if ( Key <> 13) and not (Key In [37..40]) and ( Key <> 27) then //Enter, Pfeiltasten und Escape ausgeschlossen
  begin
    Sucheingabe:= CoBoBezKabelseite.Text;
    Suchtext:= '%' + CoBoBezKabelseite.Text + '%';
    SpeisungNr:= IntToStr(Integer(CoBoSpeisung.Items.Objects[CoBoSpeisung.ItemIndex]));
    with ADOQuery1 do begin
      Close;
      SQL.Text:= 'SELECT '+
                  'a_bez, nr '+
                 'FROM '+
                  '[verteilelement] '+
                 'WHERE '+
                  'a_speisung_system_nr = '''+SpeisungNr+''' '+
                 'AND '+
                  'a_bez LIKE '''+Suchtext+''' ';
      Open;
    end;
    CoBoBezKabelseite.Items.Clear;
    for i := 1 to ADOQuery1.RecordCount do
    begin
      CoBoBezKabelseite.Items.AddObject(ADOQuery1.FieldbyName('a_bez').AsString,
                               TObject(ADOQuery1.FieldbyName('nr').AsInteger));
      ADOQuery1.Next;
    end;
    CoBoBezKabelseite.ItemIndex:= 0;
    CoBoBezKabelseite.DroppedDown:= True;
    CoBoBezKabelseite.Text:= Sucheingabe;
    CoBoBezKabelseite.SelStart:= Length(CoBoBezKabelseite.Text);
  end;
  if Key = 13 then
  begin
    if CoBoBezKabelseite.ItemIndex < 1 then
      CoBoBezKabelseite.Text:= CoBoBezKabelseite.Items[CoBoBezKabelseite.ItemIndex];
  end;
end;
AutoComplete = False
Style = csDropDown

Das ganze funktioniert eigentlich recht gut.
Ein Problem habe ich aber:
Sobald ich "CoBoBezKabelseite.DroppedDown:= True" mache, verschwindet der Mauszeiger und die noch vorhanden Items können nicht per Maus ausgewählt werden.


Hat jemand eine Idee wie ich das zwei Problem lösen kann?


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