1. 去掉cxGrid中台头的Box
解决:在tableview1的ptionsview的groupbybox=false;
*****************************************************************************
2.统计功能
解决:(1) tableview
tableview1的optionsviewfooter=ture
然后在cxGRid1的customize..中的summary 的footer.add需要合计的列kind= skSum
在Footer的第一列显示[合计:]
加一个Summary项,Column设为Grid的第一列,Kind设为skNone
在该Summary项的OnGetText事件中,输入:
procedure
begin
end;
在TableView的DataController->Summary->FooterSummary->OnSummary事件中,输入:
procedure
begin
end;
OptionView中属性GroupFooters设为gfAlwaysVisible并设置需要求和的列,在summary.default for Groups 下add加入需要合计的字段,column下显示fieldname 为统计字段,format为格式,kind为统计方法,position 为位子 spfooter 在分组的下面,spgroup 在分组的上面
或用cxGridPopupMenu1,在运行時可对任意数字类型列求和,方法是只需设置cxGridPopupMenu1的属性Grid为cxGrid1DBTableView1的cxGrid,
*****************************************************************************
3.去掉cxgrid 中的过滤下拉箭头
解决: 选择tableview1.optionscustomize.columnfiltering=fasle;
****************************************************************************
4.让“Drag a column here to group by that column”不显示
****************************************************************************
5.GroupPanel上面的英文[Drag a column header to group by that column]怎么可以改成中文
解决:最简单的方法是 TcxGridTableView.OnCustomDrawPartBackgrou
也可用 OnCustomDrawGroupCell:
procedure TForm1.cxGrid1DBTableView1Custo
Sender: TcxGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxCustomGridCellViewInf
begin
AViewInfo.Text:='动态设置 GroupBox 的显示内容';
ACanvas.FillRect(AViewInfo.Bounds);
end;
注:改成中文后将字段拖上去中文还是会显示,最好是设置空值
****************************************************************************
6.如何实现如下功能:
+财务部
+原材料仓库
+成品库
+冲压车间
+软件开发部
这个是部门的名称,点击加号就可以将本部门的人员情况显示出来。
解决:其实这是一个主从表关系,1:填好主表的keyfieldnames
2:填好从表的keyfieldnames
3:填好从表的 detaikeyfieldNames与masterkeyfieldnames
4: 从表的数据源一定要按与主表关联的字段排序
注:其它地方设置了主从表结构那样就显示不出来,比如设置了从表的Table或者Query的mastersource和
asterfield就会不能显示数据!如果是两个cxGrid的主从关系,这样设置就很OK了。
****************************************************************************
7.类似PageControl显示
解决:增加一个Level,将cxGrid1->RootLevelOptions->DetailTabsPosition设为dtpTop,然后相应的设置cxGrid1Level1,和cxGrid1Level2的Caption值。
****************************************************************************
8.如何设定左边几列,不能滚动
解决:使用DB Banded Table才可以实现,
在cxGrid1DBBandedTableView
Band0的Fixed=tfLeft
Band1的Fixed=tfnone
设置要锁定的字段的BandIndex=0,其它为1,就OK了。
*******************************************************************************
9. 怎样实现如EXCEL一样的,当前格=G14+G15+G16 这样的功能
解决: 举一个简单的例子:label1.Caption := cxGrid1DBTableView1.DataController.Values[2,
3]+cxGrid1DBTableView2.DataController.Values[1, 1]+cxGrid1DBTableView3.DataController.Values[1, 1];
所以不同cxGrid1DBTableView中的数据都可以给当前格,这样就做到了EXCEL中的当前格=G14+G15+G16 类似的功能。
****************************************************************************
10. 鼠标右击cxGrid1DBBandedTableView
解决:可以拖动字段,并列的可以拖成有层次感(一层层), 拖动时会显示箭头的,就是说可以拖一个字段放
****************************************************************************
11.怎样将cxGrid里的数据导入到EXCEL,HTML,XML和TEXT
解决:uses
cxExportGrid4Link; ( cxExportGrid6Link)
procedure TForm1.Button1Click(Sender: TObject);
begin
ExportGrid4ToEXCEL('d:/wang.xsl',cxGrid1,True,True);
ExportGrid4ToTEXT('d:/wang.txt',cxGrid1,True,True);
ExportGrid4ToXML('d:/wang.xml',cxGrid1,True,True);
ExportGrid4ToHTML('d:/wang.html',cxGrid1,True,True);
end;
****************************************************************************
12. 如何使满足条件的数据显示不同的颜色?
解决:
var
AYellowStyle: TcxStyle;
procedure TForm1.FormCreate(Sender: TObject);
begin
//行颜色
AYellowStyle := TcxStyle.Create(Self);
AYellowStyle.Color := $0080FFFF;
AYellowStyle.TextColor := clMaroon;
end;
procedure TForm1.cxGrid1DBBandedTableView
Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
AItem: TcxCustomGridTableItem; out AStyle: TcxStyle);
begin
if ARecord.Values[cxGrid1DBBandedTableView
AStyle := AYellowStyle;
end;
这里cxGrid1DBBandedTableView
****************************************************************************
13. 如何从外边的TXT文件导入到cxGrid?
解决:
procedure CustomizeColumns;
procedure LoadData;
procedure TForm1.CustomizeColumns;
const
cDistance = 1;
cRadius = 5;
cPeriod = 4;
cPstring = 0;
var
I: Integer;
begin
DecimalSeparator := '.';
with cxGrid1TableView2 do
for I := 0 to ColumnCount - 1 do
if I in [cDistance, cRadius] then
Columns[I].DataBinding.ValueTypeClass := TcxIntegerValueType//1,5列为Integer
else
if I in [cPstring,cPeriod] then
Columns[I].DataBinding.ValueTypeClass := TcxStringValueType//0,4列为String
else
Columns[I].DataBinding.ValueTypeClass := TcxFloatValueType;//其他为Float
end;
procedure TForm1.LoadData;
const
AFileName = '资产负债表.txt';
AHeaderLineCount = 2;
var
ARecords, AValues: TStringList;
I: Integer;
procedure InitRecord(const Str: string);
var
J: Integer;
V: Variant;
begin
AValues.CommaText := Str;
for J := 0 to AValues.Count - 1 do
if AValues.Strings[J] <> '-' then
begin
V := AValues.Strings[J];
if not VarIsNull(V) then
cxGrid1TableView2.DataController.Values[I, J] := V;
end;
end;
begin
if not FileExists(AFileName) then
raise Exception.Create('Data file not found');
ARecords := TStringList.Create;
AValues := TStringList.Create;
with ARecords do
try
LoadFromFile(AFileName);
cxGrid1TableView2.BeginUpdate;
cxGrid1TableView2.DataController.RecordCount := Count - AHeaderLineCount;
for I := 0 to Count - (AHeaderLineCount + 1) do
InitRecord(Strings[I + AHeaderLineCount]);
finally
cxGrid1TableView2.EndUpdate;
ARecords.Free;
AValues.Free;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
CustomizeColumns;
LoadData_Zcfz;
end;
****************************************************************************
14 如何改变列的颜色?
解决:
var
AFirstColumnStyle: TcxStyle;
procedure TForm1.FormCreate(Sender: TObject);
begin
//列颜色
AFirstColumnStyle := TcxStyle.Create(Self);
AFirstColumnStyle.Color := clAqua;
AFirstColumnStyle.TextColor := clBlue;
cxGrid1TableView1.Columns[1].Styles.Content := AFirstColumnStyle;
end;
****************************************************************************
15 Set as default的用法?
解决:Set as default的用法是为了解决设置参数的方便而做的,比如:
连好数据库以后,更改cxGrid1DBBandedTableView
OK,下次你再产生一个新的cxGrid1DBBandedTableView
****************************************************************************
16. 怎样使鼠标移动时,相应的单元里的文字变色?
解决:
var
FTrackItem: TcxCustomGridTableItem;
FTrackRec: TcxCustomGridRecord;
procedure TForm1.cxGrid1DBTableView1Custo
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellView
begin
if (AViewInfo.GridRecord = FTrackRec) and (AViewInfo.Item = FTrackItem) then
begin
ACanvas.Font.Color := clred; //红色字体
ACanvas.Font.Style := [fsUnderline];//带下划线
end;
end;
procedure TForm1.cxGrid1DBTableView1Mouse
Shift: TShiftState; X, Y: Integer);
var
AHitTest: TcxCustomGridHitTest;
ATrackItem: TcxCustomGridTableItem;
ATrackRec: TcxCustomGridRecord;
begin
ATrackItem := FTrackItem;
ATrackRec := FTrackRec;
AHitTest := (Sender as TcxGridSite).GridView.ViewInfo.GetHitTest(X, Y);
if AHitTest is TcxGridRecordCellHitTest
begin
FTrackItem := TcxGridRecordCellHitTest
FTrackRec := TcxGridRecordCellHitTest
end
else
begin
FTrackItem := nil;
FTrackRec := nil;
end;
if (ATrackItem <> FTrackItem) or (ATrackRec <> FTrackRec) then
begin
// Invalidate old cell
if ATrackRec <> nil then
ATrackRec.Invalidate(ATrackItem);
// Invalidate new cell
if FTrackRec <> nil then
FTrackRec.Invalidate(FTrackItem);
end;
end;
****************************************************************************
zj注:17-27转载自http://blog.csdn.net/shuaihj/article/details/6131011
17. 怎样设计多表头的cxGrid?
解决:cxGrid可以解决如下的表头:
---------------------------------
| 说明1 | 说明2 |
---------------------------------
| 字段1 | 字段2 | 字段3 | 字段4 |
| 字段5 | 字段6 |
| 字段7 | 字段8 | 字段9 |
实现这个很简单,你可以直接在上面拖动字段名,拖动时会显示箭头的,放入你想显示的位置就OK了。或者在鼠标右击cxGrid1DBBandedTableView
但是cxGrid不能实现如下的多表头形式:
---------------------------------
| 说明1 | 说明2 |
---------------------------------
| 说明3 | 说明4 | 说明5 | 说明6 |
| 字段1 | 字段2 |
| 字段3 | 字段4 | 字段5 |
不知道有谁能实现这样的多表头?
****************************************************************************
18. 在主从表结构时,当点开“+”时怎样将焦点聚在相应主表的记录上?
解决:
var
HitTest: TcxCustomGridHitTest;
procedure TColumnsShareDemoMainFor
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
// Note that the Sender parameter is a Site
HitTest := (Sender as TcxGridSite).GridView.ViewInfo.GetHitTest(X, Y);
// The point belongs to the [+]/[-] button area
if HitTest is TcxGridExpandButtonHitTe
// Move focus to the record
TcxGridExpandButtonHitTe
end;
****************************************************************************
19 CXGrid4如何展开全部节点
解决:GridDBTableView1.DataController.Groups.FullExpand;
****************************************************************************
20. cxGrid如何动态创建Items的Editor的项?
解决:cxGrid的列有一个属性,它的编辑框可以指定combobox,spinedit等.在设计时,可以为
combobox的items添加项目.请问是否可以动态创建?(run-time时由程序加入)
var
A:TDataSource:
B:TcxlookupcomboboxPropert
begin
A:=TDataSource.create(self);
B:=tcxlookupcomboboxpropert
A.Dataset:=Dic_ry_xb;//此处指定数据源。
b.listdource:=a;//此处指明字段的listsource属性。
b.keyfieldnames:='a'; //此处指明字段的关键字段
b.listfieldnames:='b'; //此处指明字段的返回值。
b.listcolumns.items[0].caption:='x; //此处默认是会建立一个字段,但是显示的表头是name,所以此处让它显示为自己想要的中午显示。
cxGrid1DBTableView1c1_sex_code.Properties:=b; //此处指明是那个字段。
end; //这个是初始化的代码
****************************************************************************
21. 拷贝文件时有进度显示
解决:
procedure TForm1.mycopyfile(sourcef,targetf:string);
var
FromF, ToF: file;
NumRead, NumWritten: Integer;
Buf: array[1..2048] of Char;
n:integer;
begin
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
mycopyfile('e:/components/tv2k-w2k.zip','c:/a.zip');
end;
****************************************************************************
22. cxGrid 设置斑马线
解决:
在TcxGridDBBandedTableView
****************************************************************************
23 根据记录内容更改字体颜色
解决:
参考范例CustomDrawTableViewDemo,
主要在TcxGridDBBandedTableView
如下代码:
if
begin //标识负数记录
end;
其中colOrderProductCount是“产品订数”列。
还要有一步就是要刷新显示
TcxGridDBBandedTableView
//tvCars.LayoutChanged(False);
TcxGridDBBandedTableView
****************************************************************************
24 用代码展开/收缩主从结构
解决:
注:tvDepartment为主表对应的TableView
****************************************************************************
25 在内置右键菜单的后面增加菜单项
解决:
首先应在Form上加一个cxGridPopupMenu控件
UseBuildInPopupMenus设为True
procedure
var
begin
end;
procedure
var
begin
end;
procedure
begin
end;
procedure
begin
end;
procedure
begin
end;
procedure
var
begin
end;
procedure
var
begin
end;
procedure
begin
end;
procedure
begin
end;
****************************************************************************
26 根据某列的值设定其它列的可编辑性
解决:
procedure
begin
end;
****************************************************************************
27 保存/恢复Grid布局
解决:
网格左上角的自定义布局按钮:
TableView-OptionsCustiomizeColumnsQuickCustomizatio
//恢复布局
IniFileName
if
else
begin
end;
//保存布局
IniFileName
if
Self.tvResult.StoreToIniFile(IniFileName); //保存为布局文件
实例:
IniFileName: string;
procedure TMainFM.FormCreate(Sender: TObject);
var i: Integer;
begin
end;
procedure TMainFM.NSaveGrdClick(Sender: TObject);
begin
end;
****************************************************************************
28保存/恢复带汇总行的布局解决:
<TableView>.StoreToIniFile('c:/Grid.ini',
<GridView>.RestoreFromIniFile(<inifilename>,True,False{or True,optional},[gsoUseSummary]);
****************************************************************************
(以下原博主转载自http://hi.baidu.com/jangill/blog/item/2cf3c782f82f0798f703a67f
****************************************************************************
28
解决:
var
begin
end;
==============================================================================
29 定位在第一行并显示内置编辑器
cxDBVerticalGrid1.FocusedRow := cxDBVerticalGrid1.Rows[0];
cxDBVerticalGrid1.ShowEdit;
==============================================================================
30 隐藏 "<No da
该文本存储在scxGridNoDataInfoText资源字符串,可以将该资源字符串的内容设为空
来隐藏该文本。
uses cxClasses, cxGridStrs;
...
cxSetResourceString(@scxGridNoDataInfoText, '');
//如果"<No da
<View>.LayoutChanged;
============================================================
31 删除应用过滤后的行
var
I: Integer;
begin
with <GridView> do
for I := 0 to ViewData.RecordCount - 1 do
begin
ViewData.Records[0].Focused := True;
DataController.DataSet.Delete;
end;
=============================================================
32 根据单元的值设置样式
解决:
procedure
begin
end;
procedure
var
begin
end;
======================================================================
TcxCustomGridTableView.FindItemByName,
TcxGridDBDataController.GetItemByFieldName
****************************************************************************
33 动态生成BandedView
解决:
var
begin
end;
****************************************************************************
34 当底层数据集为空时显示一条空记录
解决:
procedure
var
begin
end;
****************************************************************************
35 在当前View插入记录
解决:
使用FocusedView属性得到当前焦点View,用View.DataController得到对应的Data
之后使用Data
-
-
-
-
-
-
示例:
var
…
另外一种方法是使用View.DataController.DataSource.DataSet得到底层数据集后,再用数据集的方法来操作数据。
****************************************************************************
36 激活内置编辑控件
解决:
****************************************************************************
37 隐藏内置编辑控件
解决:
<aView>.Controller.EditingController.HideEdit(True);
****************************************************************************
38 移除一个分组列
解决:
****************************************************************************
39 保存修改到数据库
解决:
procedure
begin
if
and
end;
****************************************************************************
40 设置内置右键菜单
解决:
内置右键菜单包括二个菜单:cxGridStdHeaderMenu,
uses
procedure
begin
end;
procedure
var
begin
end;
****************************************************************************
41 得到选中记录的值
解决:
1)
2)
****************************************************************************
42 在GridMode禁用内置的右键Footer菜单
解决:
uses
procedure
begin
end;
****************************************************************************
43 主从表任何时候只能展开一个组
解决:
procedure
var
begin
end;
procedure
begin
end;
procedure
begin
end;
****************************************************************************
44 动态创建层次(Level)和视图(View)
解决:
var
begin
end;
****************************************************************************
45 获得Group
解决:
procedure
var
begin
ADataGroupIndex:=Sender.DataController.Groups.DataGroupIndexByRowIndex
end;
****************************************************************************
46 访问过滤之后的记录
解决:
var
begin
end;
****************************************************************************
47 获得单元的Font
解决:
cxGrid1DBTableView1.ViewInfo.RecordsViewInfo.Items[1].GetCellViewInfoByItem(
****************************************************************************
48 根据Level名称找到Level对象
解决:
function
var
begin
end;
****************************************************************************
49 指定Filter
解决:
uses
procedure
begin
end;
****************************************************************************
50 保存/恢复带汇总行的布局
<TableView>.StoreToIniFile('c:\Grid.ini', True, [gsoUseSummary]);
<GridView>.RestoreFromIniFile(<inifilename>,True,False {or True, optional},[gsoUseSummary]);
****************************************************************************
51 取消过滤时移到第一行
解决:
uses
procedure
var
begin
end;
****************************************************************************
52 排序后移到第一行
解决:
可以设置DataController.Options.FocusTopRowAfterSorting
uses
procedure
begin
end;
****************************************************************************
53 判断当前行是否第一行或最后一行
解决:
可以使用DataController的IsBOF,
<AView>.Controller.Controller.FocusedRow.IsFirst
<AView>.Controller.Controller.FocusedRow.IsLast
****************************************************************************
54 根据指定值查找记录
解决:
DataController提供了好几个方法来得到指定值对应的RecordIndex
对于Bound
****************************************************************************
55 编辑和显示Blob字段
解决:
该字段的Properties设置为BlobEdit,并将BlobPaintStyle
****************************************************************************
56 得到可见行数
解决:
<View>.ViewInfo.VisibleRecordCount
****************************************************************************
57 保存后的行设置为当前行
解决:
const
type
var
implementation
{$R
procedure
begin
end;
procedure
begin
end;
procedure
begin
end;
procedure
begin
end;
end.
****************************************************************************
58 删除记录并获得焦点
解决:
procedure
var
begin
end;
****************************************************************************
59 cxGrid的 TableView 数据排序与对应的数据集同步
解决:
COPYRIGHT BY cnCharles, ALL RIGHTS RESERVED.
delphi群: 16497064, blog: http://hi.baidu.com/cnCharles
procedure cxGridSortSyncToDataSet(tv: TcxGridDBTableView);
const
var
begin
end;
****************************************************************************
60 cxGRID怎么遍历已经选择的单元格
解决:
n := cxGrid1DBTableView1.DataController.GetSelectedCount;
n := cxGrid1DBTableView1.DataController.GetSelectedCount;
****************************************************************************
61 动态设置显示格式
解决:
procedure SetDisplayFormat(ACtrlData: TClientDataSet;
TbView: TcxGridDBTableView);
var
i: integer;
begin
if ACtrlData.RecordCount <= 0 then Exit;
try
except
end;
end;
****************************************************************************
62 给cxGRID加序号列
解决:
procedure SetRowNumber(var ASender: TcxGridTableView;
AViewInfo: TcxCustomGridIndicatorIt
uses cxLookAndFeelPainters;
procedure SetRowNumber(var ASender: TcxGridTableView; AViewInfo: TcxCustomGridIndicatorIt
var
begin
if (AViewInfo is TcxGridIndicatorHeaderIt
if not (AViewInfo is TcxGridIndicatorRowItemV
ASender.LookAndFeelPainter.DrawIndicatorImage(ACanvas,ATextRect, AIndicatorViewInfo.IndicatorKind);
end;
如果你不要行标志的话,你可以不改控件
直接注释掉这一行: ASender.LookAndFeelPainter.DrawIndicatorImage(ACanvas, ATextRect, AIndicatorViewInfo.IndicatorKind);
要标志的话,在DrawIndicatorImage 从这里跟进去(Ctrl+左键单击)
在 cxLookAndFeelPainters 单元中作如下修改:
class procedure TcxCustomLookAndFeelPain
var
begin
end;
注意,我已注明靠右的那一行, 就是去掉 DIV 2 了,
还要改一个地方:
SKIN控件目录下的dxSkinLookAndFeelPainter
TdxSkinLookAndFeelPainte
的
OffsetRect(ARect, (Left + Right - cx div 2) , (Top + Bottom - cy) div 2);
这一行,将 (Left + Right - cx div 2) 改为(Left + Right - cx) 也是去掉 div 2 就是靠右;
修改后: OffsetRect(ARect, (Left + Right - cx) , (Top + Bottom - cy) div 2);
使用
procedure TForm1.cxGrid1DBTableView1Custo
begin
end;
63 cxGrid自带过滤后数据也数据集同步
解决:
在cxGrid的View Filter事件的OnBeforeChange中写代码就可以了.
procedure TForm1.tvcxgd1DBTableView1DataC
转载自http://blog.csdn.net/aroc_lo/article/details/6312729
zj注:实际上以上内容来自邦畿千里博客:
http://blog.csdn.net/shuaihj/article/details/6131003
http://blog.csdn.net/shuaihj/article/details/6131011
http://blog.csdn.net/shuaihj/article/details/6131018
http://blog.csdn.net/shuaihj/article/details/6131024
cxGrid全文检索
1、检索指定列中的内容
【cxGridDBTableView,cxGridDBColumn】
A、设置cxGridDBTableView.OptionsBehavior.IncSearch := True;
B、设置cxGridDBTableView.OptionsBehavior.IncSearchItem := cxGridDBColumn;
C、设置cxGridDBColumn.Options.IncSearch := True;
按以上步骤完成后就可以在cxGrirdDBTableView中可检索对应cxGridDBColumn列中的数据,
当然以上是些简单的属性设置,在实际应用场景中我们可能要求更具人性化的一些操作功能,
这时候我们可以用包装的手法对上面的方法进行处理以达到想要的效果。
注意:上面的cxGridDBColumn的Properties为nil,当为Label检索无效,其它的Properties暂
未测试;上面案例不支持中文检索。
2、检索cxGrid全文信息
【cxGridDBTableView,Edit】
在Edit的Change事件中完成如下代码
procedure .edtChange(Sender: TObject);
var
i: integer;
begin
for i := 0 to cxGridDBTableView.VisibleColumnCount - 1 do
begin
end;
end;
此方法可对cxGrid的View数据进行全文搜索,因为不同于案例1中的方法,它是通过DataController
中Search对象的Locate方法来实现检索, 因此不存在案例1中的两个需要注意的问题。
CXGRID 行过滤的功能:
在第一行打 'a'回车 就可以过滤a而不用弹出自定义窗口。
**********************************************************************************
http://datasnap.5d6d.com/thread-51-1-1.html
CXGRID程序控制过滤方法: DBTable.DataController.Filter.Root.Clear; // DBTable.DataController.Filter.Root.BoolOperatorKind过滤关系【有四个值】 DBTable.DataController.Filter.Root.BoolOperatorKind:= fboOR;//或者 DBTable.DataController.Filter.Root.BoolOperatorKind:= fboAND;//并且 DBTable.DataController.Filter.Root.BoolOperatorKind:= fboNOTOR;//非或者 DBTable.DataController.Filter.Root.BoolOperatorKind:= fboNOTAND;//非并且 //DBTable.DataController.Filter.Root.AddItem(AItemlink:Tobject;Aoperatorkind:Tcxfilteroperator;Const Avalue:variant;const Adisplayvalue:STRING); 相应说明: AItemlink=列 Aoperatorkind=条件 foequal fonotequals foless folessequal fogreater fogreaterequal oflike ofnotlike Avalue=条件值 Adisplayvalue=显示值 DBTable.DataController.Filter.Active:=TRUE; //由上面可得出一个过程: PROCEDURE DATA_ADDITEM(CXDATA:TcxGridDBDataController;Index,IfInt:integer;VarStr,PlaStr:String); Var IfStr:TcxFilterOperatorKind; Begin 5: IfStr:=foGREATER; CXDATA.ROOT.AddItem(CXDATA.Columns[Index],IfStr,VarStr,PlaStr) End; 如果不通过,可能是条件有大写,把大写转成小写就OK啦 |