有没有办法防止 FireMonkey 2 TGrid 上的列标题拖动(重新排序)?
THeader 实例是 TGrid 类私有(private)的,我找不到任何其他属性来控制它。 THeaderItem.DragMode 的默认值是 dmAutomatic (出于某种难以理解的原因)。
如果没有创建新的 TGrid 后代,或者将 THeader 脱离网格,我看不到如何将 DragMode 返回到 dmManual。
最佳答案
您可以使用 RTTI 访问 FHeader
私有(private)字段,并且从这里您可以编写一个方法来设置 headers 的 DragMode。
试试这个代码
procedure SetHeaderDragMode(Grid : TGrid; DragMode:TDragMode);
Var
LCtx : TRttiContext;
LType : TRttiType;
LField: TRttiField;
LHeader: FMX.Grid.THeader;
i : Integer;
begin
LCtx:=TRttiContext.Create;
LType:=LCtx.FindType('FMX.Grid.TGrid');
if (LType<>nil) then
LField:= LType.GetField('FHeader');
if (LField<>nil) then
begin
LHeader:=THeader(LField.GetValue(Grid).AsObject);
if LHeader<>nil then
for i:=0 to LHeader.Count-1 do
LHeader.Items[i].DragMode:=DragMode;
end;
end;
像这样使用
SetHeaderDragMode(Grid1,TDragMode.dmManual);
关于delphi - 如何防止在 Firemonkey 网格上拖动列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14272984/