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

Unit間,間接USE的問題

答題得分者是:cobraliu
douglas
初階會員


發表:24
回覆:42
積分:38
註冊:2008-03-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-03-18 13:42:03 IP:59.125.xxx.xxx 訂閱
以下大致描述程式的架構:

//Unit1部分
(省略定義區)
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Items.Add(Str2); //取得Form2的資料
end;

//Unit2部分
(省略定義區)
var
Form2: TForm2;
Str2 : String;
implementation
uses Unit3;
{$R *.dfm}
procedure TForm2.FormCreate(Sender: TObject);
begin
Str2 := Str3; //用單部執行的方式檢查, Str3有值, 但是Str2沒有
end;

//Unit3部分
(省略定義區)
var
Form3: TForm3;
Str3 : String;
implementation
{$R *.dfm}
procedure TForm3.FormCreate(Sender: TObject);
begin
Str3 := 'This Message From Unit3';
end;

在Unit2的Create Form的動作無法讓Str2取得Str3的值
必須使用其他程序或函式進行運作才能完成取值
請問各位學長們, 我的觀念哪邊有違規阿??

-----
真是不好意思 = =" 目前正在自學中
這是擷取編輯畫面中的部分程式碼下來
我有嘗試過把 uses Unit* 這部分放到最上面的那個uses, 還是沒用
( 我看書上面用的是再定義區段裡面用 const 宣告 ?? 一整個撒無)
還是說我還需要具備哪部分的觀念之後才適合摸索這部分
編輯記錄
douglas 重新編輯於 2008-03-20 10:21:21, 註解 無‧
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-03-19 23:59:34 IP:61.67.xxx.xxx 未訂閱
雖然大概知道你想說的, 但完全看不懂你的程式, 是擷取的太簡單了, 還是你的程式真的就是如此寫?
cobraliu
中階會員


發表:15
回覆:75
積分:83
註冊:2007-11-22

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-03-20 21:55:08 IP:220.143.xxx.xxx 訂閱
你的問題應該是在Unit Create的順序
隨然看不出你做這樣的用途
依我知道的,你試試

如果你是Form1,Form2,Form3循序的產生那相對的你的Unit應該是Unit1,Unit2,Unit3的產生
而你現在是Form1引用Form2的變數,而Form2引用Form3的變數

但Form的產生方式是Form1>Form2>Form3,跟你目前的Form3(資料)>Form2(給予某一變數)>Form1(取Form2的變數)
雖然以變數引用上看似沒有問題,但邏輯上怪怪的...

如果是我解讀你的文章是這樣,那你可以試著去改變Form的產生順序Project改或Delphi畫面「Project」>「Options」>「Forms頁面」->「Auto-create forms」那一個選項去改順序調為「Form1,Form3,Form2」
以下是Project
----------------------------------------------------------
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm3, Form3);
Application.CreateForm(TForm2, Form2);
-----------------------------------------------------------
------
初學、初學、學了很久...還是在初學階段..Orz
編輯記錄
cobraliu 重新編輯於 2008-03-20 21:55:35, 註解 無‧
douglas
初階會員


發表:24
回覆:42
積分:38
註冊:2008-03-05

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-03-21 09:31:01 IP:59.125.xxx.xxx 訂閱
大成功!! 淚奔..... 原來是順序的問題 = ="
重新翻書才發覺範例是從Form3取Form1的值
所以沒有順序上的影響

這程式沒有什麼特別的用途啦~~
純粹我拿來練習Form彼此呼叫的觀念
感謝熱心答覆 ^_^
系統時間:2024-05-04 4:08:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!