FireMonkey 2 TGridで列ヘッダーのドラッグ(並べ替え)を防ぐ方法はありますか?
THeaderインスタンスはTGridクラス専用であり、これを制御する他のプロパティは見つかりません。THeaderItem.DragModeのデフォルトはdmAutomaticです(なんらかの理由で)。
新しいTGridの子孫を作成するか、THeaderをグリッドから切り離す以外に、DragModeをdmManualに戻す方法がわかりません。
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);