![]() |
TMS TAdvDetailDropDown: ItemIndex wird ignoriert
Hallo Gemeinde!
Vielleicht hat jemand von euch ja auch von TMS die DropDown Komponente TAdvDetailDropDown (mindestens im Component Pack enthalten). Es gibt bei dieser Komponente zwei Dinge, die mich stören, und vielleicht hat das jemand von euch auch oder gar schon gelöst:
Zum ersten Problem: Ich habe das myAdvDropDown mit einer Image-Liste verheiratet. Wenn der User die DropDown nun aufklappt sieht er die Items mit einem kleinen Icon davor. Sowiet so gut. Aber das ausgewählte (oder das Default) Item bekommt kein Icon. Merkwürdig -- oder Standard?! Das zweite Problem ist wesentlich ernster: Wenn der User zur Laufzeit nun ein Item aus der DropDown-Liste auswählt, dann ändert sich zwar der Item-Index (weil ich im Code darauf reagiere, und das funktioniert prima), aber es wird anschließend wieder nur das Default-Item angezeigt -- so als ob der User nichts gerade ausgewählt hat. Das ist nicht nur sehr unschön, sondern auch sehr verwirrend: Ich bekomme ja mit, dass sich der ItemIndex geändert hat -- nur die DropDown-Liste selbst, zeigt nicht das neue Item. Habt ihr eine Idee, was da los ist? Vielen Dank & Gruß Jazzman |
AW: TMS TAdvDetailDropDown: ItemIndex wird ignoriert
Zu 1: das scheint so "as designed" zu sein. Wäre mal einen Feature-Request wert.
Zu 2: das kann ich bei mir nicht nachvollziehen. Kannst du mal ein abgestripptes Beispiel anhängen? |
AW: TMS TAdvDetailDropDown: ItemIndex wird ignoriert
Hallo Uwe.
Ich hatte gerade das Minimal-Beispiel gebaut -- und wie der berühmte Vorführeffekt: Ich konnte es nicht mehr nachvollziehen. Also habe ich das Beispiel immer mehr erweitert, und nun habe ich das Problem eingrenzen können:
Delphi-Quellcode:
D.h. das explizite Setzen des Focus auf ein anderes Control, verursacht das Problem.
procedure TMain_Form.AdvDetailDropDown2Change(Sender: TObject);
VAR SucheKnoten : TTreeNode; KnotenLbl : String; begin KnotenLbl := ''; CASE AdvDetailDropDown2.ItemIndex OF 0 : KnotenLbl := 'Audi'; 1 : KnotenLbl := 'BMW'; 2 : KnotenLbl := 'Chrysler'; 3 : KnotenLbl := 'Daimler'; END; SucheKnoten := SearchNodeByText(TreeView, KnotenLbl); IF SucheKnoten = NIL THEN ShowMessage('Node not found!') ELSE BEGIN //TreeView.SetFocus; <== Das verursacht, dass die DropDown-Liste nicht das ausgewählte Item anzeigt SucheKnoten.Selected := True; TreeView.TopItem := SucheKnoten; SucheKnoten.MakeVisible; END; end; Ich habe die Zeile wie oben nun auskommentiert, da ich erstmal ohne sie leben kann, aber merkwürdig ist schon, oder? Vielen Dank & Gruß Jazzman |
AW: TMS TAdvDetailDropDown: ItemIndex wird ignoriert
Zitat:
Mal abgesehen davon, daß das Wechseln des Focus überhaupt hier durchaus hinterfragt werden kann. |
AW: TMS TAdvDetailDropDown: ItemIndex wird ignoriert
Ja, Deine Erklärung verstehe ich. Das war sicher keine gute Idee.
Vielen Dank! :thumb: (Ansonsten bin ich ja auch begeistert von den TMS Sachen!) Gruß Jazzman |
AW: TMS TAdvDetailDropDown: ItemIndex wird ignoriert
ItemIndex.....
Eventuell haben die TMS-Dinger auch sowas "Krankes", wie die DevExpress-Dinger. Bei DevExpress ist es so: Dort gibt es quasi neben ItemIndex noch CurItemIndex, wobei die CurXXX-Property den aktuellen Wert darstellen und bei den "normalen" Property haben die es derart "optimiert", daß dort nicht der aktuelle Wert drin steckt. :wall: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:22 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