AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TMS TAdvDetailDropDown: ItemIndex wird ignoriert

Ein Thema von Jazzman_Marburg · begonnen am 4. Jun 2011 · letzter Beitrag vom 4. Jun 2011
Antwort Antwort
Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

Registriert seit: 2. Aug 2004
359 Beiträge
 
#1

TMS TAdvDetailDropDown: ItemIndex wird ignoriert

  Alt 4. Jun 2011, 15:19
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:
  1. Keine Bilder im zugeklappten Zustand zu sehen
  2. Wenn User ein Item auswählt, wird der ItemIndex zwar entsprechend geändert, aber das neue Item wird nicht angezeigt, sondern nur das Defualt-Item.

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
--- Delphi XE Starter, Windows 8 ---
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#2

AW: TMS TAdvDetailDropDown: ItemIndex wird ignoriert

  Alt 4. Jun 2011, 15:42
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?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

Registriert seit: 2. Aug 2004
359 Beiträge
 
#3

AW: TMS TAdvDetailDropDown: ItemIndex wird ignoriert

  Alt 4. Jun 2011, 17:05
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:
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;
D.h. das explizite Setzen des Focus auf ein anderes Control, verursacht das Problem.
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
--- Delphi XE Starter, Windows 8 ---
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#4

AW: TMS TAdvDetailDropDown: ItemIndex wird ignoriert

  Alt 4. Jun 2011, 17:27
D.h. das explizite Setzen des Focus auf ein anderes Control, verursacht das Problem.
Ich habe die Zeile wie oben nun auskommentiert, da ich erstmal ohne sie leben kann, aber merkwürdig ist schon, oder?
Eigentlich gar nicht so merkwürdig. Es ist einfach nicht die feine Art, dem Control im DropDownChange den Focus zu entziehen. Das bewirkt wahrscheinlich, daß das Control das Change nicht mehr zu Ende bringen kann. Vielleicht findest du einen anderen Event, bei dem du dem TreeView den Focus geben kannst.

Mal abgesehen davon, daß das Wechseln des Focus überhaupt hier durchaus hinterfragt werden kann.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

Registriert seit: 2. Aug 2004
359 Beiträge
 
#5

AW: TMS TAdvDetailDropDown: ItemIndex wird ignoriert

  Alt 4. Jun 2011, 17:50
Ja, Deine Erklärung verstehe ich. Das war sicher keine gute Idee.

Vielen Dank!

(Ansonsten bin ich ja auch begeistert von den TMS Sachen!)

Gruß
Jazzman
--- Delphi XE Starter, Windows 8 ---
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#6

AW: TMS TAdvDetailDropDown: ItemIndex wird ignoriert

  Alt 4. Jun 2011, 18:55
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:30 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