网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 手机学院 | 邮件系统 | 网络安全 | 认证考试
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Delphi教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.区分保留字跟关键字.
.Delphi开发WEBMAIL程序.
.利用Indy的TIdFtp控件实现FTP协议.
.后台调用外部程序的完美实现(De.
.比较VC和Delphi的WinTest工程.
.利用VFI提高Delphi程序的重用性.
.动态设置系统日期格式.
.将面向对象的思想贯穿始终--谈De.
.组件制作之五(托盘组件).
.理解类引用这种类型.
.在Delphi窗口中创建IE风格的菜单.
.异类的屏幕保护.
.浅谈控件(组件)制作方法一(附带.
.第三方控件使用方法.
.Delphi中的包(一):关于exe的编.
.关于读写注册表二进制数据的问题.
.如何编写SMTP邮件服务器.
.如何制作帮助文件.
.D7下的只能输入数字的控件(类似.
.泛型编程在非C++语言中的实现之探.

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

发表日期:2006-2-4

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多线程程序示例(与.net一样简单) 人气:19475
下一篇:监视资源管理器的文件变化 人气:11042
浏览全部Delphi的内容 Dreamweaver插件下载 网页广告代码 2009年新年快乐