procedure TLoginForm.BitBtn1Click(Sender: TObject);
var
password,username:string;
begin
username:=combobox1.Text; // 用户名
password:=edit1.Text; //密码
inc(itimes);
if combobox1.Items.Count>0 then
begin
   combobox1.ItemIndex:=0;
   with datamd.ADOManage do
     begin
       // 当用户名与密码正确并且输入次数少于三次时就登录成功
       if locate('用户名',username,[lopartialkey]) and locate('密码',password,[lopartialkey]) and (itimes<4) then
        begin
          close;
          sql.Clear;
          sql.Add('select * from manage where 用户名='''+username+''''+' and  密码='''+password+'''');
          open;
          application.CreateForm(TmainForm,mainform);
          mainform.StatusBar1.Panels.Items[1].Text:=username;
          mainform.StatusBar1.Panels.Items[3].Text:=fieldbyname('权限').AsString;
          if fieldbyname('权限').AsString='操作员' then
            begin
                with mainform do
                begin
                roomsetitem.Enabled:=false;
                roommanageitem.Enabled:=false;
                edwitem.Enabled:=false;
                Mdfyitem.Enabled:=false;
                adduitem.Enabled:=false;
                epitem.Enabled:=false;
                end
            end;
          loginform.Hide;
          loginform.Free;
          mainform.ShowModal;
          mainform.Free;
        end
       else
       begin
         if MessageDlg('密码密码,请重新输入',mtConfirmation, [mbYes, mbNo],0)=mrYes then
           begin
            edit1.Clear;
            edit1.SetFocus;
           end
           else
             close;
       end;
       if itimes>3 then
         begin
          showmessage('很抱歉。你没有权力使用本系统');
          application.Terminate;
         end;
     end;
end
else
 showmessage('数据库没有用户名');
end;谁能帮我解释上面的句子呢?
特别是   with.......do ..那句
还有application.CreateForm(TmainForm,mainform);
locate 这两句,上面那句为什么要建立呢?不要行吗?最好能介解释清楚点OK

解决方案 »

  1.   

    with ...do 
    begin
       
    end;
    这个里边包含的所有东西也就是with do 中间所写的对象名的方法或属性
    例如
    with edit1 do
    begin
      text:='aaa';
      enable:=false;application.CreateForm(TmainForm,mainform); 这个问题很好解释
    其实就是和创建一个MainForm的对象是一样的
    application.createform(Tmainform,mainform) 和这种写法类似
    mainform:=Tmainform.create(application);
    至于详细的说明 找本基础的书里都有
    end;
    和这个相等
    edit1.text:='aaa';
    edit1.enable:=false;
    上面的写法是为了看起来更方便 节约代码.
      

  2.   

    with ...do 
    begin
       
    end;
    这个里边包含的所有东西也就是with do 中间所写的对象名的方法或属性
    例如
    with edit1 do
    begin
      text:='aaa';
      enable:=false;
    end;
    和这个相等
    edit1.text:='aaa';
    edit1.enable:=false;
    上面的写法是为了看起来更方便 节约代码.
    application.CreateForm(TmainForm,mainform); 这个问题很好解释
    其实就是和创建一个MainForm的对象是一样的
    application.createform(Tmainform,mainform) 和这种写法类似
    mainform:=Tmainform.create(application);
    至于详细的说明 找本基础的书里都有
      

  3.   

    为什么要用到application.CreateForm(TmainForm,mainform);当我们什么时候要用到自己学代码生成,我们不可以在代事先做好吗?(事先设计好个窗口)
    你们只的基础的书是那些呢?因为我找了一些都没有解决那些是怎么样用的,能介绍几本吗?
    我是一个刚刚接触delphid什么都不懂
      

  4.   

    1.如果不用with ...do
    obj.data1 := 1;
    obj.dataw :=2;即可改为with  obj  do begin
      data1 := 1;
      data2 := 2;
    end
    2.application.CreateForm(TmainForm,mainform);作用:应用程序自己建立窗口,可以不用,在用的时候自己建立就可以了。
    Var
      mainForm: TmainForm;
    begin
      mainForm := TmainForm.Create(nil);
    end;
    3.locate是用来将cursor定位到数据集中的符合条件的记录,三个参数'用户名',username,[lopartialkey]的意思分别是,字段名, 字段值,一个查询约束(针对字符串类型的字段)帮助上有,多看帮助!
      

  5.   

    DELPHI 5开发人员指南  这是我学Delphi看的第一本书(自我感觉这本书不错,我有C和VC的基础),可以听听大家的意见!
      

  6.   

    兄弟姐妹们,大家都来说说你们刚学delphi时,是看那些书的呢?
      

  7.   

    同意welllove88(寒林) 和 IFindit(寻找其中的乐趣)的说法