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

MDI Form 登入畫面傳遞變數

尚未結案
eric039
中階會員


發表:57
回覆:126
積分:51
註冊:2002-11-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-09-08 15:51:06 IP:202.39.xxx.xxx 未訂閱
最近參考站上的 MDIForm 的登入實作 有一個問題請問 program pReport; uses Forms, ReportMain in 'ReportMain.pas' {fmReportMain}, Login in 'Login.pas' {fmLogin}; {$R *.res} begin Application.Initialize; Application.Title := '生產管理輔助系統'; while crlogin do begin ReportMain.crmain; end; Application.Run; end. 我要如何把我在 Login Form 裡面的變數傳到 ReportMain Form 內 拜託大家了 Eric Lin
------
Eric Lin
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-09-09 10:07:02 IP:61.222.xxx.xxx 未訂閱
Login Form 裡面的變數 是什麼。 要碼指定一變數帶入。 或者建立全域變數 ~~~~~~~~~~~ 難得聰明,常常糊塗。 ~~~~~~~~~~~
jimmy_wei
高階會員


發表:9
回覆:176
積分:147
註冊:2003-08-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-09-09 11:56:16 IP:61.30.xxx.xxx 未訂閱
你可以把變數放在mainform下當成全域變數, mdi form的參數傳遞是需要透過mainform的.... 當然要用這些變數的程式就要user mainform 試試
eric039
中階會員


發表:57
回覆:126
積分:51
註冊:2002-11-30

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-09-09 12:38:14 IP:202.39.xxx.xxx 未訂閱
昨天在 KTop 找了一晚上的資料 終於想到解決的方法 跟各位分享    我原本是在專案檔內把 Login 的 Form Create 在 Login Form 裡面判斷是否有 Login 成功,然後就把 Form Free 掉了 之後在專案檔內 再去開啟 MainForm 執行程式 這樣的情況之下就無法在 From 跟 Form 之間傳遞變數了    專案檔內設定的變數又不知道有沒有全域變數之分(試過好像不行) 後來想到用 Call By Refrence (Call by Address) 的方式 這樣就可以把專案檔內的變數直接給 Login 跟 Mail 的 From 作溝通    部分程式如下:    這是專案檔的部分
program pReport;    uses
  Forms,
  ReportMain in 'ReportMain.pas' {fmReportMain},
  Login in 'Login.pas' {fmLogin},    {$R *.res}    var  // 宣告專案檔的變數
  ApOperId, ApOperName: String;
  bnExitSystem: Boolean;    begin
  Application.Initialize;
  Application.Title := '生產管理輔助系統';
  while crlogin(ApOperId, ApOperName) do
              //這裡用 Call By Refrence 的方式呼叫 Login Form 的 Function   
  begin
    ReportMain.crmain(ApOperId, ApOperName, bnExitSystem) ;
                   // 這裡可以把變數傳給 Main Form  
    if bnExitSystem then
      Application.Terminate;
  end;
  Application.Run;
end.
這裡是 Login Form 的部分
unit Login;    interface    uses
.
.
.
.    var
  fmLogin: TfmLogin;
  function crLogin(var StrOperId: String; var StrOperName: String):Boolean;
           // 這個 Function 宣告為 Call by Refrence 的方式    implementation    var
  ErrorTime: Integer;
{$R *.dfm}    function crLogin(var StrOperId: String; var StrOperName: String):boolean;
begin
   with tfmlogin.Create(application) do
   begin
      showmodal;
      StrOperId := ReturnOperID;
      StrOperName := ReturnOperName;
      // 這樣就可以把這個 Form 內其他程序處理過的變數 ReturnOperId 跟 OperName 存到專案檔內設定的變數
      result:=re;
      free;
   end;
end;    
希望這樣的方式對其他人有幫助 Eric Lin Eric Lin
------
Eric Lin
系統時間:2024-04-19 10:31:35
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!