ขอตัวอย่างโค๊ดในการสร้าง CheckGroup ใน panel ให้หน่อยครับ... ^___^

  • 11 replies
  • 1854 views

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

*

ออฟไลน์ gaothun

  • **
  • 113
  • 0
ผมต้องการสร้าง check group ใน panel แต่ไม่รู้ทำอย่างไรครับ ไม่รู้จะเริ่มอย่างไร จึงอยากได้โค๊ด มาศึกษา สักชุดครับผม

ไม่อยากได้ใน class นะครับ อยากได้ใน panel รบกวนท่านด้วยครับผม

 (TH)** (TH)** (TH)**

Share Topic.


*

ออฟไลน์ gaothun

  • **
  • 113
  • 0
ผมต้องการสร้าง check group ใน panel แต่ไม่รู้ทำอย่างไรครับ ไม่รู้จะเริ่มอย่างไร จึงอยากได้โค๊ด มาศึกษา สักชุดครับผม

ไม่อยากได้ใน class นะครับ อยากได้ใน panel รบกวนท่านด้วยครับผม

 (TH)** (TH)** (TH)**

ผมเริ่มต้นโดยการ include panel กับ checkgroup แล้วตั้งค่าตัวแปรครับ
#include <Controls\Panel.mqh>
CPanel P1;

#include <Controls\CheckGroup.mqh>
CCheckGroup CG1,CG2;


void Panel()//หลังจากนั้นก็สร้าง panel และจะสร้าง checkgroup แต่ไม่เห็นเกิดอะไรขึ้นเลยครับ ไม่รู้เขาต้องทำอย่างไรครับ เขียนได้เท่านี้ครับ
{
   int y = -20;
   P1.Create(0,"P1",0,0,0,200,550);
   P1.Shift(40,40);
   P1.ColorBackground(clrMidnightBlue);
   P1.BorderType(BORDER_RAISED);


   CG1.Create(0,"CG1",0,0,0,0,0);
   CG1.AddItem("DDDD",0);
   CG1.ColorBackground(clrAliceBlue);
   CG1.Shift(40,60);
} // แต่มันไม่เห็นมีอะไรเกิดขึ้นเลยครับ
 
ตรง CG1.????? ผมต้องทำอย่างไรครับ

*

ออฟไลน์ iRuler

  • *
  • 1,268
  • 40
พรุ่งนี้สายๆ ผมช่วยดูนะ (TH)**

*

ออฟไลน์ iRuler

  • *
  • 1,268
  • 40
ผมต้องการสร้าง check group ใน panel แต่ไม่รู้ทำอย่างไรครับ ไม่รู้จะเริ่มอย่างไร จึงอยากได้โค๊ด มาศึกษา สักชุดครับผม

ไม่อยากได้ใน class นะครับ อยากได้ใน panel รบกวนท่านด้วยครับผม

 (TH)** (TH)** (TH)**

ผมเริ่มต้นโดยการ include panel กับ checkgroup แล้วตั้งค่าตัวแปรครับ
#include <Controls\Panel.mqh>
CPanel P1;

#include <Controls\CheckGroup.mqh>
CCheckGroup CG1,CG2;


void Panel()//หลังจากนั้นก็สร้าง panel และจะสร้าง checkgroup แต่ไม่เห็นเกิดอะไรขึ้นเลยครับ ไม่รู้เขาต้องทำอย่างไรครับ เขียนได้เท่านี้ครับ
{
   int y = -20;
   P1.Create(0,"P1",0,0,0,200,550);
   P1.Shift(40,40);
   P1.ColorBackground(clrMidnightBlue);
   P1.BorderType(BORDER_RAISED);


   CG1.Create(0,"CG1",0,0,0,0,0);
   CG1.AddItem("DDDD",0);
   CG1.ColorBackground(clrAliceBlue);
   CG1.Shift(40,60);
} // แต่มันไม่เห็นมีอะไรเกิดขึ้นเลยครับ
 
ตรง CG1.????? ผมต้องทำอย่างไรครับ


https://www.mql5.com/en/docs/standardlibrary/controls/ccheckgroup

มีตัวอย่างเรียบร้อย ดัดแปลงได้เลยครับ

 (TH)**

*

ออฟไลน์ iRuler

  • *
  • 1,268
  • 40
โค๊ด
#include <Controls\Panel.mqh>
#include <Controls\CheckGroup.mqh>

CPanel   panel;
CCheckGroup cbg;

void CreatePanel(void)
  {
   panel.Create(0,"P1",0,0,0,200,550);
   panel.ColorBorder(CONTROLS_DIALOG_COLOR_BORDER_LIGHT);
   panel.Alignment(WND_ALIGN_CLIENT,0,0,0,0);
   panel.ColorBackground(CONTROLS_DIALOG_COLOR_BG);
   panel.BorderType(BORDER_RAISED);
   panel.Shift(40,40);
  }
