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

關于如何寫"剪切",“復制","粘貼"的代碼

答題得分者是:ccchen
rockytian
一般會員


發表:8
回覆:4
積分:2
註冊:2002-11-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-12-07 08:40:56 IP:61.142.xxx.xxx 未訂閱
我是個新手,請教"剪切",“復制","粘貼"的代碼怎樣寫, 在一個form中對所有的DBEDIT都有效. 謝謝.
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-12-07 09:51:25 IP:202.39.xxx.xxx 未訂閱
以下是 Delphi 內的 CopyToClipboard(複製)的範例:
procedure TForm1.Button1Click(Sender: TObject);
begin
  RichEdit1.SelectAll;
  RichEdit1.CopyToClipboard;
  Edit1.Clear;
  Edit1.PasteFromClipboard;
  RichEdit1.SetFocus;
end;
-- Everything I say is a lie.
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-12-07 09:57:53 IP:203.217.xxx.xxx 未訂閱
這些程式碼寫在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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-12-09 21:27:54 IP:203.217.xxx.xxx 未訂閱
由於簡訊中篇幅太小不好輸入我再換到此處吧    您所定義的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之前
系統時間:2024-05-19 20:35:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!