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

Form裡的元件作放大縮小

尚未結案
kraen4468
初階會員


發表:66
回覆:112
積分:35
註冊:2003-12-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-27 14:10:50 IP:61.222.xxx.xxx 未訂閱
http://delphi.ktop.com.tw/loadfile.php?TOPICID=8083551&CC=180789 這是Delphi語法 請問大大有辨法翻成BCB嗎 ~我還在學習狀態希望多多向您學習~ 發表人 - taishyang 於 2004/07/27 15:37:59
kraen4468
初階會員


發表:66
回覆:112
積分:35
註冊:2003-12-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-27 14:25:08 IP:61.222.xxx.xxx 未訂閱
http://delphi.ktop.com.tw/loadfile.php?TOPICID=16840039&CC=376621 這是我翻好的可是不能動 ~我還在學習狀態希望多多向您學習~
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-07-28 11:13:29 IP:219.130.xxx.xxx 未訂閱
kraen4468你好:
試一試以下BCB的方式,純粹就你的元件放大縮小移動而說明。
.hpp檔先宣告
#define smNone  0
#define smMove  1
#define smLeft  2
#define smRight 4
#define smUp    8
#define smDown  16    private:        // User declarations
或
public:                // User declarations
int ClickX;
int ClickY;
int ClickLeft;
int ClickTop;
int ClickWidth;
int ClickHeight;
int SizeMode;    開一專案Form上隨便放幾個元件(可視元件)
就其中一個元件的
MouseMove
MouseDown
MouseUp
中輸入以下程式碼
void __fastcall TForm1::xxxMouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
  SizeMode = smNone;
}    void __fastcall TForm1::xxxMouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
  if ( Shift.Contains(ssLeft))  {
          TControl *vcl = (TControl*)Sender; // //現在所選VCL名稱
    ClickX = X;
    ClickY = Y;
    ClickLeft = vcl->Left;
    ClickTop = vcl->Top;
    ClickWidth = vcl->Width;
    ClickHeight = vcl->Height;        switch(vcl->Cursor)  {
        case crSizeNS:
             if (Y<5) SizeMode = smUp;
             else SizeMode = smDown;
             break;
        case crSizeWE:
             if (X<5) SizeMode = smLeft;
             else SizeMode = smRight;
             break;
        case crSizeNWSE:
             if (X<5) SizeMode = smLeft | smUp;
             else SizeMode = smRight | smDown;
             break;
        case crSizeNESW:
             if (X<5) SizeMode = smLeft | smDown;
             else SizeMode = smRight | smUp;
             break;
        default:
             SizeMode = smMove;
             break;
    }
  }
}    void __fastcall TForm1::xxxMouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
  TControl* vcl = (TControl*)Sender;
        //判斷Cursor是否指向
  if ( X<5)  {
    if (Y<5)  //左上對角
      vcl->Cursor = crSizeNWSE;
    else if (Y>vcl->Height -5) //左下對角
      vcl->Cursor = crSizeNESW;
    else  //左邊
      vcl->Cursor = crSizeWE;
  }
  else if  (X >vcl->Width -5)  {
    if (Y<5)  //右上對角
      vcl->Cursor = crSizeNESW;
    else if (Y>vcl->Height -5)  //右下對角
      vcl->Cursor = crSizeNWSE;
    else  //右邊
      vcl->Cursor = crSizeWE;
  }
  else if ((Y<5) || (Y>vcl->Height-5))  //上下
    vcl->Cursor = crSizeNS;
  else
    vcl->Cursor = crSizeAll;      if (SizeMode == smNone)
    return;
  if (SizeMode == smMove)  {
    vcl->Left=vcl->Left X-ClickX;
    vcl->Top=vcl->Top Y-ClickY;
    return;
  }
  if (SizeMode & smLeft)  {
    vcl->Left = vcl->Left  (X-ClickX);
    vcl->Width =ClickWidth -(vcl->Left-ClickLeft);
  }
  if (SizeMode & smRight)  {
    vcl->Width =ClickWidth  X-ClickX;
  }
  if (SizeMode & smUp)  {
    vcl->Top = vcl->Top  (Y-ClickY);
    vcl->Height =ClickHeight -(vcl->Top-ClickTop);
  }
  if (SizeMode & smDown)  {
    vcl->Height = ClickHeight  Y -ClickY;
  }
}
其他元件的
MouseMove
MouseDown
MouseUp
指向這元件即可
請參考
Andy Chang
------
Andy Chang
kraen4468
初階會員


發表:66
回覆:112
積分:35
註冊:2003-12-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-07-28 11:18:53 IP:61.222.xxx.xxx 未訂閱
我想大大誤會我的意思了 我放大縮小不是拉單元件,而是拉整個form時裡面的元件 會跟一樣的比率作放大縮小功能 ~我還在學習狀態希望多多向您學習~
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-07-28 15:41:40 IP:219.130.xxx.xxx 未訂閱
http://delphi.ktop.com.tw/topic.php?topic_id=44862 請參考 但我個人絕得使用者不停改變Form大小,元件是否要設定極限, 而且有必要嗎? 我個人認為專注螢幕解析度,及畫面色彩變化比較有利。 Andy Chang
------
Andy Chang
kraen4468
初階會員


發表:66
回覆:112
積分:35
註冊:2003-12-04

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-07-28 16:06:42 IP:61.222.xxx.xxx 未訂閱
謝謝大大給我這麼多意見 不過我還是覺的delphi那個寫的是我想要的 可惜我翻不出來,如果你有空也可以下載試看看 元件放很多也不會跑掉或比率不對,真的很利害 ~我還在學習狀態希望多多向您學習~
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-07-28 21:58:29 IP:219.130.xxx.xxx 未訂閱
kraen4468: 請至 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=53894 【BCB】【發表】Form裡的元件隨畫面作放大縮小_BCB版 Andy Chang
------
Andy Chang
系統時間:2024-06-26 15:28:55
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!