手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>delphi>列表

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

来源:互联网 作者:西部数码 时间:2008-04-09
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

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];

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!