1、指定单元格可读,指定不可读
F1Book好像没有指定的方法,只有自己写程序判断。在SelChange事件中判断当前选择的是否哪个,是否可以编辑只要设置整体是否可以编辑即可。
void __fastcall TForm1::F1Book61SelChange(TObject *Sender)
{//表格焦点发生变化
int r=F1Book61->Row;
int c=F1Book61->Col;
if(c==23||c==21||c==25))
{//可写
F1Book61->AllowInCellEditing=true;
F1Book61->AllowDelete=true;
}
else
{
F1Book61->AllowInCellEditing=false;
F1Book61->AllowDelete=false;
}
}
2、F1Book6在窗口的属性发生变化时的闪屏问题。
当将Form1的BorderStyle设为bsNone(即全屏)时,如果F1Book是在最前端,那么F1Book表格中的内容将丢失,并且F1Book闪烁不停。猜测闪屏可能是因为不停的重画导致的。
Form1->BorderStyle=bsNone;
3、F1Book上添加按钮、复选框、下拉列表等Object
<1>、创建
long DropDownID=F1Book61->ObjCreate(Ttf160_tlb::F1ObjDropDown,x1,y1,x2,y2);
x1-----创建的Object距离左边界有x1个单元格
x2-----创建的Object长度为x2-x1个单元格的长度
y1-----创建的Object距离上边界有y1个单元格
y2-----创建的Object长度为y2-y1个单元格的宽度(如果是下拉列表,文本框宽度为一个单元格,其他为拉出来的列表的长度)
<2>、添加元素
WideString s="1111";
F1Book61->ObjAddItem(DropDownID,s);
<3>、将Object与单元格的内容绑定
F1Book61->ObjSetCell(DropDownID,2,F1Book61->MaxRow-4,2);
4、导出到Excel
SaveDialog1->Filter="Excel(*.xls)|*.xls|All(*.*)|*.*";
SaveDialog1->DefaultExt=".xls";
if(SaveDialog1->Execute())
{
WideString s=SaveDialog1->FileName;
F1Book61->Write(s,F1FileExcel97);
}
使用此方法导出的速度比OLE导出的速度快很多,估计F1Book的这种导出是通过文件结构导出的
5、设置头部固定行
设置FixRows=2就是设置前两行(不包括最顶部数字行)在滚动时候保持不动。但好像必须MaxRow大于3才可以
6、从别的表复制
F1Book61->CopyRange(F1Book61->MaxRow-5,1,F1Book61->MaxRow,F1Book61->MaxCol,F1Book62->SS(),4,1,9,F1Book61->MaxCol);
复制的时候会复制数据以及格式,单元格上的Object不会被复制
7、给F1Book单元格赋值时偶尔产生错乱的情况
因为F1Book的TextRC[x][y]的值是宽字符指针,不能直接将AnsiString赋值给它,所以我就定义一个WideString作为中转,将WideString赋值给TextRC(这样是可以的),但当操作的单元格比较多时,单元格的内容会发生错乱,但错乱的值总是以前给单元格中某些赋过的值。
解决办法是每次中转的WideString都要重新生成,尽量不到同一个使用多次