您的当前位置:我要购书网>在线阅读>Delphi/Perl

实现在virtualstringtree中编辑的标准步骤

来源:互联网  作者:我要购书网信息中心  发布:我要购物网收集整理  发布时间:2006-8-31 人气:297

1.设置TVirtualStringTree属性:

toFullRowSelect : false;

toMultiSelect:false;

toExtendedFocous:true;

toEditable:true;

editDelay:0 //如果不调用editnode,则不会CREATE EDITOR

2.实现virtualStringtree的ONClick事件: 功能:根据当前获取焦点的node,判断是否edit该node

TMMSLibraryForm版本:

procedure TMMSLibraryForm.DataTreeClick(Sender: TObject);var Column:TColumnIndex; node:PVirtualNode;begin if DataTree.FocusedNode=nil then Exit;

node:=DataTree.FocusedNode; Column:=DataTree.FocusedColumn;

if Column<>3 then DataTree.EditNode(node,Column);

end;

TSPNumbersForm版本:

procedure TSPNumbersForm.VSTreeSPnumberClick(Sender: TObject);var Column:TColumnIndex; node:PVirtualNode;begin if VSTreeSPnumber.FocusedNode=nil then Exit;

node:=VSTreeSPnumber.FocusedNode; Column:=VSTreeSPnumber.FocusedColumn;

VSTreeSPnumber.EditNode(node,Column);end;

TTestNumberForm版本:

procedure TTestNumberForm.VSTreeTestNumberClick(Sender: TObject);var Column:TColumnIndex; node:PVirtualNode;begin if VSTreeTestNumber.FocusedNode=nil then Exit;

node:=VSTreeTestNumber.FocusedNode; Column:=VSTreeTestNumber.FocusedColumn;

VSTreeTestNumber.EditNode(node,Column); end;

3.实现virtualStringtree的ONCreateEditor事件: 功能:如果editnode被调用,则执行此函数;之前设置editDelay:0,是为避免在不允许改动的node上出现editor

TMMSLibraryForm版本:

procedure TMMSLibraryForm.DataTreeCreateEditor(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; out EditLink: IVTEditLink);begin EditLink:=TStringEditLink.create('',stringlist[node.index * 5+Column])end;

TSPNumbersForm版本:

procedure TSPNumbersForm.VSTreeSPnumberCreateEditor( Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; out EditLink: IVTEditLink);begin EditLink:=TStringEditLink.create('',stringlist[node.index * 7+Column]);end;

TTestNumberForm版本:

procedure TTestNumberForm.VSTreeTestNumberCreateEditor( Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; out EditLink: IVTEditLink);begin EditLink:=TStringEditLink.create('',stringlist[node.index * 4+Column]);end;

4.实现virtualStringtree的ONNewText事件: 功能:根据获取焦点的node的column,判断值的合法性,并同时更新数据库和stringlist

TMMSLibraryForm版本:

procedure TMMSLibraryForm.DataTreeNewText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; NewText: WideString);var sql:string;begin case Column of 0: begin if (StrToInt64Def(Trim(NewText),-1)=-1) then begin ShowMessage('"'+Trim(NewText)+'"'+'does not represent a valid number!'); Exit; end;

sql:='update mmslibrary set MMS_ID='+Trim(NewText)+' where MMS_ID='+Stringlist.strings[node.Index*5];

end;

1: sql:='update mmslibrary set MMS_Type="'+Trim(NewText)+'" where MMS_ID='+Stringlist.strings[node.Index*5];

2: sql:='update mmslibrary set MMS_Smil="'+Trim(NewText)+'" where MMS_ID='+Stringlist.strings[node.Index*5];

4: sql:='update mmslibrary set MMS_Subject="'+Trim(NewText)+'" where MMS_ID='+Stringlist.strings[node.Index*5];

end;

if currentdatabase.ExecuteSqlNoQurey(sql)= 1 then ShowMessage('Save to Database sucessfully!') else ShowMessage('Error occurs while Saving to Database!');

Stringlist.strings[node.Index*5+Column]:=Trim(NewText);

DataTree.RootNodeCount:=stringlist.Count div 5 ; DataTree.Refresh;end;

TSPNumbersForm版本:

