【问题标题】:How to prevent dragging columns on a Firemonkey grid?如何防止在 Firemonkey 网格上拖动列?
【发布时间】:2013-01-11 06:36:47
【问题描述】:

有没有办法防止在 FireMonkey 2 TGrid 上拖动列标题(重新排序)?

THeader 实例是 TGrid 类的私有实例,我找不到任何其他控制它的属性。 THeaderItem.DragMode 的默认值为 dmAutomatic(出于某种深不可测的原因)。

没有创建新的 TGrid 后代,或者将 THeader 打破网格,我看不到如何将 DragMode 恢复为 dmManual。

【问题讨论】:

    标签: delphi delphi-xe3 firemonkey-fm2


    【解决方案1】:

    您可以使用 RTTI 访问 FHeader 私有字段,然后您可以从这里编写一个方法来设置 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);
    

    【讨论】:

      猜你喜欢
      • 2018-07-27
      • 1970-01-01
      • 2020-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-01
      相关资源
      最近更新 更多