請問如何使用在其中某個表單的元件? |
答題得分者是:Justmade
|
darnell
版主 發表:25 回覆:103 積分:145 註冊:2003-03-04 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
darnell
版主 發表:25 回覆:103 積分:145 註冊:2003-03-04 發送簡訊給我 |
引言: 先設計一個 基礎的 Form, 包含 ToolBar 及其他共用的元件及程式碼 之後建立其他的 Form 時 : File->New->Other->你的 Project 名 選那個其礎的 Form 這樣,所有用這個方式建立的 Form 都可共享這些共通元件 若要修改共通部份只要到其礎的 Form 修改即可謝謝你...這個方法我有想過...還想請問一件事...有辦法動態...也就是寫程式的方法來產生這個Form...也就是不想在設計階段就直接產生...因為數目並不固定要幾個...因此需要用程式碼來產生那個有東西的Form...? |
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
darnell
版主 發表:25 回覆:103 積分:145 註冊:2003-03-04 發送簡訊給我 |
引言: 當然可以啊不好意思...最後一個小小問題...這樣的話...可以不經由Form而直接產生Form中的東西ㄇ?比如說...use MyForm procedure MainForm.NewMyFormClick(Sender : TObject); begin with TMyForm.Create(Application) do begin Caption := 'ABCDE' ..... ...... Show; end end;這樣每按一次就會制做一個 TMyForm 的 instance, 你可針對不同 instance 作不同修改才 show 出來。 use MyForm procedure MainForm.NewMyFormClick(Sender : TObject); begin with TMyForm.ToolBarA.Create(MainForm) do begin Name:= 'ABCDE'; Parent:=MainForm; ...... Show; end end;這樣可以ㄇ?? |
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
可以的, 也就是動態生成 form 上的 vcl 元件, 不過語法不是這樣子的.
要寫為這樣:
procedure TForm1.Button4Click(Sender: TObject); var a: TButton; begin a:=TButton.Create(form1);// owner 指定為放在那個 form 上, 這樣在 owner 結束時便會自動 free 這個元件 a.Name := 'mybutton'; a.Caption := '123'; a.Parent := form1; // Parent 指定為要出現的 form a.Top := 10; a.Left := 10; end; |
wnhoo
高階會員 發表:75 回覆:443 積分:198 註冊:2003-04-22 發送簡訊給我 |
我在主表單設計了一個ToolBar並且撰寫了事件...且使用SDI方式設計其他表單...因為其他表單中的ToolBar所需和主表單一模一樣...因此我希望可以將主表單中的ToolBar和事件拿來給其他表單使用...但是由於ToolBar的設計有可能變動...請問我應該如何在其他表單產生的時候動態建立跟主表單一樣的ToolBar和其事件程序呢??? //实现了动态创建窗体与LABEL控件
//我想这个例子对你的问题可能会提供一些帮助
unit Unit1; interface uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls, Buttons, ExtCtrls; type TAboutBox = class(TForm) procedure FormShow(Sender: TObject); private { Private declarations } public procedure NewMyFormClick(Sender : TObject); { Public declarations } end; var AboutBox: TAboutBox; str:string; implementation {$R *.dfm} procedure TAboutBox.NewMyFormClick(Sender : TObject); begin with TAboutBox.Create(Application) do begin Caption := datetimetostr(now()); Show; end ; end; procedure TAboutBox.FormShow(Sender: TObject); var label1:tlabel; begin label1:=tlabel.Create(self); label1.Top :=50; label1.Left :=50; label1.Caption :=str; label1.Parent:=self; end; end. unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation uses unit1; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin unit1.str :=InputBox('Input Box', 'Prompt', '动态显示LABEL'); //动态创建FORM unit1.AboutBox.NewMyFormClick(self); end; end. 风花雪月 e梦情缘
------
风花雪月 e梦情缘 |
darnell
版主 發表:25 回覆:103 積分:145 註冊:2003-03-04 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |