![]() |
Delphi-Version: 2007
OnChange bei jedem Itemindex auslösen
Hallo,
das onChange Ereignis einer Combobox kann von hause aus nur manuell ausgelöst werden (s.u. CodeGear Help) Zitat:
Hintergrund: Lese aus einer Text Datei die Itemindex-Werte aus und weise sie den entsprechenden Comboboxen zu. In Abhängigkeit der Itemindex werden aber andere Comboboxen Ein/Ausgeblendet (durch onChange Prozeduren).... Danke und Gruß |
AW: OnChange bei jedem Itemindex auslösen
Rufe die Methode direkt auf.
|
AW: OnChange bei jedem Itemindex auslösen
Wenn das nicht an 1000 Stellen im Quelltext geschieht, kannst Du doch einfach die OnChange-Methode aufrufen.
Delphi-Quellcode:
ComboBox.ItemIndex := 42;
ComboBoxChange(ComboBox); |
AW: OnChange bei jedem Itemindex auslösen
Hab's auch schon direkt aufgerufen...dachte nur es gäbe eine elegantere Methode dies zu tun :-)
Trotzdem danke für die schnellen Antworten .. |
AW: OnChange bei jedem Itemindex auslösen
Klar gibts die:
Delphi-Quellcode:
type
TCBox2 = class(TComboBox) protected procedure SetItemIndex(const Value: Integer); override; published property ItemIndex: Integer read GetItemIndex write SetItemIndex; end; { TCBox2 } procedure TCBox2.SetItemIndex(const Value: Integer); begin inherited; if Assigned(Self.OnChange) then Self.OnChange(Self); end; |
AW: OnChange bei jedem Itemindex auslösen
Zitat:
Delphi-Quellcode:
Ab D2006 könnte man das auch als Class-Helper für TComboBox/TCustomComboBox bereitstellen.
procedure SetComboBoxItemIndex(ComboBox: TComboBox; NewIndex: Integer);
begin ComboBox.ItemIndex := 42; if Assigned(ComboBox.OnChange) then ComboBox.OnChange(ComboBox); end; |
AW: OnChange bei jedem Itemindex auslösen
Noch bequemer:
Delphi-Quellcode:
Somit entfällt ein Typecast, und das klappt auch unter älteren Delphi-Versionen.
type
TComboBox = class(StdCtrls.TComboBox) protected procedure SetItemIndex(const Value: Integer); override; published property ItemIndex: Integer read GetItemIndex write SetItemIndex; end; //Hier dann erst die Deklaration des Formulars mit den ComboBoxen { TComboBox } procedure TComboBox.SetItemIndex(const Value: Integer); begin inherited; if Assigned(Self.OnChange) then Self.OnChange(Self); end; |
AW: OnChange bei jedem Itemindex auslösen
:thumb:..genial..sowas meinte ich... so kann man also die Eigenschaften der Objekte zentral erweitern..
|
AW: OnChange bei jedem Itemindex auslösen
Zitat:
Offiziell sind Class Helper für gewisse Änderungen vorgesehn. Die VCL nimmt die Deklarationen, welche in der Form-Deklaration anliegen, also wenn man da vorher was ändert/ersetzt/überschreibt, dann gilt es auch da und es werden diese Komponenten mit der überschriebenen Klasse erstellt. Auch kann man sowas in andere Units auslagern und muß diese Units nur als Letztes in der Usesklausel aufnehmen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 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