Autor Téma: Zoradenie zoznamu tried podľa poľa  (Přečteno 190 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5439
  • Karma: 41
    • Verze Delphi: W10 + Delphi 10.4 professional
Zoradenie zoznamu tried podľa poľa
« kdy: 07-08-2020, 19:48:11 »
Kód: Delphi [Vybrat]
  1.   TVisualValue = class
  2.   strict private
  3.     FActual: Integer;
  4.     FComponent: TControl;
  5. ...
  6.   public
  7.     property Actual: Integer     read FActual    write FActual;
  8.     property Component: TControl read FComponent write FComponent;
  9. ...
  10.   end;
  11. FVisualValue: TList<TVisualValue>;
  12.  
Ja ju potrebujem zoradiť podľa "FVisualValue.Component.Tag".
Nedokázal som to priamo. Teraz to robím cez pomocný zoznam.
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2998
  • Karma: 135
    • Verze Delphi: D2007, XE3, DX10
Re:Zoradenie zoznamu tried pod%u013Ea po%u013Ea
« Odpověď #1 kdy: 07-08-2020, 20:05:16 »
FVisualValue: TList<TVisualValue>;

Ja ju potrebujem zoradi%u0165 pod%u013Ea "FVisualValue.Component.Tag".

nejak takhle (nezkousel jsem ani prelozit):
Kód: Delphi [Vybrat]
  1. var
  2.   VisualValueComparison: TComparison<TVisualValue>;
  3. ....
  4. VisualValueComparison :=
  5.   function(const Left, Right: TVisualValue): Integer
  6.   begin
  7.     Result := integer(Left.Component.Tag)-integer(Right.ComponentTag);
  8.   end;
  9.  
  10. FVisualValue.Sort(TComparer<TVisualValue>.Construct(VisualValueComparison));

A kdyby toho bylo hodne a casto, tak si udelat instanci TCompareru.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5439
  • Karma: 41
    • Verze Delphi: W10 + Delphi 10.4 professional
Re:Zoradenie zoznamu tried podľa poľa
« Odpověď #2 kdy: 07-08-2020, 20:51:02 »
Používam to jediný raz. Vyskúšam.
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5439
  • Karma: 41
    • Verze Delphi: W10 + Delphi 10.4 professional
Re:Zoradenie zoznamu tried podľa poľa
« Odpověď #3 kdy: 07-08-2020, 21:07:51 »
Funguje. Hneď mám jednoduchší a kratší kód.
Ďakujem.
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.