線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1079
推到 Plurk!
推到 Facebook!

如何在Form之間傳遞引數?

尚未結案
mathewzhao
中階會員


發表:121
回覆:164
積分:67
註冊:2003-04-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-09-26 17:28:34 IP:219.145.xxx.xxx 未訂閱
各位先進好!  在我的程式中有2個Form.功能如下:    Form1:Login窗體,輸入用戶名和密碼  Form2:主窗體        在Form2中刪除資料時,如果用戶權限較低,則Form1再次顯示,讓用戶能夠  重新輸入用戶名和密碼。     重新輸入用戶如果有刪除權限,則刪除資料.     Q:我如何將用戶的權限從Form1取得告知Form2,以便在Form2中判斷重新輸入用戶是否有刪除權限.    Form1原有的Code如下,請問如何修改才能解決這個問題. //取得用戶權限 
 
var
   I:integer;
   .....
    I:=0;
   .....
function  TForm1.CheckPass(User,Password:string):integer;
begin
  adoquery1.close;
  adoquery1.SQL.clear;
  adoquery1.sql.add('select * from table1 where field1 =''' User ''' and  field2=''' Password ''' ');
  adoquery1.open;
  if  adoquery1.IsEmpty  then
      Result:=0
  else
      Result:=adoquery1.fieldbyname('level').asinteger;
end;
//不同權限,顯示不同訊息
 
 procedure TForm1.Button1Click(Sender: TObject);
begin
  case  Checkpass(edit1.text,edit2.text) of
  0:begin
      showmessage('password error');
    end;
  1:begin
      showmessage('User');     
    end;
  2:begin
      showmessage('SuperUser'); 
    end;
end;
  INC(i);
  if i=3 then
    begin
      Application.Terminate;
      Close;
    end;
end;
 
avex
初階會員


發表:19
回覆:49
積分:43
註冊:2003-03-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-09-26 18:13:01 IP:218.163.xxx.xxx 未訂閱
很簡單啊, 在 Form1 上新增一個權限的變數 privilege 然後在 form2 上 check form1.ShowModal(); if (form1.privilege = CanDelete) begin .......... {do something} end
mathewzhao
中階會員


發表:121
回覆:164
積分:67
註冊:2003-04-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-09-26 21:26:34 IP:219.145.xxx.xxx 未訂閱
Hi!avex 兄,您好!    我最初在 Form1的Public部分增加一個權限的變數(P:integer),  並且在Form1上增加一個按鈕Button2.   但是在Form2上Check時(將Form1上的Button1隱藏,Button2顯示),程式就當掉了.因為不知問題原因在何處,所以提出了這個問題.    Code如下:
 
procedure TForm2.ButtonCheckClick(Sender: TObject);
begin
 Form1.ShowModal();
 if (form1.P=1) then
  begin
    showmessage('88888');
  end
end;       procedure TForm1.Button2Click(Sender: TObject);
begin
 P:=CheckPass(Edit1.text,edit2.text);
 form2.show;
 Form1.Hide;
end;
發表人 - mathewzhao 於 2003/09/26 21:28:35
cmj
高階會員


發表:15
回覆:242
積分:226
註冊:2002-06-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-09-27 00:12:58 IP:211.76.xxx.xxx 未訂閱
引言: Hi!avex 兄,您好! 我最初在 Form1的Public部分增加一個權限的變數(P:integer), 並且在Form1上增加一個按鈕Button2. P:integer;應在var下定義 但是在Form2上Check時(將Form1上的Button1隱藏,Button2顯示),程式就當掉了.因為不知問題原因在何處,所以提出了這個問題. Code如下:
 
procedure TForm2.ButtonCheckClick(Sender: TObject);
begin
 Form1.ShowModal();
 if (form1.P=1) then
 if Unit1.p=1 then //用單元名稱非Form名稱
  begin
    showmessage('88888');
  end
end;       procedure TForm1.Button2Click(Sender: TObject);
begin
 P:=CheckPass(Edit1.text,edit2.text);
 form2.show;
 Form1.Hide;
end;
發表人 - mathewzhao 於 2003/09/26 21:28:35
avex
初階會員


發表:19
回覆:49
積分:43
註冊:2003-03-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-09-27 02:07:49 IP:218.163.xxx.xxx 未訂閱
因為你說你一按 Form2上Check時就當掉, 所以我懷疑你是不是沒有使用 uses 這個keyword? 你要讓 Form2 知道 Form1 的存在~    在 Form2 上要加一個 implementation    uses IniFiles, AppUtils, Buttons, Ctrls, DBAware, Tools, Unit1 // 假設你 Form1 是放在 Unit1 裡面
mathewzhao
中階會員


發表:121
回覆:164
積分:67
註冊:2003-04-04

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-10-09 17:57:49 IP:219.145.xxx.xxx 未訂閱
兩位前輩好!  問題好像是出在Form1.ShowModal(),我將程式改為如下則不會當掉.  
  if Form2.ShowModal= mrOK then
      begin
       showmessage('88888');
      end;
並將Form1中Check時的ModalResult根據不同情況設為ModalResult:= mrOK 或 ModalResult:=mrCancel即可.
系統時間:2024-05-21 20:18:20
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!