FORM中的 FORM |
答題得分者是:P.D.
|
boy330077
一般會員 ![]() ![]() 發表:39 回覆:59 積分:19 註冊:2009-10-15 發送簡訊給我 |
如題
我定一個 CLASS TNote = class(TForm) mm : TMemo; SG : TStringGrid; edt_1,edt_2: TEdit; btn : TButton;
........ end; 在 CREATE 的同時 也把其他的 mm,SG,edt,btn 給 create 出來並且放好該放的位置 目前為止都正常 問題1 很奇怪的 NOTE中的EDT 左鍵並沒有反應 一定要用右鍵 游標才會跑進去 問題2 我希望 MainForm中 可以有很多個 note 且當我在對 note中做修改時 Tab鍵只對此note有效 不希望他跳出這個note 但實做後發現似乎做不到 於是我就想把其他人的 tabStop 給 FALSE 掉 但是我又找不到 FORM好像沒有 ENTER這樣的事件 有沒有人可以建議我其他方法??? 希望可以一起研究 |
P.D.
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
建議你先把 CREATE 這些物件的 CODE PO上來看看
===================引 用 boy330077 文 章=================== 如題 我定一個 CLASS TNote = class(TForm) mm : TMemo; SG : TStringGrid; edt_1,edt_2: TEdit; btn : TButton;
........ end; 在 CREATE 的同時 也把其他的 mm,SG,edt,btn 給 create 出來並且放好該放的位置 目前為止都正常 問題1 很奇怪的 NOTE中的EDT 左鍵並沒有反應 一定要用右鍵 游標才會跑進去 問題2 我希望 MainForm中 可以有很多個 note 且當我在對 note中做修改時 Tab鍵只對此note有效 不希望他跳出這個note 但實做後發現似乎做不到 於是我就想把其他人的 tabStop 給 FALSE 掉 但是我又找不到 FORM好像沒有 ENTER這樣的事件 有沒有人可以建議我其他方法??? 希望可以一起研究 |
boy330077
一般會員 ![]() ![]() 發表:39 回覆:59 積分:19 註冊:2009-10-15 發送簡訊給我 |
TNote = class(TForm) mm : TMemo; SG : TStringGrid; edt_1,edt_2: TEdit; btn : TButton; public procedure reLocation(Sender: TObject); procedure saveDat(Sender: TObject; var Action: TCloseAction); procedure edtKeyDown(Sender: TObject; var Key: Word;Shift: TShiftState); constructor Create(AOwner: TComponent); override; procedure Fenter(); procedure Fexit(); end; constructor TNote.Create(AOwner: TComponent); begin inherited CreateNew(AOwner); OnResize := reLocation; OnClose := saveDat; mm := TMemo.Create(Owner); mm.Parent := Self; mm.Visible := False; btn := TButton.Create(Owner); btn.Parent := Self; btn.Top := 5; btn.Left := 5; btn.Height := 20; btn.Caption := '出考卷'; btn.TabStop := False; edt_1 := TEdit.Create(Owner); edt_1.Parent := Self; edt_1.Top := 30; edt_1.Left := 5; edt_1.Height := 20; edt_1.Tag := 1; edt_1.OnKeyDown := edtKeyDown; edt_1.ReadOnly := False; edt_2 := TEdit.Create(Owner); edt_2.Parent := Self; edt_2.Top := 30; edt_2.Height := 20; edt_2.Tag := 2; edt_2.OnKeyDown := edtKeyDown; SG := TStringGrid.Create(Owner); SG.Parent := Self; SG.Top := 55; SG.Left := 5; SG.ColCount := 2; SG.Cells[0,0] := '單字'; SG.Cells[1,0] := '翻譯'; SG.FixedCols := 0; SG.ScrollBars := ssVertical; SG.TabStop := False; end; 大概就是這樣,我只學過基礎的,這些是我查網頁或是看書一點一點拼湊出我想像的功能,也不知道是不是符合正統順序 delphi新手還請各位多多指教
編輯記錄
boy330077 重新編輯於 2012-03-22 19:50:09, 註解 無‧
|
P.D.
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
由於你並沒有上來全文, 其中關鍵點我看不到, 只好就你提供的code重寫開一個專案來跑,
但實作並沒有你提到 edit 部份必須要用右鍵才能點到 欄位 內輸入的問題這是我重製的全文 下回建議你要 po source code , 請點選回文上方有一個程式碼區塊: Delphi , 這樣比較容易閱讀, 也不會產生一些亂七八糟的文字 [code delphi] unit P_CreateForm; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Grids, StdCtrls, Buttons; type TNote = class(TForm) mm : TMemo; SG : TStringGrid; edt_1,edt_2: TEdit; btn : TButton; public procedure reLocation(Sender: TObject); procedure saveDat(Sender: TObject; var Action: TCloseAction); procedure edtKeyDown(Sender: TObject; var Key: Word;Shift: TShiftState); constructor Create(AOwner: TComponent); override; procedure Fenter(); procedure Fexit(); end; type TForm1 = class(TForm) BitBtn1: TBitBtn; procedure BitBtn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} constructor TNote.Create(AOwner: TComponent); begin inherited CreateNew(AOwner); OnResize := reLocation; OnClose := saveDat; mm := TMemo.Create(Owner); mm.Parent := Self; mm.Visible := False; btn := TButton.Create(Owner); btn.Parent := Self; btn.Top := 5; btn.Left := 5; btn.Height := 20; btn.Caption := '出考卷'; btn.TabStop := False; edt_1 := TEdit.Create(Owner); edt_1.Parent := Self; edt_1.Top := 30; edt_1.Left := 5; edt_1.Height := 20; edt_1.Tag := 1; edt_1.onKeyDown := edtKeyDown; edt_1.ReadOnly := False; edt_2 := TEdit.Create(Owner); edt_2.Parent := Self; edt_2.Top := 30; edt_2.Height := 20; edt_2.Tag := 2; edt_2.onKeyDown := edtKeyDown; SG := TStringGrid.Create(Owner); SG.Parent := Self; SG.Top := 55; SG.Left := 5; SG.ColCount := 2; SG.Cells[0,0] := '單字'; SG.Cells[1,0] := '翻譯'; SG.FixedCols := 0; SG.ScrollBars := ssVertical; SG.TabStop := False; end; procedure TNote.reLocation(Sender: TObject); begin end; procedure TNote.saveDat(Sender: TObject; var Action: TCloseAction); begin end; procedure TNote.edtKeyDown(Sender: TObject; var Key: Word;Shift: TShiftState); begin end; procedure TNote.Fenter(); begin end; procedure TNote.Fexit(); begin end; procedure TForm1.BitBtn1Click(Sender: TObject); var note1: tnote; begin note1:= tnote.Create(self); note1.Show; end; end. [/code] |
boy330077
一般會員 ![]() ![]() 發表:39 回覆:59 積分:19 註冊:2009-10-15 發送簡訊給我 |
|
P.D.
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
要鎖定一個form, 用 ShowModal 最直接, windows是一多工多窗的系統,
你想要在多個Form中鎖定, 這基本上是違背 windows 本身的"人體工學", 或許有辦法, 但我沒有研究 要偵測進入那一個form, 可以用一個 public 變數記錄, 而每一個form 都有 o n A c t i v e 可以偵測 ===================引 用 boy330077 文 章=================== 感謝您幫我測試 關於游標問題我會再看看(不知道為什麼我就是要用右鍵) 那另一個問題 沒有簡單的方法可以鎖定TAB在某一個FORM內? 或著有沒有辦法知道 我現再進入或是離開某個小 FORM嗎? |
boy330077
一般會員 ![]() ![]() 發表:39 回覆:59 積分:19 註冊:2009-10-15 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |