Common Function? |
尚未結案
|
BorlandUser
中階會員 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
我想將幾個form共有的function 合而為一,放在unit那處
如: Unit abc procedure InitForm(FormName: TForm);
begin
FormName.setHeight(100);
...
end; 在其它form會加上uses abc;及..
TABCForm.FormCreate(Sender: TObject);
begin
InitForm(abcForm);
end; 每張form都會有一個procedure叫做setheight(integer), 但有compile error?
它說form沒有underclare到...那應該怎麼辦?
我想做到pass一張form去共用的function,然後呼叫每張form都共有的function,因為這樣我就不用每張form都寫同一個function,請問應該怎樣做呢? 謝
|
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
|
BorlandUser
中階會員 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
但是那個共用function 如setheight可以用到每張form的variable或function嗎? 其實情況是這樣的...
每張form都有可以提供add/update/delete等mode...不過不同user會有不同的情度的限制,所以我想當user進入某一張form時, 設定3個變數(add/update/delete)為true或false.因為每張form都會做一個function就是set這3個變數的值,而那3個變數是private,所以我會在每張form都有相對的public set function,所以我想做到pass一張form去某一個function,經過那function 檢查這個form可以做到那些mode,然後set 回那些變數為true/false... 所以我想知點做? 謝!幫忙
|
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
BorlandUser您可用下面的概念去達到您的需求
在共用函式單元宣告及實作
procedure SetFormControl(Sender:TForm;authority:string) var MyForm:TMyForm; begin if Pos('A',authority)>0 then //擁有某個權限 begin if Sender is TMyForm then (Sender as TMyForm).MyOtherControl.Visible:=True; end; .... end; |
BorlandUser
中階會員 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
在vb裏,只要pass一個me(form name)去到一個global module的function裏,如 In MainForm:
Call FindRight(me); In Global Module:
function SetAddMode(frm as form, status as boolean)
if frm.getRight() = 'Normal' then
frm.SetAddMode(true)
else
frm.SetUpdateMode(false)
end if
end function Here is the VB Code, it can easy to pass the hold form and than call the form's function if the form is public its "property". So, how can I implement the same technology in the Delphi??
|
BorlandUser
中階會員 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
係delphi裏面,有冇好似c 那樣有pass by value和pass by reference?
因為如果我將一個variable psss入去個function裏面,但係無論個value係個function裏面怎樣改,此終都不會改變那value,那有什麼方法可以連那value也改變呢?如: procedure Test;
var
abc: integer;
begin
abc := 0;
ChangeValue(abc);
end; procedure ChangeValue(intTest: Integer);
begin
intTest := 10;
end; At the final, the value of abc still is 0, so, how can I change it to 10 after passs the it to the procedure ChangeValue Thank You very much
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
引言: 係delphi裏面,有冇好似c 那樣有pass by value和pass by reference? 因為如果我將一個variable psss入去個function裏面,但係無論個value係個function裏面怎樣改,此終都不會改變那value,那有什麼方法可以連那value也改變呢?如: procedure Test; var abc: integer; begin abc := 0; ChangeValue(abc); end; procedure ChangeValue(Var intTest: Integer);//對於IntTest的改變會反映到呼叫它的變數 begin intTest := 10; end;BordLandUser 你好 引言:我想做到pass一張form去共用的function,然後呼叫每張form都共有的function,因為這樣我就不用每張form都寫同一個function,請問應該怎樣做呢? 如果是每張的話,我會建議你可以建立BaseForm把每張Form共同Function寫進去,在適當的事件中觸發,你幾乎可以不用再自行呼叫共用的Function 發表人 - chance36 於 2004/04/06 18:44:29 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |