我是一名初学者,有几个问题想问一下
        怎样让带标题栏的窗口不能移动
        怎样在程序中动态建立别名时得到数据库PATH,我用的是DLEPHI中标准数据库,比如说放在D:\RSGL\DATA\中,但在程序中不能用绝对的路径啊,万一以后在别的机子上安装路径不同,不就找不到了吗??

解决方案 »

  1.   

    每次启动系统都动态修改Path值。
    如数据库存于程序同一目录的的DATA文件下。
    如下代码取得路径:
      path:=ExtractFilePath(ParamStr(0))+'DATA\*****.***';
    或是找不到文件时让用户自己进行选择路径,然后保存下次运行时调用就行了
      

  2.   

    procedure TForm1.WMNCHitTest(var Msg: TMessage);
    begin
      inherited; 
      //这样移动就不可能了,右上方的按钮(最大小化,关闭)也不能用。
      Msg.Result := HTCLIENT;
    end;
      

  3.   

    加一让带标题栏的窗口不能移动的例子
    TForm1 = class(TForm)
    private
    { Private declarations }   procedure WMMmouseActivate(var Msg:TWMMouseActivate);message WM_MOUSEACTIVE;
        procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
    public
    { Public declarations }
    end;var
    Form1: TForm1;implementation
    {$R *.DFM}procedure WMMmouseActivate(var Msg:TWMMouseActivate);//此窗体失去焦点后用鼠标点击仍不能击活,需从任务栏上点击begin  msg.Result:=MA_NOACTIVATE;end;
    procedure TForm1.WMNCHitTest(var Message: TWMNCHitTest);
    begin
        inherited;或是用DefaultHandler(Message);也行  
    //注意:若元此句则点击窗体任何处均失效,如死机般!
        if Message.Result = HTCAPTION then
            Message.Result := HTNOWHERE;
    end;
      

  4.   

    //参考一下了
    //数据库文件在db目录下。。
    function getdir:string;
    var
      s:string;
    begin
      setlength(s,144);
      if getcurrentdirectory(144,pchar(s))<>0 then
        begin
          setlength(s,strlen(pchar(s)));
          result:=s+'\db';
        end;
    end;//获得数据库所在目录
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      showmessage(getdir);
    end;