使用FireMonkey和TListBox中的几个项目...
我希望能够允许/取消项目更改...
就像我们可以使用 TListView 的事件一样:OnChanging
事件 OnMouseDown 和 OnKeyDown 在更改之前触发(项目值仍然用于当前/旧选定项目,而不是新 选择)...
所以我可以存储 easill 存储当前的 ListBox ItemIndex... 并在更改后移回它.. 但这太糟糕了,肮脏,...
无论如何要做得很好?
使用FireMonkey和TListBox中的几个项目...
我希望能够允许/取消项目更改...
就像我们可以使用 TListView 的事件一样:OnChanging
事件 OnMouseDown 和 OnKeyDown 在更改之前触发(项目值仍然用于当前/旧选定项目,而不是新 选择)...
所以我可以存储 easill 存储当前的 ListBox ItemIndex... 并在更改后移回它.. 但这太糟糕了,肮脏,...
无论如何要做得很好?
您最好创建一个自定义组件以通过覆盖 SetItemIndex 方法来添加功能:
type TCustomListBox = class(TListBox)
protected
procedure SetItemIndex(Value: Integer);override;
end;
procedure Register;
...
procedure Register;
begin
RegisterControls('Custom', [TCustomListBox]);
end;
procedure TCustomListBox.SetItemIndex(Value: Integer);
begin
if <condition> then
inherited
end;
initialization
RegisterFMXClasses([TCustomListBox]);
end;
当然,您可以为条件添加一个事件。