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/)
-   -   TMS TAdvDetailDropDown: SelectFirst will nicht (https://www.delphipraxis.net/161215-tms-tadvdetaildropdown-selectfirst-will-nicht.html)

Jazzman_Marburg 22. Jun 2011 19:26

TMS TAdvDetailDropDown: SelectFirst will nicht
 
Hallo Leute!
Ich benutze von TMS die DropDown-Komponente vom Typ TAdvDetailDropDown und wundere mich gerade darüber, dass das SelectFirst (oder SelectLast, SelectNext, SelectPrevious) nicht funktioniert. Konkret befülle ich die DropDown-Liste und möchte anschließend, dass das erste (oder ein beliebiges) Item selektiert wird: stattdessen bleibt die Zeile leer. Wenn man die DropDown aufklappt, sieht man, dass alle Items exsitieren -- nur ist eben keines selektiert. So gehe ich vor:
Delphi-Quellcode:
  DropDown: TAdvDetailDropDown;
  ...

  DropDown.Items.Clear;
  DropDown.Clear;

  FOR i := 0 TO myContainer.Count -1 DO
  BEGIN

    WITH DropDown.Items.Add DO
    BEGIN
      Caption   := TParameters(myContainer.Items[i]).Name;
      ImageIndex := 24;
    END;

  END;

  DropDown.Refresh;       // egal welche Kombination:
  DropDown.SelectPrevious; // SelectFirst, SelectNext etc.
  DropDown.Refresh;       // diese Zeilen zeigen keine Wirkung

  DropDown.ItemIndex := 0; // Auch keine Wirkung
Mache ich da was falsch -- oder eher ein Bug bei TMS?

Lieben Dank & Gruß
Jazzman_Marburg

Ralf Kaiser 23. Jun 2011 12:50

AW: TMS TAdvDetailDropDown: SelectFirst will nicht
 
Hallo,

Ich habe es gerade mal ausprobiert, dein Code funktioniert soweit. Das
Delphi-Quellcode:
Select...
ist nicht nötig, es reicht das
Delphi-Quellcode:
ItemIndex := ...
.

Wenn ich den Code allerdings ein zweites Mal aufrufe wird zwar das Item in der Liste selektiert aber nicht mehr im Textteil der Komponente dargestellt.

Die Lösung ist, vor dem befüllen der Items den Itemindex auf -1 zu setzen.

Hier mal der Code der funktioniert:

Delphi-Quellcode:
procedure TForm20.InitDropDown;
var
  DropDown: TAdvDetailDropDown;
  i: Integer;
begin
  DropDown := advdtldrpdwn1;
  DropDown.ItemIndex := -1;
  DropDown.Items.Clear;
  for i := 0 to 20 - 1 do begin
    with DropDown.Items.Add do begin
      Caption := 'Item: ' + IntToStr(i)
    end;
  end;
  DropDown.ItemIndex := 4;
end;
Ich habe hier das zur Zeit neuste Update des TMS Component Packs (V6.1.1.0) installiert.

Ciao,
Ralf

Jazzman_Marburg 23. Jun 2011 15:04

AW: TMS TAdvDetailDropDown: SelectFirst will nicht
 
Zitat:

Zitat von Alfi001 (Beitrag 1107904)
Das
Delphi-Quellcode:
Select...
ist nicht nötig, es reicht das
Delphi-Quellcode:
ItemIndex := ...
.

Aha! :shock:

Ich habe es gerade probiert -- es funktionert so wie Du es sagst. Dankeschön für den Hinweis.
Wundere mich dann nur über:
a) warum/oder wozu dann das Select da ist
b) wozu das DropDown.Clear; da ist: Ich hätte ja erwartet, dass nach dem Clear die Liste leer ist, aber tatsächlich ist sie es erst nach einem Items.Clear;

Naja -- wie dem aus sei: Vielen Dank für Deinen hilfreichen Tipp!

Schönen Gruß
Jazzman


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