全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2715
推到 Plurk!
推到 Facebook!

請問DragKind跟DragMode的設定

尚未結案
answer
一般會員


發表:17
回覆:10
積分:5
註冊:2004-05-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-06-30 16:03:00 IP:211.72.xxx.xxx 未訂閱
這兩個到底有什麼作用.... 謝
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-01 00:34:55 IP:218.168.xxx.xxx 未訂閱
DragMode有兩個設定,預設值為dmManual, 當設為dmAutomatic時,就能啟動拖曳功能, DragKind也有兩個設定:dkDrag和dkDock 是設定你在拖曳時的種類,試試以下範例: 在form上放一個panel和兩個button,再加入以下的code~ 當你在拖曳這兩個不同的button到panel時,會有不同的拖曳結果。  
     #include 
#pragma hdrstop    #include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
  Button1->DragMode = dmAutomatic;
  Button2->DragMode = dmAutomatic;
  Button1->DragKind = dkDrag;
  Button2->DragKind = dkDock;
  Panel1->DockSite = true;
}
//---------------------------------------------------------------------------    void __fastcall TForm1::Panel1DragOver(TObject *Sender, TObject *Source,
      int X, int Y, TDragState State, bool &Accept)
{
  Accept = true;
}
//---------------------------------------------------------------------------    void __fastcall TForm1::Panel1DragDrop(TObject *Sender, TObject *Source,
      int X, int Y)
{
  Panel1->Caption = ((TButton*)Source)->Caption;
}
國泰平安
answer
一般會員


發表:17
回覆:10
積分:5
註冊:2004-05-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-07-01 13:16:45 IP:211.72.xxx.xxx 未訂閱
引言: DragMode有兩個設定,預設值為dmManual, 當設為dmAutomatic時,就能啟動拖曳功能, DragKind也有兩個設定:dkDrag和dkDock 是設定你在拖曳時的種類,試試以下範例: 在form上放一個panel和兩個button,再加入以下的code~ 當你在拖曳這兩個不同的button到panel時,會有不同的拖曳結果。
     #include 
#pragma hdrstop    #include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
  Button1->DragMode = dmAutomatic;
  Button2->DragMode = dmAutomatic;
  Button1->DragKind = dkDrag;
  Button2->DragKind = dkDock;
  Panel1->DockSite = true;
}
//---------------------------------------------------------------------------    void __fastcall TForm1::Panel1DragOver(TObject *Sender, TObject *Source,
      int X, int Y, TDragState State, bool &Accept)
{
  Accept = true;
}
//---------------------------------------------------------------------------    void __fastcall TForm1::Panel1DragDrop(TObject *Sender, TObject *Source,
      int X, int Y)
{
  Panel1->Caption = ((TButton*)Source)->Caption;
}
國泰平安
那請問BUTTON1拉到PANEL有什麼意義,好像就PANEL的CAPTION換成BUTTON1的那這樣有什麼公用ㄋ,謝謝你的回答
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-07-01 15:49:16 IP:61.220.xxx.xxx 未訂閱
因為button1的DragKind是dkDrag, 所以它拖曳時,會產生Drag的結果~    因此,當它拉到panel上的時候,就會觸發onDragOver的事件, 而當你放開滑鼠鍵時,就會觸發DragDrop事件,    這個事件有一個參數 : TObject *Source 這參數就是「來源的物件」,在這裡就是button1, 此時,我就可以間接使用這個button1(Source)的所有東西。 範例只有使用button1的caption~    你可以試試看這樣,只要是拖進這個panel的東西,都會被delete掉~    
void __fastcall TForm1::Panel1DragDrop(TObject *Sender, TObject *Source,
      int X, int Y)
{
  delete Source;
}  
國泰平安
系統時間:2024-05-14 9:23:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!