void CreateCheckgroup()
  {
   cbg.Create(0,"CheckGroup",0,5,5,100,200);
   cbg.ColorBackground(CONTROLS_DIALOG_COLOR_BG);
   cbg.BorderType(BORDER_FLAT);
   cbg.ColorBorder(CONTROLS_DIALOG_COLOR_BORDER_LIGHT);
   cbg.Shift(40,40);
   
   for(int i=0;i<5;i++)
      cbg.AddItem("Item "+IntegerToString(i),i);
  }
int OnInit()
  {
   CreatePanel();
   CreateCheckgroup();

   return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason)
  {
   panel.Destroy(reason);
   cbg.Destroy(reason);
  }

*

ออฟไลน์ gaothun

  • **
  • 113
  • 0
 (TH)** (TH)** (TH)**

ขอบคุณท่านมากมากครับ ผมนำไปต่อยอดได้แล้วครับ แต่ดันสงสัยออีกว่า ผมจะดึงค่า ตัวที่มัน ติ๊กในกล่องออกมาใช้งานได้อย่างไรครับ

ใช่คำสั่ง Check หรือเปล่าครับ แล้วมันใช้ยังงัยครับ ในวงเล็บไม่รู้ใส่อะไรครับ


cbg.Check(???,???)

« แก้ไขครั้งสุดท้าย: 21, กรกฎาคม 2019, 06:42:18 PM โดย gaothun »

*

ออฟไลน์ gaothun

  • **
  • 113
  • 0
คิดว่าน่าจะเป็นคำสั่ง

cbg.Value() ครับ แต่ไม่รู้ทำอย่างไรครับ

*

ออฟไลน์ forcebewithyou

  • ****
  • 2,416
  • 79
  • Green PIPs Be With You

ผมเคยแต่ทำแต่แค่ปุ่มกดปุ่มเดี่ยวเพื่อสั่งใช้งาน

ลองดูตัวอย่างในอันนี้ครับน่าจะช่วยได้

https://www.mql5.com/en/articles/313
https://www.mql5.com/en/articles/2171
https://www.mql5.com/en/forum/62821

*

ออฟไลน์ iRuler

  • *
  • 1,268
  • 40
(TH)** (TH)** (TH)**

ขอบคุณท่านมากมากครับ ผมนำไปต่อยอดได้แล้วครับ แต่ดันสงสัยออีกว่า ผมจะดึงค่า ตัวที่มัน ติ๊กในกล่องออกมาใช้งานได้อย่างไรครับ

ใช่คำสั่ง Check หรือเปล่าครับ แล้วมันใช้ยังงัยครับ ในวงเล็บไม่รู้ใส่อะไรครับ


cbg.Check(???,???)



Value() ครับ
https://www.mql5.com/en/docs/standardlibrary/controls/ccheckgroup/ccheckgroupvalue

ซึ่งน่าจะเรียกใช้ใน OnChartEvent() ครับ

 (TH)**

*

ออฟไลน์ gaothun

  • **
  • 113
  • 0
ผมได้ทำตัวติ๊กกรุ๊ป ออกมาใน panel ครับ ผลปรากฏตามรูปครับ มันมีปัญหาดังนี้ครับ
-  ตัวติ๊ก มันสามารถติ๊กได้ทั้งสามหัวข้อพร้อมกันได้เลย แต่ผมต้องการให้ติ๊กแล้วเลือกหัวข้อเดียว
-  ผมไม่สามารถดึงค่าหัวข้อที่ติ๊กออกมาเพื่อใช้งานได้ครับ เช่น ติ๊ก Tp1 มีค่าเท่ากับ 1 , ติ๊ก tp2 มีค่าเท่ากับ 2


//+------------------------------------------------------------------+
//|                                                     Panel V1.mq4 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#include <Controls\Panel.mqh>
CPanel   panel;
#include <Controls\RadioGroup.mqh>
CRadioGroup cbg;
#include <Controls\Label.mqh>
CLabel L1,L2,L3,L4;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
extern int     Position_Comment     = 1000;
extern color   ColorBG              = clrDarkBlue;
int OnInit()
  {
//---
   CreatePanel();
   CreateCheckgroup();
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   CreatePanel();
   
  }
//+------------------------------------------------------------------+
void CreatePanel(void)
  {
   panel.Create(0,"P1",0,0,0,150,150);
   panel.ColorBorder(CONTROLS_DIALOG_COLOR_BORDER_LIGHT);
   panel.Alignment(WND_ALIGN_CLIENT,0,0,0,0);
   panel.ColorBackground(ColorBG);
   panel.BorderType(BORDER_RAISED);
   panel.Shift(Position_Comment+40,20);

   L1.Create(0,"L1",0,0,0,0,0);
   L1.Shift(Position_Comment+45,22);
   L1.Text("Panel V1");
   L1.Color(clrWhite);
   L1.FontSize(10);
   
   L2.Create(0,"L2",0,0,0,0,0);
   L2.Shift(Position_Comment+40,30);
   L2.Text(" ____________________");
   L2.Color(clrWhite);

   L3.Create(0,"L3",0,0,0,0,0);
   L3.Shift(Position_Comment+45,70);
   L3.Text("TakeProfit : ");
   L3.Color(clrWhite);
   L3.FontSize(10);

   L4.Create(0,"L4",0,0,0,0,0);
   L4.Shift(Position_Comment+120,70);
   L4.Text(IntegerToString(cbg.Value()));
   L4.Color(clrWhite);
   L4.FontSize(10);
  }
