我要实现点击treeview的节点,右侧显示对应的窗体。代码如下:
procedure TFguide.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
   TempNode:TTreeNode;
   SelectCodeStr:string;
begin
   If TreeView1.SelectionCount=0 then abort;
   TempNode:=Treeview1.GetNodeAt(x, y);
   selectcodestr:=trim(TempNode.Text);
   if selectcodestr='xxxx' then
   begin
     Application.CreateForm(TForm1, Form1);
     form1.showmodal;
   end;
end;系统总是提示我“地址冲突”!请问是怎么回事?
另:在delphi6中自带的控件中有能生成平滑按钮的控件吗,象IE中的按钮一样?我用的是toolbar.

解决方案 »

  1.   

    补充:当点击treeview而非节点时,系统没有动作。另:如何获取窗体状态(最大,最小)。假设点击某一窗体最大按钮,其他窗体也跟着最大化。如何做?
      

  2.   

    修改成如下:
    procedure TFguide.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    var
       TempNode:TTreeNode;
       SelectCodeStr:string;
    begin
       TempNode:=Treeview1.GetNodeAt(x, y);
       if not Assigned(TempNode) then exit; 
       selectcodestr:=trim(TempNode.Text);
       if selectcodestr='xxxx' then
       begin
         Application.CreateForm(TForm1, Form1);
         form1.showmodal;
       end;
    end;
      

  3.   

    还是不行啊,我想要在点击treeview时,而不是节点时,系统没有动作发生
      

  4.   

    帮助文档可以用Delphi 的工具做的
      

  5.   

    各位仁兄,我做了一个登陆窗体。代码如下:var
      username,password,sqlstr:string ;
    begin
      username:=trim(Eusername.Text);//Eusername是用户名输入
      password:=trim(Epassword.Text);//Epassword是密码输入
      if username='' then
      begin
        showmessage('用户名不能为空!');
        Eusername.SetFocus;
        exit;
      end;
      if password='' then
      begin
        showmessage('密码不能为空!');
        Epassword.SetFocus;
       exit;
      end;
       with DataModule1.ADOQUERY1 do  //DataModule1.ADOQUERY1是我的一个数据模块中的adoquery
       begin
         close;
         sql.clear;
         sqlstr:='select * from yhxx where user=:V1 ';
         sql.Add(sqlstr);
         Parameters.ParamByName('V1').value:=username;
         try
           OPEN;
         except
           on EDatabaseError do
           messagedlg('数据库操作错误!',mtError,[mbok],0);
         end;
         if isempty then
         begin
           showmessage('无此用户名,请重新录入!');
           Eusername.SetFocus;
           exit;
         end
         else
         begin
           close;
           sql.Clear;
           sqlstr:='select * from yhxx where user=:V1 and pass=:V2';
           sql.Add(sqlstr);
           Parameters.ParamByName('V1').value:=username;
           Parameters.ParamByName('V2').value:=password;
           try
             OPEN;
           except
             on EDatabaseError do
               messagedlg('数据库操作错误!',mtError,[mbok],0);
           end;
           if isempty then
           begin
             showmessage('密码输入有误,请重新输入密码!');
             Epassword.SetFocus;
             exit;
           end
           else
           begin
             Flogin.Hide;
             if DataModule1.ADOQUERY1.FieldByName('super').AsString='否' then
             begin
               Fmain.TBuserman.Enabled:=false;
               Fmain.TBsetting.Enabled:=false;
               Fmain.N3.Enabled:=false;
             end;
             fmain.Logined:=true;
             Fmain.ShowModal;
           end;
         end;
       end;  
    end;工程文件代码是:
    program Ptag;uses
      Forms,
      Umain in 'Umain.pas' {Fmain},
      DataMudule in 'DataMudule.pas' {DataModule1: TDataModule},
      Ulogin in 'Ulogin.pas' {Flogin};
    {$R *.res}begin
      Application.Initialize;
      Application.CreateForm(TFmain, Fmain);
      Application.CreateForm(TDataModule1, DataModule1);
      Application.CreateForm(TFlogin, Flogin);
      Flogin.ShowModal;
      Application.Run;
    end.
    在我运行登陆窗体时,不论我输入密码是否正确,系统都将登陆主窗体Fmain.请问是怎么回事??急
      

  6.   

    各位大哥,怎么调用‘chm’帮助文件啊
      

  7.   

    1,调用CHM文件简单,用这个函数:
    ShellExecute(0,'open','help.chm',NIL, NIL,SW_MAXIMIZE);
    2,如果想要单击节点出现相应,用树型控件的的change事件,调用treeview.selected.text等等就可以了
      

  8.   

    看一下你的判断条件isempty
    很可能是第二个if is empty 处出的错
      

  9.   

    到底是谁在提问呢?
    回答一下第一个吧
    源码中有一处错误,没有对TempNode:=Treeview1.GetNodeAt(x, y);
    中TempNode是否为空判断
    应加入
       if TempNode=nil then
       begin
         exit;
       end;
    就可以啦
      

  10.   

    点中item才反应,代码如下
    procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    var
      pnode: TTreeNode;
    begin
      pnode := TreeView1.GetNodeAt(X, Y);
      if pnode <> nil then
      begin
      end;
    end;