Einzelnen Beitrag anzeigen

Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.085 Beiträge
 
Delphi XE2 Professional
 
#3

AW: "Bug" in TCustomListBox.ClearSelection

  Alt 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....
  Mit Zitat antworten Zitat