void CreateCheckgroup(void)
  {
   cbg.Create(0,"CheckGroup",0,5,5,100,60);
   cbg.ColorBackground(CONTROLS_DIALOG_COLOR_BG);
   cbg.BorderType(BORDER_FLAT);
   cbg.ColorBorder(CONTROLS_DIALOG_COLOR_BORDER_LIGHT);
   cbg.Shift(Position_Comment+45,100);
   cbg.AddItem("TP : 1 ",1<<1);
   cbg.AddItem("TP : 2 ",1<<2);
   cbg.AddItem("TP : 3 ",1<<3);
  }

*

ออฟไลน์ iRuler

  • *
  • 1,268
  • 40
ไปหาอ่านมา ดูเหมือนว่ามันจะต้องเอาใส่ CAppDialog นะครับ เพราะต้องใช้ EVENT_MAP_BEGIN
ใช้ OnChartEvent ลองแล้วไม่ work


 (TH)**

*

ออฟไลน์ gaothun

  • **
  • 113
  • 0
ผมได้ทำตัวติ๊กกรุ๊ป ออกมาใน panel ครับ ผลปรากฏตามรูปครับ มันมีปัญหาดังนี้ครับ
-  ตัวติ๊ก มันสามารถติ๊กได้ทั้งสามหัวข้อพร้อมกันได้เลย แต่ผมต้องการให้ติ๊กแล้วเลือกหัวข้อเดียว
-  ผมไม่สามารถดึงค่าหัวข้อที่ติ๊กออกมาเพื่อใช้งานได้ครับ เช่น ติ๊ก Tp1 มีค่าเท่ากับ 1 , ติ๊ก tp2 มีค่าเท่ากับ 2


//+------------------------------------------------------------------+
//|                                                     Panel V1.mq4 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#include <Controls\Panel.mqh>
CPanel   panel;
#include <Controls\RadioGroup.mqh>
CRadioGroup cbg;
#include <Controls\Label.mqh>
CLabel L1,L2,L3,L4;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
extern int     Position_Comment     = 1000;
extern color   ColorBG              = clrDarkBlue;
int OnInit()
  {
//---
   CreatePanel();
   CreateCheckgroup();
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   CreatePanel();
   
  }
//+------------------------------------------------------------------+
void CreatePanel(void)
  {
   panel.Create(0,"P1",0,0,0,150,150);
   panel.ColorBorder(CONTROLS_DIALOG_COLOR_BORDER_LIGHT);
   panel.Alignment(WND_ALIGN_CLIENT,0,0,0,0);
   panel.ColorBackground(ColorBG);
   panel.BorderType(BORDER_RAISED);
   panel.Shift(Position_Comment+40,20);

   L1.Create(0,"L1",0,0,0,0,0);
   L1.Shift(Position_Comment+45,22);
   L1.Text("Panel V1");
   L1.Color(clrWhite);
   L1.FontSize(10);
   
   L2.Create(0,"L2",0,0,0,0,0);
   L2.Shift(Position_Comment+40,30);
   L2.Text(" ____________________");
   L2.Color(clrWhite);

   L3.Create(0,"L3",0,0,0,0,0);
   L3.Shift(Position_Comment+45,70);
   L3.Text("TakeProfit : ");
   L3.Color(clrWhite);
   L3.FontSize(10);

   L4.Create(0,"L4",0,0,0,0,0);
   L4.Shift(Position_Comment+120,70);
   L4.Text(IntegerToString(cbg.Value()));
   L4.Color(clrWhite);
   L4.FontSize(10);
  }
void CreateCheckgroup(void)
  {
   cbg.Create(0,"CheckGroup",0,5,5,100,60);
   cbg.ColorBackground(CONTROLS_DIALOG_COLOR_BG);
   cbg.BorderType(BORDER_FLAT);
   cbg.ColorBorder(CONTROLS_DIALOG_COLOR_BORDER_LIGHT);
   cbg.Shift(Position_Comment+45,100);
   cbg.AddItem("TP : 1 ",1<<1);
   cbg.AddItem("TP : 2 ",1<<2);
   cbg.AddItem("TP : 3 ",1<<3);
  }

ท่านครับ เราสามารถกำหนดให้ panel ชิดด้านขวาได้อย่างไรครับ ที่ใช้คำสั่งแบบ CORNER_RIGHT_UPPER โดยไม่ต้องกำหนดตำแหน่ง ใน shift

Tags: