MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1138

 
Igor Makanu :

SB'yi uzun süredir kullanmıyorum, yarısını hatırlamıyorum ama OBJ_EDIT nesnesinin ChartRedraw()'ını her seferinde yaparak programlı olarak seçip seçimi kaldırmayı deneyin, nesnelerin isimlerini SB'den alabilirsiniz, bir Name yöntemi olmalı

ama ya eğer?

Not: ve Sleep() büyük olasılıkla ChartRedraw() için gereklidir, ancak Sleep() göstergelerde çalışmaz

nesnenin OBJPROP_SELECTED özelliğinin TRUE olmasını kastediyorsanız, o değil. Bu durumda nesne grafikte vurgulanacağı için giriş alanı aktif hale gelmeyecektir.
 
Maksym Mudrakov :
nesnenin OBJPROP_SELECTED özelliğinin TRUE olmasını kastediyorsanız, o değil. Bu durumda nesne grafikte vurgulanacağı için giriş alanı aktif hale gelmeyecektir.

Panellerde ne olduğunu kontrol ettim, öyle olmuyor, OBJ_EDIT nesnesinin seçimi

o zaman bilmiyorum, forumda arama yapın:

"sekme"

sekme

"giriş odağı"

 
Terminali kapatmadan MQL5/logs/*.log dosyasını bir şekilde güncellemek mümkün mü? Taze içeriğini görüntülemek için.
 
ascerdfg :
Terminali kapatmadan MQL5/logs/*.log dosyasını güncellemenin bir yolu var mı? Taze içeriğini görüntülemek için.

bağlam menüsünde terminalde sağ tıklayın - açın, bu, günlük dosyasına erişmenizi sağlar

uygun şekilde yapılmadı

 
Igor Makanu :

bağlam menüsünde terminalde sağ tıklayın - açın, bu, günlük dosyasına erişmenizi sağlar

uygun şekilde yapılmadı

Nereye tıklanır?
 
ascerdfg :
Nereye tıklanır?

Rzhevsky'nin susması gerekiyordu ...


 
Maksym Mudrakov :

Grafikte OBJ_EDIT türünde iki nesne var

Amaç, Tab tuşuna basarak bu iki giriş alanı arasında geçiş yapmaktır.

Asıl sorun klavye olayını okumak değil, giriş alanının programlı olarak nasıl aktif hale getirileceğidir.

user32.dll kullanmanız gerektiğini anlıyorum ama bu konuda güçlü olmadığım için yardım istiyorum.

Teşekkür ederim.

çözüm bulundu:

 #property strict

struct RECT
  {
   int                Left;   // x position of upper-left corner
   int                Top;     // y position of upper-left corner
   int                Right;   // x position of lower-right corner
   int                Bottom; // y position of lower-right corner
  };
struct POINT
  {
   int                posX;   // x position
   int                posY;   // y position
  };

#import "user32.dll"
void   mouse_event( int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);
bool   GetWindowRect( int hWnd,RECT &lpRect);
int    GetSystemMetrics( int nIndex);
bool   GetCursorPos(POINT &lpPoint);
bool   SetCursorPos( int x, int y);
#import

string edits[], pref;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
   pref= "EA_EDIT_SELECT_" ;
   int size= 6 ;
   ArrayResize (edits,size);

   int width= 100 , heigh= 25 ;
   int x=width, y=heigh;
   for ( int i= 0 ; i<size; i++)
     {
       string num=( string )(i/ 2 + 1 );
       string text= "Name " ;
      edits[i]=pref+( string )i;
       if (i% 2 == 0 )
        {
         text= "First " +text+num;
         x=width;
         y+=heigh+ 5 ;
        }
       else
        {
         text= "Last " +text+num;
         x= 2 *width+ 5 ;
        }
      EditCreate(edits[i],x,y,width,heigh,text);
     }
   EventEditSelect(edits);
   return ( INIT_SUCCEEDED );

  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
   ObjectsDeleteAll ( 0 ,pref,- 1 ,- 1 );
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent ( const int id,
                   const long &lparam,
                   const double &dparam,
                   const string &sparam)
  {
   if (id == CHARTEVENT_KEYDOWN )
      EventEditSelect(edits);
   else
       if (id == CHARTEVENT_OBJECT_ENDEDIT )
        {
         bool stateTab= TerminalInfoInteger ( TERMINAL_KEYSTATE_TAB )< 0 ;
         if (stateTab)
            EventEditSelect(edits);
        }
  }
//--------------------------------------------------------------------+
//      Create Edit                                                   |
//--------------------------------------------------------------------+
void EditCreate( string            name= "Edit" ,               // object name
                 int               x= 0 ,                       // X coordinate
                 int               y= 0 ,                       // Y coordinate
                 int               width= 50 ,                 // width
                 int               height= 18 ,                 // height
                 string            text= "Text" )               // text
  {
   ObjectCreate ( 0 ,name, OBJ_EDIT , 0 , 0 , 0 ) ;
   ObjectSetInteger ( 0 ,name, OBJPROP_XDISTANCE ,x);
   ObjectSetInteger ( 0 ,name, OBJPROP_YDISTANCE ,y);
   ObjectSetInteger ( 0 ,name, OBJPROP_XSIZE ,width);
   ObjectSetInteger ( 0 ,name, OBJPROP_YSIZE ,height);
   ObjectSetString ( 0 ,name, OBJPROP_TEXT ,text);
   ObjectSetString ( 0 ,name, OBJPROP_FONT , "Arial" );
   ObjectSetInteger ( 0 ,name, OBJPROP_FONTSIZE , 12 );
   ObjectSetInteger ( 0 ,name, OBJPROP_ALIGN , ALIGN_CENTER );
   ObjectSetInteger ( 0 ,name, OBJPROP_READONLY , false );
   ObjectSetInteger ( 0 ,name, OBJPROP_CORNER , CORNER_LEFT_UPPER );
   ObjectSetInteger ( 0 ,name, OBJPROP_COLOR , clrBlack );
   ObjectSetInteger ( 0 ,name, OBJPROP_BGCOLOR , clrWhite );
   ObjectSetInteger ( 0 ,name, OBJPROP_BORDER_COLOR , clrGray );
   ObjectSetInteger ( 0 ,name, OBJPROP_BACK , false );
   ObjectSetInteger ( 0 ,name, OBJPROP_SELECTABLE , false );
   ObjectSetInteger ( 0 ,name, OBJPROP_SELECTED , false );
  }
//--------------------------------------------------------------------+
//      MOVE BETWEEN OBJ_EDIT BY TAB KEY                              |
//--------------------------------------------------------------------+
void EventEditSelect( string &editNames[])
  {
   bool back= TerminalInfoInteger ( TERMINAL_KEYSTATE_SHIFT )< 0 ;

   int size= ArraySize (editNames);
   if (size== 0 )
       return ;
   static int index= 0 ;

   if (!back)
     {
       if (index==size- 1 )
         index= 0 ;
       else
         index++;
     }
   else
     {
       if (index== 0 )
         index=size- 1 ;
       else
         index--;
     }

   string name=editNames[index];
   int x=( int ) ObjectGetInteger ( 0 ,name, OBJPROP_XDISTANCE );
   int y=( int ) ObjectGetInteger ( 0 ,name, OBJPROP_YDISTANCE );
   int width=( int ) ObjectGetInteger ( 0 ,name, OBJPROP_XSIZE );
   int height=( int ) ObjectGetInteger ( 0 ,name, OBJPROP_YSIZE );

   MouseClick( int (( 2 *x+width)/ 2 ), int (( 2 *y+height)/ 2 ));
  }
void MouseClick( const int x, const int y)
  {
   Sleep ( 50 );
   POINT currentPoint;
   GetCursorPos(currentPoint);
   POINT clickPoint=ConvertXY(x,y);
   mouse_event( 0x8007 ,clickPoint.posX,clickPoint.posY, 0 , 0 );
   SetCursorPos(currentPoint.posX,currentPoint.posY);
   Sleep ( 50 );
  }
POINT ConvertXY( const int x, const int y)
  {
   POINT AbsolutePoint;
   RECT  WndRect;
   int BorderX= 5 ,BorderY= 5 ;
   int screenX=GetSystemMetrics( 0 );
   int screenY=GetSystemMetrics( 1 );
   GetWindowRect(WindowHandle( _Symbol , _Period ),WndRect);
   AbsolutePoint.posX= int ((x+WndRect.Left+BorderX)* 65535 /screenX);
   AbsolutePoint.posY= int ((y+WndRect.Top +BorderY)* 65535 /screenY);
   return (AbsolutePoint);
  }
 
MQL5, ObjectCreate hiçbir şey çizmez, nesneler nesneler listesinde bile görünmez. OnInit'te oluşturma gerçekleşir, sorun bu olabilir mi?
Bu durumda robotu tablodan kaldırırsanız oluşturulan nesneler görüntülenecektir.
 
Roman Sharanov :
MQL5, ObjectCreate hiçbir şey çizmez, nesneler nesneler listesinde bile görünmez. OnInit'te oluşturma gerçekleşir, sorun bu olabilir mi?
Bu durumda robotu tablodan kaldırırsanız oluşturulan nesneler görüntülenecektir.

Nesnenin koordinatlarının maliyetinin ve süresinin sıfıra eşit olması mümkündür. Bunu şu şekilde kontrol edin: Görünen iletişim kutusunda Ctrl+B'ye basın, "Tümü" düğmesini tıklayın ve mevcut nesnelerin listesini görün. Varsa, özellikleri açın ve koordinatları görün.

 
Artyom Trishkin :

Rzhevsky'nin susması gerekiyordu ...


Sağ fare düğmesine nerede basılmalıdır?