Autor Téma: VirtualStringTree nesprávne zoraďuje  (Přečteno 608 krát)

Offline Slavomir

  • Mladík
  • **
  • Příspěvků: 81
  • Karma: 0
    • Verze Delphi: 10.3 CE, Lazarus 2.0.10
    • RQ Money
VirtualStringTree nesprávne zoraďuje
« kdy: 15-09-2022, 07:25:16 »
Ahojte,
ak použijem v Lazaruse komponent TLazVirtualStringTree, funguje všetko dokonale a hlavne rýchlo s výnimkou radenia záznamov.
Používam procedúru OnCompareNodes, ktorá mi porovnáva dva texty. Tie položky, ktoré začínajú s diakritikou, mi však radí až na koniec všetkých ostatných  položiek.
Teda mi nedáva poradie A,Á,B,C, Č, D, Ď - ale A, B, C ... X, Y, Z, Á, Č, Ď, Š, Ť, Ž atď.
Skúšal som využiť aj vlastnosť Header.Options.hoHeaderClickAutoSort - radí takisto takisto rýchlo, ale takisto nesprávne.
Ako dosiahnuť správne radenie? Dočasným zrušením diakritiky pred porovnávaním? U slovenských a českých písmen by som to ako tak vedel, ale iné zahraničné znaky nemám šancu. :(
Vďaka za radu.
IDE - Lazarus, Delphi
Program - RQ Money

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3527
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:VirtualStringTree nesprávne zoraďuje
« Odpověď #1 kdy: 15-09-2022, 08:26:25 »
Používam procedúru OnCompareNodes, ktorá mi porovnáva dva texty.
Zrejme ty texty spatne porovnavas viz. napr. funkce CompareText vs. CompareString.

Offline Slavomir

  • Mladík
  • **
  • Příspěvků: 81
  • Karma: 0
    • Verze Delphi: 10.3 CE, Lazarus 2.0.10
    • RQ Money
Re:VirtualStringTree nesprávne zoraďuje
« Odpověď #2 kdy: 15-09-2022, 10:24:01 »
Máš pravdu, aké jednoduché! Procedúru porovnávania CompareStr som použil z webu a nevšimol som si, že sú tam možnosti ako Compare - AnsiCompare - UTF8Compare a tiež Text alebo Str.
Pri UTF8 alebo Ansi mi to radí už správne, len číslice mi zoradí až za písmená, čo je trochu nezvyklé (teda v poradí prázdny znak, A..Ž, 0..9).
Vďaka za pomoc.
IDE - Lazarus, Delphi
Program - RQ Money