procedure TSPNumbersForm.VSTreeSPnumberNewText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; NewText: WideString);var sql:string;begin case Column of 0: begin if (StrToInt64Def(Trim(NewText),-1)=-1) then begin ShowMessage('"'+Trim(NewText)+'"'+'does not represent a valid number!'); Exit; end;

sql:='update spnumbers set SP_SPID='+Trim(NewText)+' where SP_SPID='+Stringlist.strings[node.Index*7]; end; 1: sql:='update spnumbers set SP_Name="'+Trim(NewText)+'" where SP_SPID='+Stringlist.strings[node.Index*7]; 2: sql:='update spnumbers set SP_Nameforshort="'+Trim(NewText)+'" where SP_SPID='+Stringlist.strings[node.Index*7]; 3: sql:='update spnumbers set SP_operationtype="'+Trim(NewText)+'" where SP_SPID='+Stringlist.strings[node.Index*7]; 4: sql:='update spnumbers set SP_Code="'+Trim(NewText)+'" where SP_SPID='+Stringlist.strings[node.Index*7]; 5: sql:='update spnumbers set SP_operationcode="'+Trim(NewText)+'" where SP_SPID='+Stringlist.strings[node.Index*7]; 6: sql:='update spnumbers set SP_operationName="'+Trim(NewText)+'" where SP_SPID='+Stringlist.strings[node.Index*7]; end;

if currentdatabase.ExecuteSqlNoQurey(sql)= 1 then ShowMessage('Save to Database sucessfully!') else ShowMessage('Error occurs while Saving to Database!');

Stringlist.strings[node.Index*7+Column]:=Trim(NewText);

VSTreeSPnumber.RootNodeCount:=stringlist.Count div 7 ; VSTreeSPnumber.Refresh;end;

TTestNumberForm版本:

procedure TTestNumberForm.VSTreeTestNumberNewText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; NewText: WideString);var sql:string;begin case Column of 0: begin if (StrToInt64Def(Trim(NewText),-1)=-1) then begin ShowMessage('"'+Trim(NewText)+'"'+'does not represent a valid number!'); Exit; end;

sql:='update testnumbers set TN_MSISDN='+Trim(NewText)+' where TN_MSISDN='+Stringlist.strings[node.Index*4]; end; 1: sql:='update testnumbers set TN_Imsi="'+Trim(NewText)+'" where TN_MSISDN='+Stringlist.strings[node.Index*4]; 2: sql:='update testnumbers set TN_Location="'+Trim(NewText)+'" where TN_MSISDN='+Stringlist.strings[node.Index*4]; 3: sql:='update testnumbers set TN_Description="'+Trim(NewText)+'" where TN_MSISDN='+Stringlist.strings[node.Index*4]; end;

if currentdatabase.ExecuteSqlNoQurey(sql)= 1 then ShowMessage('Save to Database sucessfully!') else ShowMessage('Error occurs while Saving to Database!');

Stringlist.strings[node.Index*4+Column]:=Trim(NewText);

VSTreeTestNumber.RootNodeCount:=stringlist.Count div 4 ; VSTreeTestNumber.Refresh;end;

相关文章
· 实现服务器端的多线程socket server
· 实现在virtualstringtree中编辑的标准步骤
· 实现了dataverifyer中script的virtu..
· 实现货币金额中文大写转换的程序
· 实现窗口从实变透明到消失这是一个例子
· 实现virtualtree的editor的功能定制之se..
· 实现lucas-kanade光流计算的delphi类
· 实现一个热键注册编辑的类
· 实现窗体自动隐藏(c代码)
· 实现回放中视频图像抓取的源码
热点文章
%>
· creating user controls
· 提高fastreplace速度 (fstrrep.pas)
· asc ii 完整码表及简介
· 自动生成拼音(汉字反查到拼音)
· sql2000无法安装的解决办法
· 浏览器集成教学 自定义浏览器
· vc++技术内幕(第四版)笔记(第7章)
· mysql5.0中文乱码解决方案
· sql server日期计算
· vc下利用ado连接access数据库
 淘宝旺旺:我要购书网上书店『图书目录
本购书中心地址: 杭州市延安路111号清波商厦南楼D座(总部) 上海市闸北区老沪太路网上购书中心(沪部),  邮编:310002
电子邮件:books@51goushu.com  经营许可证编号:沪ICP备06038574号
版权所有 2003-2008 © All Rights Reserved .购书网