關于如何寫"剪切",“復制","粘貼"的代碼 |
答題得分者是:ccchen
|
rockytian
一般會員 發表:8 回覆:4 積分:2 註冊:2002-11-28 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
這些程式碼寫在mainform上之ManiMenu內, 對此AP中所有Form上之Edit,dbedit,maskedit,memo,richedit,各種grid均有效
[NOTE]此處MenuItem-- Edit1包含cut1,paste1,copy1,故click Edit1時檢查clipboard中是否有東西, 以決定cut,paste是否應Enable
procedure TIKMainForm.Edit1Click(Sender: TObject); begin if ((Screen.ActiveControl is TCustomEdit) or (Screen.ActiveControl is TDBGrid)) then begin // tdbmemo,trichedit are all it's child Paste1.Enabled := Clipboard.HasFormat(CF_TEXT); Cut1.Enabled := True; Copy1.Enabled := True; end else begin Paste1.Enabled := False; Cut1.Enabled := False; Copy1.Enabled := False; end; end; procedure TIKMainForm.Cut1Click(Sender: TObject); begin if Screen.ActiveControl is TCustomEdit then // tdbmemo,trichedit are all it's child TCustomedit(Screen.ActiveControl).CutToClipboard else if Screen.ActiveControl is TDBGrid then with TDBGridF(Screen.ActiveCOntrol) do if InplaceEditor <> nil then InplaceEditor.CutToClipboard; end; procedure TIKMainForm.Copy1Click(Sender: TObject); begin if Screen.ActiveControl is TCustomEdit then // tdbmemo,trichedit are all it's child TCustomedit(Screen.ActiveControl).CopyToClipboard else if Screen.ActiveControl is TDBGrid then with TDBGridF(Screen.ActiveCOntrol) do if InplaceEditor <> nil then InplaceEditor.CopyToClipboard; end; procedure TIKMainForm.Paste1Click(Sender: TObject); begin if Screen.ActiveControl is TCustomEdit then // tdbmemo,trichedit are all it's child TCustomedit(Screen.ActiveControl).PasteFromClipboard else if Screen.ActiveControl is TDBGrid then with TDBGridF(Screen.ActiveCOntrol) do if InplaceEditor <> nil then InplaceEditor.PasteFromClipboard; end;發表人 - ccchen 於 2002/12/07 10:04:05 |
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
由於簡訊中篇幅太小不好輸入我再換到此處吧 您所定義的Tcustomedit 是所有edit的總稱嗎
是的, 所有Edit均繼承至TCustomEdit 那么我form中所有的DBEDIT(DBEDIT1—DBEDIT21)該怎樣定義呢
全部都是Tcustomedit,不用一個一個處理 還有你例子中的TDBGridF輿TDBGrid是什么關系呢
DBGrid之編輯實際上是靠DBGrid中有一個InplaceEditor你Cursor移到何處,此InplaceEdiotr就移到何處
由於InplaceEdiotr是DBGrid的protected property無法直接存取必須繼承後才可存取因此TDBGridF(Screen.ActiveCOntrol) 將其轉型為TDBGridF 原程式少了一行TDBGridF之定義
type
TDBGridF=class(TDBGrid);
可放在第一個procedure之前
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |