Вопрос от НОВИЧКА к СУПЕРПРОФИ, когда ПРОФИ не могут помочь - страница 2

 
XmaksasX:

не такой результат нужен?



К сожалению нет( Вот например: "Колонка 1, строка 1" - зеленого цвета, "Колонка 2, строка 2" - желтого и т.д. А Вы поменяли просто цвет фона, это рулить я потом собираюсь как опцию.
 
FAQ:

и вызов в таблице :


Спасибо Огромное! Теперь вопросов стало еще больше)))
 
//+------------------------------------------------------------------+
//|                                               CommandButtons.mq4 |
//+------------------------------------------------------------------+
#define tName "ctext"
#define bName "button"
#define sName "ashadow"
#define Wnd 0
int xFontSize;
int xBoxFontSize;
int xBoxWidth;
int xTextXMargin;
int xTextYMargin;
int xHeaderCorrector;
int xShadowCorrector;
int leftmarg;
int xnmCount;
//#include <StringFunctions.mqh>
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool    xTableCreate(string  bData[],       // Вход -  текст кнопки, Выход координаты кнопки (разделитель ";")
                        int bColor[],       // цвет текста \ фона \ тени
                        int   bWidth,       // ширина в блоках  
                        int    bSize = 4,   // размер в УЕ   
                        int  stXdist = 10,  // стартовое дистанция по Х 
                        int  stYdist = 10,  // стартовое дистанция по Y
                        int  divider = 0,
                        bool bDirect = false,// false = горизонтальное расположение \ true = вертикальное 
                     string    bFont = "Arial",
                     string   bGname = ""  // "глобальное имя" кнопки , нужно при организации нескольких блоков                     
                      ){
   int i,a,b,c,co,sz;
   int xm,ym,xd,yd,xdiv;
   string nm,tx;                   
   int bCount = ArraySize(bData);
   xSize(bSize);
   for(i=0;i<bCount;i++){int div;
      xdiv-=leftmarg;
      if(divider!=0){
         if(bDirect){
            if(i%divider==0){div += 1;}
         }else{
            if(i%divider==0){xdiv += 1;}
         }
      }
      if(!bDirect){
         xm = xBoxWidth * bWidth * i + xdiv;
         xd = stXdist + xTextXMargin + xm;
         yd = stYdist + xTextYMargin;            
      }else{
         ym = xBoxWidth *i +((xTextYMargin + xShadowCorrector )*i)+ div;
         xd = stXdist + xTextXMargin;
         yd = stYdist + xTextYMargin + ym;            
      }    
      nm = StringConcatenate(tName,bGname,"_",i,"_",c);
      tx = firstSecond(bData[i],true);
      string tx1 = tx; 
      xSetlabel(nm,tx,xFontSize,bColor[0],xd,yd,bFont);// текст в кнопке 
      int txLn = StringLen(tx);
      tx = firstSecond(bData[i],false);
      if(tx!=""){
         //tx = dStr(StrToDouble(tx));
         xSetlabel(nm+nm,tx,xFontSize,data2color(tx,false),xd+(xFontSize*txLn)+leftmarg,yd,bFont);//цифры в кнопке 
         
      }     
      for(c=0;c<bWidth;c++){    
         if(!bDirect){
            xm = xBoxWidth * bWidth*i+xdiv;
            xd = stXdist+((xBoxWidth+xHeaderCorrector)*c + xm);
            yd = stYdist;            
         }else{
            ym = xBoxWidth *i +((xTextYMargin + xShadowCorrector )*i)+ div;
            xd = stXdist+((xBoxWidth+xHeaderCorrector)*c);
            yd = stYdist+ym;            
         }         
         nm = StringConcatenate(bName,bGname,"_",i,"_",c); 
         if(tx!=""||tx1!=""){
            xSetlabel(nm,"n",xBoxFontSize-xHeaderCorrector,bColor[1],xd,yd+xHeaderCorrector,"WingDings");
         }// фон кнопки                
      }
   }
   return;
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string firstSecond(string in, bool fs){int pos = StringFind(in,";",0);
   if(fs){
      if(pos<=0){return(in);}
      return(StringSubstr(in,0,pos));
   }else{
      if(pos<=0){return("");}
      return(StringSubstr(in,pos+1));
   }
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
color data2color(string in, bool typ){
   color digCol[]={Red,Green,Blue};
   color linCol[]={Red,Tomato,Coral,Yellow,Lime};
   double out = StrToDouble(in);
   if(typ){
      if(out<0){return(digCol[0]);}
      if(out>0){return(digCol[2]);}
      return(digCol[1]);
   }else{
      if(out<=1){return(linCol[0]);}
      if(out<3&&out>1){return(linCol[1]);}
      if(out<6&&out>2){return(linCol[2]);}
      if(out<8&&out>6){return(linCol[3]);}
      if(out>8){return(linCol[4]);}
   }
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool xSetlabel(string nm,string tx,int sz, int cl, int xd, int yd, string fn){
   if(ObjectFind(nm)!=Wnd){ObjectCreate(nm,23,Wnd,0,0);}
   ObjectSet(nm,OBJPROP_XDISTANCE,xd);
   ObjectSet(nm,OBJPROP_YDISTANCE,yd);
   ObjectSet(nm,OBJPROP_BACK,false);
   ObjectSet(nm,OBJPROP_CORNER,0);
   ObjectSetText(nm,tx,sz,fn,cl);
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void xSize(int tTableSize){
   if(tTableSize<1 ){tTableSize=1; }
   if(tTableSize>12){tTableSize=12;}
   switch(tTableSize){
      case 1:  leftmarg=1; xFontSize=5;   xBoxFontSize=10;  xBoxWidth=8;   xTextXMargin=5;   xTextYMargin=4;   xHeaderCorrector=-1; xShadowCorrector=-2; break;
      case 2:  leftmarg=2; xFontSize=6;   xBoxFontSize=14;  xBoxWidth=10;  xTextXMargin=6;   xTextYMargin=5;   xHeaderCorrector=-1; xShadowCorrector=-2; break;
      case 3:  leftmarg=3; xFontSize=7;   xBoxFontSize=16;  xBoxWidth=12;  xTextXMargin=6;   xTextYMargin=6;   xHeaderCorrector=-1; xShadowCorrector=-3; break;
      case 4:  leftmarg=4; xFontSize=8;   xBoxFontSize=18;  xBoxWidth=14;  xTextXMargin=6;   xTextYMargin=6;   xHeaderCorrector=-1; xShadowCorrector=-5; break;      
      case 5:  leftmarg=4; xFontSize=10;  xBoxFontSize=22;  xBoxWidth=17;  xTextXMargin=8;   xTextYMargin=8;   xHeaderCorrector=-1; xShadowCorrector=-7; break;
      case 6:  leftmarg=8; xFontSize=12;  xBoxFontSize=26;  xBoxWidth=20;  xTextXMargin=9;   xTextYMargin=9;   xHeaderCorrector=-2; xShadowCorrector=-7; break;      
      case 7:  leftmarg=9; xFontSize=14;  xBoxFontSize=32;  xBoxWidth=24;  xTextXMargin=12;  xTextYMargin=12;  xHeaderCorrector=-2; xShadowCorrector=-9; break;        
      case 8:  leftmarg=7; xFontSize=15;  xBoxFontSize=36;  xBoxWidth=28;  xTextXMargin=7;  xTextYMargin=11;  xHeaderCorrector=-3; xShadowCorrector=-8; break;   
      case 9:  leftmarg=1; xFontSize=18;  xBoxFontSize=42;  xBoxWidth=32;  xTextXMargin=18;  xTextYMargin=18;  xHeaderCorrector=-4; xShadowCorrector=-7; break;              
      case 10: leftmarg=1; xFontSize=20;  xBoxFontSize=46;  xBoxWidth=35;  xTextXMargin=7;  xTextYMargin=13;  xHeaderCorrector=-4; xShadowCorrector=-8; break;   
      case 11: leftmarg=1; xFontSize=22;  xBoxFontSize=48;  xBoxWidth=37;  xTextXMargin=18;  xTextYMargin=18;  xHeaderCorrector=-4; xShadowCorrector=-8; break;     
      case 12: leftmarg=1; xFontSize=24;  xBoxFontSize=52;  xBoxWidth=40;  xTextXMargin=21;  xTextYMargin=21;  xHeaderCorrector=-6; xShadowCorrector=-10; break;                 
   }
   return;
}
 
Давно делал, многого не помню...
 
FAQ:
Давно делал, многого не помню...

Спасибо Вам, так уже легче, буду учиться разбираться!
 

Вопрос по с++.

Вот такая объява:

virtual void AssertValid() const;


Как тут интерпретировать атрибут - const ?

 
Не должен изменять объект.
 
TheXpert:
Не должен изменять объект.

class CTextEditorDoc

{

....

Public:

int i;

....

....

virtual void AssertValid() const;

...

...

}

CTextEditorDoc Object;


Вы имеете ввиду, что функция AssertValid() должна работать с переменными объекта Object только на чтение ?

К примеру, в этой функции не должно быть кода, изменяющего значение Object.i ?

Т.е., такой вот код - Object.i = 10; в этой функции не допускается ?

 
Спецификатор const указывает, что метод не модифицирует члены класса (кроме mutable, но это отдельный разговор).
 
TheXpert:
Спецификатор const указывает, что метод не модифицирует члены класса (кроме mutable, но это отдельный разговор).
Все понял точно. Большое Вам спасибо.