有没有一种方法可以防止列标题在FireMonkey 2 TGrid上拖动(重新排序)?

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

除了创建一个新的TGrid后代,或者将THeader从网格中断开之外,我看不到如何将DragMode返回到dmManual。

最佳答案

您可以使用RTTI访问FHeader私有字段,并从此处可以编写一种方法来设置页眉的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/

10-12 01:41