转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
实现在virtualStringtree中编辑的标准步骤         ★★★★

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

作者:闵涛 文章来源:闵涛的学习笔记 点击数:684 更新时间:2009/4/23 18:26:23

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;


[Delphi程序]用API实现在MSN的信息提示  
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台