Michael Landenberger
2019-12-06 09:03:04 UTC
Hallo,
seit einiger Zeit schlage ich mich damit herum, ein mit D3 bzw. D4 erstelltes
Programm auf D10 zu portieren. Besondere Probleme machen ListViews.
Im alten Programm gibt es u. a. eine ListView-Komponente. Wegen einiger
Spezialfunktionen wurde dafür nicht TListView aus der VCL benutzt, sondern
eine neu entwickelte, von TWinControl abgeleitete Komponente. Diese Komponente
fungiert als virtuelles ListView im Report-Stil und funktioniert gut.
In neueren Delphi-Versionen unterstützt die VCL-TListView-Komponente die
benötigten Funktionen (insbesondere spezielle CustomDraw-Routinen). Also habe
ich die alte Komponente rausgeschmissen und durch ein Delphi-TListView
ersetzt. Von der Funktionalität her hat das auch geklappt (wenn man mal von
diversen Kunstgriffen absieht, die nötig waren, um bei einem TListView mit
OwnerData = True und Checkboxes = True die Checkboxen tatsächlich sichtbar zu
machen). Allerdings ist die Performance unter aller Sau. Auch auf schnellen
Rechnern ist flüssiges Scrollen kaum möglich. Mit der alten Komponente war
dagegen (bei gleicher Funktionalität) auch auf älterer Hardware flüssiges
Scrollen kein Problem.
Weiteres Problem, das allerdings nur unter 10.2 auftrat und unter 10.3 behoben
zu sein scheint: bestimmte Font-Änderungen (z. B. normal/fett) innerhalb eines
CustomDraw-Handlers funktionierten nicht. In 10.3 scheint wenigstens das zu
klappen.
Frage: was hat Embarcadero da in der TListView-Komponente verbockt und gibt es
Workarounds? Oder muss ich wieder zur selbst erstellten ListView-Komponente
zurückkehren?
Gruß
Michael
seit einiger Zeit schlage ich mich damit herum, ein mit D3 bzw. D4 erstelltes
Programm auf D10 zu portieren. Besondere Probleme machen ListViews.
Im alten Programm gibt es u. a. eine ListView-Komponente. Wegen einiger
Spezialfunktionen wurde dafür nicht TListView aus der VCL benutzt, sondern
eine neu entwickelte, von TWinControl abgeleitete Komponente. Diese Komponente
fungiert als virtuelles ListView im Report-Stil und funktioniert gut.
In neueren Delphi-Versionen unterstützt die VCL-TListView-Komponente die
benötigten Funktionen (insbesondere spezielle CustomDraw-Routinen). Also habe
ich die alte Komponente rausgeschmissen und durch ein Delphi-TListView
ersetzt. Von der Funktionalität her hat das auch geklappt (wenn man mal von
diversen Kunstgriffen absieht, die nötig waren, um bei einem TListView mit
OwnerData = True und Checkboxes = True die Checkboxen tatsächlich sichtbar zu
machen). Allerdings ist die Performance unter aller Sau. Auch auf schnellen
Rechnern ist flüssiges Scrollen kaum möglich. Mit der alten Komponente war
dagegen (bei gleicher Funktionalität) auch auf älterer Hardware flüssiges
Scrollen kein Problem.
Weiteres Problem, das allerdings nur unter 10.2 auftrat und unter 10.3 behoben
zu sein scheint: bestimmte Font-Änderungen (z. B. normal/fett) innerhalb eines
CustomDraw-Handlers funktionierten nicht. In 10.3 scheint wenigstens das zu
klappen.
Frage: was hat Embarcadero da in der TListView-Komponente verbockt und gibt es
Workarounds? Oder muss ich wieder zur selbst erstellten ListView-Komponente
zurückkehren?
Gruß
Michael