History für Combobox
Folgende beide Prozeduren erweitern Comboboxen um eine Historyfunktionalität.
Der Vorteil ist, dass man dazu keine neuen Komponenten installieren muss. Man muss dazu nur eine der beiden Prozeduren aufrufen, wann immer ein eingegebener Wert in die Drop-Down-Liste aufgenommen werden soll. Das Property Style darf nicht auf csDropDownList stehen, da man sonst keine neuen Werte eingeben kann. Interessant ist auch, wenn man das Property Style auf csSimple setzt. Dann sieht die Combobox wie ein normales Editfeld aus und man kann mit Pfeil auf/ab durch die letzten Eingaben blättern. Es gibt zwei Varianten: 1.) die Historyeinträge werden sortiert. Sobald die max. erlaubt Anzahl erreicht ist, werden keine neuen Einträge zur Liste hinzugefügt 2.) die Historyeinträge werden in der Reihenfolge des Einfügens geführt. Sollte ein neuer Eintrag schon in der Liste sein, wandert dieser auf der 1. Platz
Delphi-Quellcode:
procedure ComboboxSortedHistory(cbo:TCustomComboBox; maxitems:Integer=20);
var s : string; i : Integer; begin if cbo.Items.Count >= maxitems then Exit; s := TComboBox(cbo).Text; if (s<>'') and (cbo.Items.IndexOf(s) = -1) then begin for i := 0 to cbo.Items.Count-1 do begin if s < cbo.Items[i] then begin cbo.Items.Insert(i, s); Exit; end; end; cbo.Items.Add(s); end; end; procedure ComboboxRollingHistory(cbo:TCustomComboBox; maxitems:Integer=20); var s : string; i : Integer; begin s := TComboBox(cbo).Text; if s='' then Exit; i := cbo.Items.IndexOf(s); if i >= 0 then begin cbo.Items.Move(i, 0); cbo.ItemIndex := 0; end else begin cbo.Items.Insert(0, s); if maxitems >= 0 then while cbo.Items.Count > maxitems do cbo.Items.Delete(cbo.Items.Count-1); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:23 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