求助!StringGrid控件的OnColumnMoved怎么用? 在移动完以后取col信息吧,通过Cells[i, 0]取首行的col名称 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 感谢一楼!这个方法我有想过,但在此需求里不适用,因为实际上文档里记录的等号前是初始栏位名,等号后是更改后的栏位名,有可能在拖动时栏位名已经被改了。这样写似乎更清楚:【拖动后】(把ddd拖到aaa和bbb之间)---StringGrid---aaa ddd 2 3 eee---文档---aaa =1ddd =4bbb =2ccc =3eee =5 楼主补充:这是一个修改报表的需求,下面我把用户的需求完整的列一下吧:1.生成报表的栏位可让user自行设定。2.生成报表的栏位名称可让user自行定义。3.生成报表的栏位顺序可让user自行设定。4.以上3点的设定可以储存(SAVE)与载入(LOAD)。就是这个栏位顺序不好办,没有思路啊~~大家帮帮忙! 自己琢磨出来了,贴上来,可以给以后进入这个帖子的人参考:procedure TfReport.strgridwoColumnMoved(Sender: TObject; FromIndex, ToIndex: Integer);var ListRep : TstringList;begin ListRep := TStringList.Create; ListRep.LoadFromFile('C:\temp.ini'); //关联文件 ListRep.Insert(ToIndex+1,ListRep[FromIndex]); //从拖动前的位置insert到拖动后的位置 ListRep.Delete(FromIndex+1); //将拖动前的资料删除 ListRep.SaveToFile('C:\temp.ini'); //保存 ListRep.Free; //释放end; procedure TfReport.strgridwoColumnMoved(Sender: TObject; FromIndex, ToIndex: Integer);var ListRep : TstringList;begin ListRep := TStringList.Create; ListRep.LoadFromFile('C:\temp.ini'); //关联文件 ListRep.Insert(ToIndex+1,ListRep[FromIndex]); //从拖动前的位置insert到拖动后的位置 ListRep.Delete(FromIndex+1); //将拖动前的资料删除 ListRep.SaveToFile('C:\temp.ini'); //保存 ListRep.Free; //释放end; 我们是把拖动后的列的名称和列的宽度都按先后顺序存在ini文件里的,下次加载就按这个顺序和宽度初始化这个stringgrid 释放对象 TFrame 中如何初始化里面的控件?? 如何用外部应用程序打开指定文件? 圣诞快乐! 關於一個查詢窗口? 请教高手 如何在SQL语句里 分组后再次分组?有没有可能? --用Ado控件能连接Paradox的表吗?--- DSPACK_V233安装问题 如何用SQl语句的update更新当前的记录。 TXT文件中能不能存在 char(170)? Delphi 繁简体多次转换的问题 Delphi调用Dll返回结构体的问题?
感谢一楼!
这个方法我有想过,但在此需求里不适用,因为实际上文档里记录的等号前是初始栏位名,等号后是更改后的栏位名,有可能在拖动时栏位名已经被改了。这样写似乎更清楚:
【拖动后】(把ddd拖到aaa和bbb之间)
---StringGrid---
aaa ddd 2 3 eee---文档---
aaa =1
ddd =4
bbb =2
ccc =3
eee =5
2.生成报表的栏位名称可让user自行定义。
3.生成报表的栏位顺序可让user自行设定。
4.以上3点的设定可以储存(SAVE)与载入(LOAD)。就是这个栏位顺序不好办,没有思路啊~~大家帮帮忙!
procedure TfReport.strgridwoColumnMoved(Sender: TObject; FromIndex, ToIndex: Integer);
var ListRep : TstringList;
begin
ListRep := TStringList.Create;
ListRep.LoadFromFile('C:\temp.ini'); //关联文件
ListRep.Insert(ToIndex+1,ListRep[FromIndex]); //从拖动前的位置insert到拖动后的位置
ListRep.Delete(FromIndex+1); //将拖动前的资料删除
ListRep.SaveToFile('C:\temp.ini'); //保存
ListRep.Free; //释放
end;
var ListRep : TstringList;
begin
ListRep := TStringList.Create;
ListRep.LoadFromFile('C:\temp.ini'); //关联文件
ListRep.Insert(ToIndex+1,ListRep[FromIndex]); //从拖动前的位置insert到拖动后的位置
ListRep.Delete(FromIndex+1); //将拖动前的资料删除
ListRep.SaveToFile('C:\temp.ini'); //保存
ListRep.Free; //释放
end;