การทำปุ่ม Button คลิกแล้วเด้งกลับ
Aug 25, 2016 15:12:01 GMT 7
Post by iamgotzaa on Aug 25, 2016 15:12:01 GMT 7
หลักการคือ
1. สร้าง ปุ่มก่อน ในที่นี้ผมใช้ MQL4OBJ.mqh จะได้ไว โดยใช้คำสั่ง ButtonCreate()
2. ก่อนที่จะสร้างปุ่มเราต้อง enable object create events
และ enable object delete events
3. จากนั้นสร้างปุ่ม ชื่อว่า "test"
4. เราจะทำงานในโหมด
5. มี format ง่ายๆคือ
6. งานนี้คือ id==CHARTEVENT_OBJECT_CLICK เช็คว่ามีการคลิก object หรือไม่
7. ถ้ามีเราก้อทำการ set state (boolean) ของ buttons กลับเป็นเหมือนเดิมคือ release state (false) หรือ ปุ่มโดนคลิกจะมี state เป็น pressed (true)
8. เพื่อเป็นการเช็คว่าโค้ดของเราทำงานผมก็เพิ่ม คำสั่ง Print ให้มันออกค่ามาด้วย
9. ค่าที่เกิดขึ้นมีเมื่ออีเว้นท์ต่างๆเกิดขึึ้นบนชาร์ทนั้น เราสามารถนำไปใช้ได้ผ่านตัวแปร 3 ตัวคือ
9.1 sparam
9.2 lparam
9.3 dparam
10. สำหรับ event CHARTEVENT_OBJECT_CLICK เนี่ย ตัวแปรสามตัวนั้น หมายถึง ดังนี้
10.1 sparam ชื่อของ object ที่โดนคลิ๊ก
10.2 lparam x pixel ของ chart ในตำแหน่งเคอเซอร์อยู่
10.3 dparam y pixel ของ chart ในตำแหน่งเคอเซอร์อยู่
1. สร้าง ปุ่มก่อน ในที่นี้ผมใช้ MQL4OBJ.mqh จะได้ไว โดยใช้คำสั่ง ButtonCreate()
2. ก่อนที่จะสร้างปุ่มเราต้อง enable object create events
ChartSetInteger(ChartID(),CHART_EVENT_OBJECT_CREATE,true);
และ enable object delete events
ChartSetInteger(ChartID(),CHART_EVENT_OBJECT_DELETE,true);
3. จากนั้นสร้างปุ่ม ชื่อว่า "test"
4. เราจะทำงานในโหมด
OnChartEvent(..)
5. มี format ง่ายๆคือ
if(id==ชื่ออีเว้นท์)
{
..
}
6. งานนี้คือ id==CHARTEVENT_OBJECT_CLICK เช็คว่ามีการคลิก object หรือไม่
7. ถ้ามีเราก้อทำการ set state (boolean) ของ buttons กลับเป็นเหมือนเดิมคือ release state (false) หรือ ปุ่มโดนคลิกจะมี state เป็น pressed (true)
ObjectSetInteger(0,"test",OBJPROP_STATE,false);
8. เพื่อเป็นการเช็คว่าโค้ดของเราทำงานผมก็เพิ่ม คำสั่ง Print ให้มันออกค่ามาด้วย
9. ค่าที่เกิดขึ้นมีเมื่ออีเว้นท์ต่างๆเกิดขึึ้นบนชาร์ทนั้น เราสามารถนำไปใช้ได้ผ่านตัวแปร 3 ตัวคือ
9.1 sparam
9.2 lparam
9.3 dparam
10. สำหรับ event CHARTEVENT_OBJECT_CLICK เนี่ย ตัวแปรสามตัวนั้น หมายถึง ดังนี้
10.1 sparam ชื่อของ object ที่โดนคลิ๊ก
10.2 lparam x pixel ของ chart ในตำแหน่งเคอเซอร์อยู่
10.3 dparam y pixel ของ chart ในตำแหน่งเคอเซอร์อยู่
//+------------------------------------------------------------------+
//| BttnsDemo.mq4 |
//| iamgotzaa |
//| http://thaiea.freeforums.net |
//+------------------------------------------------------------------+
#property copyright "iamgotzaa"
#property link "http://thaiea.freeforums.net"
#property version "1.00"
#property strict
#include <MQL4OBJ.mqh>
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
Print("The Expert Advisor with name ",MQLInfoString(MQL_PROGRAM_NAME)," is running");
//--- enable object create events
ChartSetInteger(ChartID(),CHART_EVENT_OBJECT_CREATE,true);
//--- enable object delete events
ChartSetInteger(ChartID(),CHART_EVENT_OBJECT_DELETE,true);
if(ObjectFind(0,"test")<0)
{
ButtonCreate(0,"test",0,100,100,100,30,0,"Buy test","Courier New",14);
}
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
//| ChartEvent function |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
//---
if(id==CHARTEVENT_OBJECT_CLICK)
{
Print("The mouse has been clicked on the object with name '"+sparam+"'"+"x="+lparam+" , y="+dparam);
ObjectSetInteger(0,"test",OBJPROP_STATE,false);
}
}
//+------------------------------------------------------------------+