Article-17960-MQL5-MVC-View.../TestControls.mq5

139 lines
11 KiB
MQL5

2026-03-30 08:16:07 +07:00
<EFBFBD><EFBFBD>//+------------------------------------------------------------------+
//| TestControls.mq5 |
//| Copyright 2025, MetaQuotes Ltd. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link "https://www.mql5.com"
#property version "1.00"
//+------------------------------------------------------------------+
//| :;NG05<K5 181;8>B5:8 |
//+------------------------------------------------------------------+
#include "Controls\Base.mqh"
CCanvasBase *obj1=NULL; // #:070B5;L =0 ?5@2K9 3@0D8G5A:89 M;5<5=B
CCanvasBase *obj2=NULL; // #:070B5;L =0 2B>@>9 3@0D8G5A:89 M;5<5=B
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//--- !>740Q< ?5@2K9 3@0D8G5A:89 M;5<5=B
obj1=new CCanvasBase(0,0,"TestScr1",100,40,160,160);
obj1.SetAlpha(250); // @>7@0G=>ABL
obj1.SetBorderWidth(6); // (8@8=0 @0<:8
//--- 0;8205< F25B>< D>= 8 @8AC5< @0<:C A >BABC?>< 2 >48= ?8:A5;L >B CAB0=>2;5==>9 H8@8=K @0<:8
obj1.Fill(clrDodgerBlue,false);
uint wd=obj1.BorderWidth();
obj1.GetBackground().Rectangle(wd-2,wd-2,obj1.Width()-wd+1,obj1.Height()-wd+1,ColorToARGB(clrWheat));
obj1.Update(false);
//--- #AB0=02;8205< =08<5=>20=85 8 845=B8D8:0B>@ M;5<5=B0 8 2K2>48< 2 6C@=0; 53> >?8A0=85
obj1.SetName("Rectangle 1");
obj1.SetID(1);
obj1.Print();
//--- =CB@8 ?5@2>3> A>740Q< 2B>@>9 M;5<5=B, CAB0=02;8205< 4;O =53> ?@>7@0G=>ABL
//--- 8 C:07K205< 4;O 2B>@>3> M;5<5=B0 2 :0G5AB25 :>=B59=5@0 ?5@2K9 M;5<5=B
int shift=10;
int x=obj1.X()+shift;
int y=obj1.Y()+shift;
int w=obj1.Width()-shift*2;
int h=obj1.Height()-shift*2;
obj2=new CCanvasBase(0,0,"TestScr2",x,y,w,h);
obj2.SetAlpha(250);
obj2.SetContainerObj(obj1);
//--- =8F80;878@C5< F25B D>=0, C:07K205< F25B 4;O 701;>:8@>20==>3> M;5<5=B0
//--- 8 45;05< B5:CI8< F25B>< D>=0 M;5<5=B0 F25B D>=0, 7040==K9 ?> C<>;G0=8N
obj2.InitBackColors(clrLime);
obj2.InitBackColorBlocked(clrLightGray);
obj2.BackColorToDefault();
//--- =8F80;878@C5< F25B ?5@54=53> ?;0=0, C:07K205< F25B 4;O 701;>:8@>20==>3> M;5<5=B0
//--- 8 45;05< B5:CI8< F25B>< ?5@54=53> ?;0=0 M;5<5=B0 F25B B5:AB0, 7040==K9 ?> C<>;G0=8N
obj2.InitForeColors(clrBlack);
obj2.InitForeColorBlocked(clrDimGray);
obj2.ForeColorToDefault();
//--- =8F80;878@C5< F25B @0<:8, C:07K205< F25B 4;O 701;>:8@>20==>3> M;5<5=B0
//--- 8 45;05< B5:CI8< F25B>< @0<:8 M;5<5=B0 F25B @0<:8, 7040==K9 ?> C<>;G0=8N
obj2.InitBorderColors(clrBlue);
obj2.InitBorderColorBlocked(clrSilver);
obj2.BorderColorToDefault();
//--- #AB0=02;8205< =08<5=>20=85 8 845=B8D8:0B>@ M;5<5=B0,
//--- 2K2>48< 2 6C@=0; 53> >?8A0=85, 8 @8AC5< M;5<5=B
obj2.SetName("Rectangle 2");
obj2.SetID(2);
obj2.Print();
obj2.Draw(true);
//--- @>25@8< >1@57:C M;5<5=B0 ?> 3@0=8F0< 53> :>=B59=5@0
int ms=1; // 045@6:0 ?@8 A<5I5=88 2 <8;;8A5:C=40E
int total=obj1.Width()-shift; // >;8G5AB2> 8B5@0F89 F8:;0 A<5I5=8O
//--- 4Q< A5:C=4C 8 A<5I05< 2=CB@5==89 >1J5:B 70 ;52K9 :@09 :>=B59=5@0
Sleep(1000);
ShiftHorisontal(-1,total,ms);
//--- 4Q< A5:C=4C 8 2>72@0I05< 2=CB@5==89 >1J5:B =0 8AE>4=>5 <5AB>
Sleep(1000);
ShiftHorisontal(1,total,ms);
//--- 4Q< A5:C=4C 8 A<5I05< 2=CB@5==89 >1J5:B 70 ?@02K9 :@09 :>=B59=5@0
Sleep(1000);
ShiftHorisontal(1,total,ms);
//--- 4Q< A5:C=4C 8 2>72@0I05< 2=CB@5==89 >1J5:B =0 8AE>4=>5 <5AB>
Sleep(1000);
ShiftHorisontal(-1,total,ms);
//--- 4Q< A5:C=4C 8 A<5I05< 2=CB@5==89 >1J5:B 70 25@E=89 :@09 :>=B59=5@0
Sleep(1000);
ShiftVertical(-1,total,ms);
//--- 4Q< A5:C=4C 8 2>72@0I05< 2=CB@5==89 >1J5:B =0 8AE>4=>5 <5AB>
Sleep(1000);
ShiftVertical(1,total,ms);
//--- 4Q< A5:C=4C 8 A<5I05< 2=CB@5==89 >1J5:B 70 =86=89 :@09 :>=B59=5@0
Sleep(1000);
ShiftVertical(1,total,ms);
//--- 4Q< A5:C=4C 8 2>72@0I05< 2=CB@5==89 >1J5:B =0 8AE>4=>5 <5AB>
Sleep(1000);
ShiftVertical(-1,total,ms);
//--- 68405< A5:C=4C 8 AB028< 2=CB@5==5<C >1J5:BC D;03 701;>:8@>20==>3> M;5<5=B0
Sleep(1000);
obj2.Block(true);
//--- '5@57 B@8 A5:C=4K, ?5@54 7025@H5=85< @01>BK, G8AB8< 70 A>1>9
Sleep(3000);
delete obj1;
delete obj2;
}
//+------------------------------------------------------------------+
//| !<5I05B >1J5:B ?> 3>@87>=B0;8 |
//+------------------------------------------------------------------+
void ShiftHorisontal(const int dx, const int total, const int delay)
{
for(int i=0;i<total;i++)
{
if(obj2.ShiftX(dx))
ChartRedraw();
Sleep(delay);
}
}
//+------------------------------------------------------------------+
//| !<5I05B >1J5:B ?> 25@B8:0;8 |
//+------------------------------------------------------------------+
void ShiftVertical(const int dy, const int total, const int delay)
{
for(int i=0;i<total;i++)
{
if(obj2.ShiftY(dy))
ChartRedraw();
Sleep(delay);
}
}
//+------------------------------------------------------------------+