Registriert seit: 17. Nov 2005
Ort: Hamburg
1.085 Beiträge
Delphi XE2 Professional
|
AW: "Bug" in TCustomListBox.ClearSelection
13. Jan 2025, 03:01
Die Methode (in D12) sieht immer noch so aus, aber der Setter prüft:
if (Index = -1) or (Value <> Selected[Index]) then
Ich vermute, dass sie davon ausgingen, dass das geprüft wird (machen fast alle Setter in der VCL), und deshalb die Methode so gemacht haben (was allerdings von der Performance nicht so geil ist, da ständig den Setter erst für aufzurufen).
Hat der Setter diese Prüfung in deiner Delphi-Version nicht?
Danke, Redeemer.
Ja, bei mir wird das im Setter nicht geprüft.
Bei mir (Delphi XE2) sieht der Setter so aus:
Delphi-Quellcode:
procedure TCustomListBox.SetSelected( Index: Integer; Value: Boolean);
begin
if FMultiSelect then
begin
if SendMessage( Handle, LB_SETSEL, WPARAM(Value), Index) = LB_ERR then
raise EListError.CreateResFmt( {$IFNDEF CLR}@ {$ENDIF}SListIndexError, [ Index]);
end
else
if Value then
begin
if SendMessage( Handle, LB_SETCURSEL, Index, 0) = LB_ERR then
raise EListError.CreateResFmt( {$IFNDEF CLR}@ {$ENDIF}SListIndexError, [ Index])
end
else
SendMessage( Handle, LB_SETCURSEL, WPARAM(-1), 0);
end;
Aber wenn das in neueren Versionen geprüft wird, erübrigt sich ja die Frage nach einem Bug-Report.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
|
|
Zitat
|