全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2302
推到 Plurk!
推到 Facebook!

密碼登入框(使用者權限選擇)-2

尚未結案
sexy613
一般會員


發表:15
回覆:24
積分:7
註冊:2002-12-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-09-20 11:06:33 IP:61.16.xxx.xxx 未訂閱
之前 sos_admin大哥 有告訴我如何用radiogroup元件去做 使用者權限的選則 但我還是有不太懂的地方 因此在此又提出 相同主題的問題 sos_admin大哥告訴我下列的設定 我想下列的設定都是在屬性質裡設的對吧! RadioGroup1.Caption :='请选择用户'; RadioGroup1.Items.Clear ; RadioGroup1.Items.Add('教师'); RadioGroup1.Items.Add('学生'); RadioGroup1.Items.Add('校长'); RadioGroup1.Items.Add('家长'); RadioGroup1.Columns :=4; RadioGroup1.ItemIndex :=0; 那麼在屬性質裡設完後 在程式碼的部分要如何修改ㄋ 是否如以下的方式修改啊 RadioGroup1.Items.Clear; while not adoquery1.Eof do begin RadioGroup1.Items.Add(adoquery1.Fieldbyname('name').AsString); adoquery1.Next; end; RadioGroup1.ItemIndex :=0; end; 如果對的話 那麼下方Add() 中的字串要打什麼啊! RadioGroup1.Items.Add(adoquery1.Fieldbyname('name').AsString);
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-09-20 11:38:55 IP:63.84.xxx.xxx 未訂閱
您好﹗    我覺得您對RadioGroup的使用有些誤解了﹐RadioGroup的Items內容可以在Design Time時設定屬性﹐也可在Run Time動態加入RadioGroup的Items內容﹐對于您所說的RadioGroup的Items屬性中Add什么內容﹐后面的adoquery1.Fieldbyname('name').AsString就是啦﹐敘述一下您的問題和需要得到的結果﹒ 參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
sos_admin
版主


發表:121
回覆:697
積分:768
註冊:2003-07-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-09-20 11:41:27 IP:61.155.xxx.xxx 未訂閱
RadioGroup1.Caption:='请选择用户';  RadioGroup1.Items.Clear; while not adoquery1.Eof do begin RadioGroup1.Items.Add(adoquery1.Fieldbyname('name').AsString); adoquery1.Next; end;    (*横向显示用*) RadioGroup1.Columns:=adoquery1.RecordCount; //自动调整  RadioGroup1 的宽度 RadioGroup1.Height:=40; RadioGroup1.Width :=adoquery1.Fieldbyname('name').DisplayWidth*adoquery1.RecordCount+adoquery1.RecordCount*10;    (* 竖向显示用  RadioGroup1.Width:=adoquery1.Fieldbyname('name').DisplayWidth+20; RadioGroup1.Height:= adoquery1.RecordCount*25; *)    combobox1.ItemIndex :=0;    大体上和您所说的一样!< > <>您的标题也违法规则哦,请起个合适的名字!< >
sexy613
一般會員


發表:15
回覆:24
積分:7
註冊:2002-12-30

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-09-25 17:30:59 IP:61.16.xxx.xxx 未訂閱
SORRY 小弟我還有RadioGroup1.Item一個難題 那就是 在下列的trim(combobox1.text) 要改成 什麼啊? 是改成 RadioGroup1.Items嗎? delphi偵測出我這一部份有問題 麻煩各位大大幫幫我吧! 另外在問一下 trim是sql的語法指令嗎?我查了一些delphi的書 都沒有提到trim這個指令耶 請問一下trim是什麼意思啊! 麻煩各位大大了! procedure TForm1.Button1Click(Sender: TObject); begin adoquery1.SQL.Clear ; adoquery1.SQL.Text :='select * from userinfo where name=''' trim(combobox1.Text) ''' and password=''' trim(edit1.Text ) ''' '; adoquery1.Close ; adoquery1.Open ;
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-09-25 18:48:01 IP:63.84.xxx.xxx 未訂閱
您好﹗    您的程式碼可改為如下﹕
procedure TForm1.Button1Click(Sender: TObject);
Var
  S : String;
begin
  S := RadioGroup1.Items.Strings[RadioGroup1.ItemIndex];
  adoquery1.SQL.Clear ;
  adoquery1.SQL.Text :='select * from userinfo where name=''' trim(S) ''' and password=''' trim(edit1.Text) '''';
  adoquery1.Close ;
  adoquery1.Open ;
end;
Trim是一個字串處理函數﹐作用是將字串前后的空白去除﹐如下例﹕
Var
  S : String;
begin
  S := Edit1.Text;
  S := Trim(S);
  Edit1.Text := S;
end;
//如果Edit中內容前后有空白的話﹐如上程式碼空白處去除
參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
sexy613
一般會員


發表:15
回覆:24
積分:7
註冊:2002-12-30

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-09-26 13:53:34 IP:61.16.xxx.xxx 未訂閱
SORRY 各位大大 小弟的程式還是有問題 小弟按照 cashxin2002 大大的教學後 radiogroup 的功能鍵總算能正常運作了 但是 在運作的同時 照理說如果輸入 的密碼不正確的話 他照理說會跑出一個 showmessage('FAIL!') 的視窗啊! 反之 如果輸入正確 有應該會跳出一個showmessage('OK') 的視窗 如下列程式 所示的 我想可能是因為我這個程式的adoquery 因該是沒有連上資料庫吧! 但是我不知道要如何更改adoconnection1 以及 adoquery1 的屬性 因為我更改 屬性時 程式就有錯誤 run 不出來 因此 小弟這一次附上了 完整的程式碼 以及 圖示 希望 各位大大救救可憐的我吧!(不好意思 一直麻煩大家) unit Unit1;    interface    uses   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,   Dialogs, StdCtrls, DB, ADODB, ExtCtrls, DBCtrls;    type   TForm1 = class(TForm)     ADOConnection1: TADOConnection;     ADOQuery1: TADOQuery;     Edit1: TEdit;     Button1: TButton;     RadioGroup1: TRadioGroup;     procedure FormCreate(Sender: TObject);     procedure Button1Click(Sender: TObject);   private     { Private declarations }   public     { Public declarations }   end;    var   Form1: TForm1;    implementation    {$R *.dfm}    procedure TForm1.FormCreate(Sender: TObject); begin SetWindowLong(Application.Handle ,GWL_EXSTYLE,WS_EX_TOOLWINDOW);    ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=Admin;Data Source='+ExtractFileDir(application.Exename)+'\test.mdb;user id=admin;Persist Security Info=False'; adoconnection1.Connected:=true; ADOQuery1.Connection :=adoconnection1; adoquery1.SQL.Clear ; adoquery1.SQL.Text :='select name from userinfo order by name'; adoquery1.Open ;    RadioGroup1.Items.Clear; while not adoquery1.Eof do begin RadioGroup1.Items.Add(adoquery1.Fieldbyname('name').AsString); adoquery1.Next; end; RadioGroup1.ItemIndex :=0; end;    procedure TForm1.Button1Click(Sender: TObject); Var   S : String; begin   S := RadioGroup1.Items.Strings[RadioGroup1.ItemIndex];   adoquery1.SQL.Clear ;   adoquery1.SQL.Text :='select * from userinfo where name='''+trim(S)+''' and password='''+trim(edit1.Text)+'''';   adoquery1.Close ;   adoquery1.Open ; if adoquery1.RecordCount>0 then showmessage('OK') else showmessage('FAIL!'); end;        end.< src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=11892135&CC=265965">
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-09-26 14:06:53 IP:63.84.xxx.xxx 未訂閱
您好﹗    錯誤的信息是什么﹖    ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
sexy613
一般會員


發表:15
回覆:24
積分:7
註冊:2002-12-30

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-09-26 14:28:26 IP:61.16.xxx.xxx 未訂閱
當我輸入完密碼 按ok 後 會出現錯誤 我把錯誤訊息擷取下來了 如下圖所示 麻煩各位了
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-09-26 14:38:58 IP:63.84.xxx.xxx 未訂閱
您好﹗    這句錯誤信息是指不能在資料集元件為Open的狀態時做這個操作﹒請檢查一下有關這部分的程式碼﹒    您确定是Button的OnClick事件引起的這個錯誤嗎﹖如果是的話﹐是否可請列出完整的此事件程式碼﹒ 參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟 發表人 - cashxin2002 於 2003/09/26 14:48:47
------
忻晟
sexy613
一般會員


發表:15
回覆:24
積分:7
註冊:2002-12-30

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-09-26 14:55:34 IP:61.16.xxx.xxx 未訂閱
你好 請問一下是不是adoquery1.RecordCount>0 這一個指令有問題啊? 程式碼如下圖 if adoquery1.RecordCount>0 then showmessage('OK') else showmessage('FAIL!'); end;
sexy613
一般會員


發表:15
回覆:24
積分:7
註冊:2002-12-30

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-09-26 15:00:12 IP:61.16.xxx.xxx 未訂閱
以下是我程式完整的程式碼 unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DB, ADODB, ExtCtrls, DBCtrls; type TForm1 = class(TForm) ADOConnection1: TADOConnection; ADOQuery1: TADOQuery; Edit1: TEdit; Button1: TButton; RadioGroup1: TRadioGroup; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin SetWindowLong(Application.Handle ,GWL_EXSTYLE,WS_EX_TOOLWINDOW); ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=Admin;Data Source=' ExtractFileDir(application.Exename) '\test.mdb;user id=admin;Persist Security Info=False'; adoconnection1.Connected:=true; ADOQuery1.Connection :=adoconnection1; adoquery1.SQL.Clear ; adoquery1.SQL.Text :='select name from userinfo order by name'; adoquery1.open ; RadioGroup1.Items.Clear; while not adoquery1.Eof do begin RadioGroup1.Items.Add(adoquery1.Fieldbyname('name').AsString); adoquery1.Next; end; RadioGroup1.ItemIndex :=0; end; procedure TForm1.Button1Click(Sender: TObject); Var S : String; begin S := RadioGroup1.Items.Strings[RadioGroup1.ItemIndex]; adoquery1.SQL.Clear ; adoquery1.SQL.Text :='select * from userinfo where name=''' trim(S) ''' and password=''' trim(edit1.Text) ''''; adoquery1.Close ; adoquery1.Open ; if adoquery1.RecordCount>0 then showmessage('OK') else showmessage('FAIL!'); end; end. 麻煩你了
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-09-26 15:22:45 IP:63.84.xxx.xxx 未訂閱
您好﹗    adoquery1.RecordCount>0 這一句語法沒有問題﹐Access資料庫有支援RecordCount﹒    我看了您的程式碼﹐應該沒有問題﹐請您注意觀察一下﹐出現此句錯誤信息時﹐程式碼停在哪一行﹖    ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
sexy613
一般會員


發表:15
回覆:24
積分:7
註冊:2002-12-30

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-09-26 15:35:53 IP:61.16.xxx.xxx 未訂閱
我這個程式 在run 時並沒有檢查出錯誤 只是當我輸入完密碼 按ok時 他就跑出錯誤了 錯誤的內容 就如同我上面上傳的圖示 所示 且 他在顯示出錯誤後 並沒有指出我是哪一行錯耶????
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-09-26 15:46:23 IP:63.84.xxx.xxx 未訂閱
您好﹗    從您貼出的程式碼部分來看并沒有問題﹐可能是別的事件中有影響的部分﹐是不是把程式檔上傳﹐我再幫你找一下是哪里的問題﹒    ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#15 引用回覆 回覆 發表時間:2003-09-26 15:47:07 IP:202.39.xxx.xxx 未訂閱
procedure TForm1.Button1Click(Sender: TObject);
Var
  S : String;
begin
  S := RadioGroup1.Items.Strings[RadioGroup1.ItemIndex];
  adoquery1.SQL.Clear ; // 這行有問題, 不能在 ADOQuery1 是 open 的狀態, 解決方式是將 ADOQuery1.Close 移到這行之前
  adoquery1.SQL.Text :='select * from userinfo where name='''   trim(S)   ''' and password='''   trim(edit1.Text) '''';
  adoquery1.Close ;
  adoquery1.Open ;
  if adoquery1.RecordCount>0 then
    showmessage('OK')
  else
    showmessage('FAIL!');
end;
--- 歡迎光臨 KTop 研究院
sexy613
一般會員


發表:15
回覆:24
積分:7
註冊:2002-12-30

發送簡訊給我
#16 引用回覆 回覆 發表時間:2003-09-26 15:53:10 IP:61.16.xxx.xxx 未訂閱
喔 真是太感謝你了http://delphi.ktop.com.tw/loadfile.php?TOPICID=11894639&CC=266021 對了 如果可以的話 你能順便當我加入一個計數器 到這個程式中 用途是 如果密碼輸入三次以上錯誤 就跳出這個程式 抱歉 真的是太麻煩你了嗎?
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#17 引用回覆 回覆 發表時間:2003-09-26 15:57:14 IP:63.84.xxx.xxx 未訂閱
小弟習慣的寫法也是先將資料集元件Close﹐然后下SQL﹐再Open    但剛才小弟也有測試過沒有先Close﹐直接下SQL.Clear和SQL語法﹐再把資料集元件Close和Open﹐也是可行的﹒    ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#18 引用回覆 回覆 發表時間:2003-09-26 15:57:52 IP:61.221.xxx.xxx 未訂閱
您好,請你將 procedure TForm1.Button1Click(Sender: TObject); Var S : String; begin S := RadioGroup1.Items.Strings[RadioGroup1.ItemIndex]; adoquery1.SQL.Clear ; adoquery1.SQL.Text :='select * from userinfo where name=''' trim(S) ''' and password=''' trim(edit1.Text) ''''; adoquery1.Close ; adoquery1.Open ; if adoquery1.RecordCount>0 then showmessage('OK') else showmessage('FAIL!'); end; 改為 procedure TForm1.Button1Click(Sender: TObject); Var S : String; begin S := RadioGroup1.Items.Strings[RadioGroup1.ItemIndex]; adoquery1.Close ; adoquery1.SQL.Clear ; adoquery1.SQL.Text :='select * from userinfo where name=''' trim(S) ''' and password=''' trim(edit1.Text) ''''; adoquery1.Open ; if adoquery1.RecordCount>0 then showmessage('OK') else showmessage('FAIL!'); end; 應該是adoquery1處於open狀態故無法執行adoquery1.SQL.Clear ; 將adoquery1.Close ;移到上面應該就可以了 試試看
sexy613
一般會員


發表:15
回覆:24
積分:7
註冊:2002-12-30

發送簡訊給我
#19 引用回覆 回覆 發表時間:2003-09-26 17:13:32 IP:61.16.xxx.xxx 未訂閱
YA 我終於ok 啦! 太感激你們了! 多謝各位大大的熱血幫助 但是 最後 我想讓程式更完美一點 因此 最後再多問一個問題 那就是 如何讓它 在輸入三次錯誤的密碼後 跑出一個警告視窗過3秒左右 自動關閉程式啊! 我聽我們老師說 要加入一個計數器的物件去計數它 請問要如何做到啊! (我保證這是密碼登入框的最後一個問題)
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#20 引用回覆 回覆 發表時間:2003-09-27 09:26:39 IP:63.84.xxx.xxx 未訂閱
您好﹗    小弟將其的程式碼略為改動﹐Edit1元件的PasswordChar屬性設為*﹐再加上以下紅色部分﹐即為您所說的計數器功能﹐利用一個數值變數記錄輸入錯誤的次數﹐若輸入錯誤三次則中止程式﹒
unit Unit1;    interface    uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, DB, ADODB;    type
  TForm1 = class(TForm)
    ADOConnection1: TADOConnection;
    ADOQuery1: TADOQuery;
    RadioGroup1: TRadioGroup;
    Edit1: TEdit;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;    var
  Form1: TForm1;
  I : Integer;//宣告一個變數﹐記錄錯誤的次數    implementation    {$R *.dfm}    procedure TForm1.FormCreate(Sender: TObject);
begin
  I := 1;//在程式啟動﹐即給孌數I設定初始值為1
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('Select * From Userinfo');
  ADOQuery1.Open;      RadioGroup1.Items.Clear;
  While not ADOQuery1.Eof do
    begin
      RadioGroup1.Items.Add(ADOQuery1.FieldByName('Name').AsString);
      ADOQuery1.Next;
    end;
  RadioGroup1.ItemIndex := 0;
end;    procedure TForm1.Button1Click(Sender: TObject);
Var
  Str : String;
begin
  Str := RadioGroup1.Items.Strings[RadioGroup1.ItemIndex];
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('Select * From Userinfo Where ');
  ADOQuery1.SQL.Add('Name=''' Trim(Str) ''' and ');
  ADOQuery1.SQL.Add('Password=''' Trim(Edit1.Text) ''' ');
  ADOQuery1.Open;
  if ADOQuery1.RecordCount > 0 then
    begin
      ShowMessage('使用者名稱和密碼正确' #10#13 '使用者名稱是﹕' ''' S ''' '﹐密碼是﹕' Edit1.Text);
      I := 1;//密碼輸入正确后﹐將計數器孌數歸為1值
      Edit1.Clear;
      Edit1.SetFocus;
    end
  else
    begin
      if I < 3 then //如果變數I小于3
        begin
          ShowMessage('使用者名稱和密碼輸入錯誤第 ' IntToStr(I) ' 次' #10#13 '請重新輸入');
          I := I 1;//變數I加1﹐增加一筆輸入錯誤的次數
          Edit1.Clear;
          Edit1.SetFocus;
        end
      else
        begin
          ShowMessage('使用者名稱和密碼輸入錯誤三次﹐程式將被中止');
          Application.Terminate;
          //當I=3時﹐亦輸入次數已經3次﹐則秀出訊息﹐并中止程式
        end;
    end;
end;    procedure TForm1.FormActivate(Sender: TObject);
begin
  Edit1.SetFocus;//程式啟動后﹐使Edit1成為最初的焦點
end;    end.
參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟 發表人 - cashxin2002 於 2003/09/27 09:31:16
------
忻晟
sexy613
一般會員


發表:15
回覆:24
積分:7
註冊:2002-12-30

發送簡訊給我
#21 引用回覆 回覆 發表時間:2003-09-27 13:10:46 IP:61.16.xxx.xxx 未訂閱
哇你真的是太強了 實在是太感激你了 但是 可以請教一下 以下的指令嗎 ? 是什麼意思啊?---> (+#10#13+)  另外 以下的指令的使用者名稱是會顯現出你在radiogroup裡所選擇的 項目對吧! 可是我執行後 所顯現出的則是裡面的 +S+ 耶 最後 問一下 如果你分別做了2個form 一個是監控者的 另一個是使用者的 試問要如何串起啊? 譬如你以選擇了以監控者的身分進入 那麼  要如何呼叫監控者的form啊?    ShowMessage('使用者名稱和密碼正确'+#10#13+'使用者名稱是﹕'+'''+S+'''+'﹐密碼是﹕'+Edit1.Text);    在此對在座的大哥大姊獻上12萬分的感激 感謝你們細心的指導
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#22 引用回覆 回覆 發表時間:2003-09-27 14:29:34 IP:63.84.xxx.xxx 未訂閱
引言: 哇你真的是太強了 實在是太感激你了 但是 可以請教一下 以下的指令嗎 ? 是什麼意思啊?---> ( #10#13 ) 另外 以下的指令的使用者名稱是會顯現出你在radiogroup裡所選擇的 項目對吧! 可是我執行後 所顯現出的則是裡面的 S 耶 最後 問一下 如果你分別做了2個form 一個是監控者的 另一個是使用者的 試問要如何串起啊? 譬如你以選擇了以監控者的身分進入 那麼 要如何呼叫監控者的form啊? ShowMessage('使用者名稱和密碼正确' #10#13 '使用者名稱是﹕' ''' S ''' '﹐密碼是﹕' Edit1.Text); 在此對在座的大哥大姊獻上12萬分的感激 感謝你們細心的指導 < face="Verdana, Arial, Helvetica"> 您好﹗ #10#13的作用是回車﹐也就是另起一行的意思﹐左右的加號的作用是把前后的字串連接起來﹐您可以在ShowMessgage的時候看到其內容﹐使用者名稱是﹕' ''' S ''' '﹐密碼是﹕' Edit1.Text這一句并沒有跟在使用者名稱和密碼正确之后﹐而是顯示在下一行﹐這就是#10#13的作用﹒ 請您把ShowMessage這一句改為如下﹕ ShowMessage('使用者名稱和密碼正确' #10#13 '使用者名稱是﹕' '' Str '' '﹐密碼是﹕' Edit1.Text); //筆誤﹐變數名稱是Str﹐而不是S﹐另外﹐請再去掉一對單引號即可﹒ //也可直接以字串變數來指定﹐如下﹕ ShowMessage('使用者名稱和密碼正确' #10#13 '使用者名稱是﹕' Str '﹐密碼是﹕' Edit1.Text); 至于您的第三個問題﹐要參考您的做法為何﹐比如說您是直接指定兩個Form(Form2和Form3)﹐分別對應用RadioGroup1選擇中的監控者和使用者﹐通過判斷再選擇開啟Form2還是Form3﹐寫一段例子如下(截自我上篇的範例中Button1的OnClick事件)﹐請參考紅色處﹕
procedure TForm1.Button1Click(Sender: TObject);
Var
  Str : String;
begin
  Str := RadioGroup1.Items.Strings[RadioGroup1.ItemIndex];
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('Select * From Userinfo Where ');
  ADOQuery1.SQL.Add('Name=''' Trim(Str) ''' and ');
  ADOQuery1.SQL.Add('Password=''' Trim(Edit1.Text) ''' ');
  ADOQuery1.Open;
  if ADOQuery1.RecordCount > 0 then
    begin
      ShowMessage('使用者名稱和密碼正确' #10#13 '使用者名稱是﹕' '' S '' '﹐密碼是﹕' Edit1.Text);
      I := 1;//密碼輸入正确后﹐將計數器孌數歸為1值
      if Str = '監控者' then
        Form2.ShowModal;
      if Str = '使用者' then
        Form3.ShowModal;
      Edit1.Clear;
      Edit1.SetFocus;
      //這兩句(標注藍色)可以刪除了﹐因為焦點已經轉到其它的Form中
    end
  else
    begin
      if I < 3 then //如果變數I小于3
        begin
          ShowMessage('使用者名稱和密碼輸入錯誤第 ' IntToStr(I) ' 次' #10#13 '請重新輸入');
          I := I 1;//變數I加1﹐增加一筆輸入錯誤的次數
          Edit1.Clear;
          Edit1.SetFocus;
        end
      else
        begin
          ShowMessage('使用者名稱和密碼輸入錯誤三次﹐程式將被中止');
          Application.Terminate;
          //當I=3時﹐亦輸入次數已經3次﹐則秀出訊息﹐并中止程式
        end;
    end;
end;
參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟[/blue] 發表人 - cashxin2002 於 2003/09/27 14:59:03
------
忻晟
sexy613
一般會員


發表:15
回覆:24
積分:7
註冊:2002-12-30

發送簡訊給我
#23 引用回覆 回覆 發表時間:2003-09-29 17:13:41 IP:61.16.xxx.xxx 未訂閱
Sorry 各位大大可以幫幫小弟我看看一下 我的程式哪邊出錯 我有小改一下 可是改完後就出錯了 以下是我的密碼登入框 程式連結: http://delphi.ktop.com.tw/loadfile.php?TOPICID=11938146&CC=266994
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#24 引用回覆 回覆 發表時間:2003-09-29 17:27:35 IP:63.84.xxx.xxx 未訂閱
引言: Sorry 各位大大可以幫幫小弟我看看一下 我的程式哪邊出錯 我有小改一下 可是改完後就出錯了 以下是我的密碼登入框 程式連結: http://delphi.ktop.com.tw/loadfile.php?TOPICID=11938146&CC=266994
您好! 我幫您看了一下, Run Time沒有問題發生, 請問您的出錯信息是什么? ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
sexy613
一般會員


發表:15
回覆:24
積分:7
註冊:2002-12-30

發送簡訊給我
#25 引用回覆 回覆 發表時間:2003-09-29 17:34:34 IP:61.16.xxx.xxx 未訂閱
問題如下圖所示     麻煩你了 多謝
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#26 引用回覆 回覆 發表時間:2003-09-29 17:59:22 IP:63.84.xxx.xxx 未訂閱
您好!    我在Run的時候, 并沒有出現這樣的錯誤啊. 我剛才再仔細看了一下您的程式碼部分, 我确定沒有問題, 實在不清楚這個問題所在, 您是不是重開一個專案, 或者新建一個新的資料庫再試試. class="code">if ADOQuery1.RecordCount > 0 then begin ShowMessage('使用者帳號和密碼正確' #10#13 '使用者帳號是:' Edit1.Text ', 密碼是﹕' Edit2.Text); ... ... ===================== 努力,相信會獲得美麗! 忻晟 發表人 - cashxin2002 於 2003/09/29 18:19:38
------
忻晟
sexy613
一般會員


發表:15
回覆:24
積分:7
註冊:2002-12-30

發送簡訊給我
#27 引用回覆 回覆 發表時間:2003-09-29 18:52:36 IP:61.16.xxx.xxx 未訂閱
YA ! 我ok 了 不知為什麼 從開機後 又可以run 了 對了 我想問你一下 我這個密碼登入框是另外開一個專案做的 所以 如果 要跟另外舊的form 並在一起的話 是不是只要把我這個密碼登入框裡所有的檔都更名複製過去就行了嗎? (要更名是因為我心的檔案會跟另一個舊的檔覆蓋到 如:Unit1.~pas) 還是說 要開啟我舊的專案 然後 再裡頭建一個新專案 如:舊專案裡有form1 form2 form3 三個form 我再建一個新form 也就是form4 恩 不知道你是否聽的懂我的描述 =^^=
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#28 引用回覆 回覆 發表時間:2003-09-29 19:42:43 IP:63.84.xxx.xxx 未訂閱
引言: YA ! 我ok 了 不知為什麼 從開機後 又可以run 了 對了 我想問你一下 我這個密碼登入框是另外開一個專案做的 所以 如果 要跟另外舊的form 並在一起的話 是不是只要把我這個密碼登入框裡所有的檔都更名複製過去就行了嗎? (要更名是因為我心的檔案會跟另一個舊的檔覆蓋到 如:Unit1.~pas) 還是說 要開啟我舊的專案 然後 再裡頭建一個新專案 如:舊專案裡有form1 form2 form3 三個form 我再建一個新form 也就是form4 恩 不知道你是否聽的懂我的描述 =^^=
您好! 有關于這方面的問題, 我的建議, 你還是重新做一個專案會比較好一些, 可以有效的防止一些覆蓋或沖突的狀況, 如您所述, 將這個專案拷貝到舊專案之中, 一定會出現覆蓋的狀況出現, 那樣的話, 一定會影響舊專案中的結构, 我們再回過頭講, 重新做一遍專案, 對您而言有百利而無一害, 鞏固一下這方面的能力, 也是一種所得, 又何以拒絕去選擇捷徑小道呢? 參考看看! ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
系統時間:2024-05-18 7:23:07
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!