GUI à l'initiative de la foule. Test bêta ouvert. - page 24

 

J'ai relu l'ensemble du fil de discussion et j'ai vu de nombreux exemples de la façon dont "l'interface est conçue dans un langage de balisage". Mais je n'ai pas vu un seul exemple de Peter qui montre exactement comment le "code d'interface" interagit avec le programme principal du développeur.

Nikolaï et moi avons essayé plusieurs fois de réduire Peter à ce sujet, mais je n'ai vu nulle part un exemple de code pour l'interaction entre le programme principal et l'interface graphique.

J'ai également rencontré l'expression "print code" à plusieurs reprises en lisant le fil de discussion. Piotr, quel est le sens de cette phrase ? Je pense qu'il y a même un tel commandement dans le "vigin" de Petr ...... Pourquoi imprimer le code ? Pourquoi ne peut-on pas l'enregistrer dans un fichier texte avec le bon nom et au bon endroit ?

Peter, ne vous précipitez pas sur le visualiseur, abordons l'applicabilité de votre suggestion dans un contexte général.

En d'autres termes, dessinez un formulaire comportant quelques boutons, une liste déroulante, quelques cases à cocher et un champ de saisie. Pour l'instant, comment faire référence à ces contrôles dans le code procédural, leur donner des valeurs et en obtenir.

Une fois que tu auras réglé ça, tu pourras passer à autre chose.

 
Алексей Барбашин:

J'ai relu l'ensemble du fil de discussion et j'ai vu de nombreux exemples de la façon dont "l'interface est conçue dans un langage de balisage". Mais je n'ai pas vu un seul exemple de Peter qui montre exactement comment le "code d'interface" interagit avec le programme principal du développeur.

Nikolaï et moi avons essayé plusieurs fois d'amener Peter sur ce point, mais je n'ai vu nulle part un exemple de code pour l'interaction entre le programme principal et l'interface graphique.

J'ai également rencontré l'expression "print code" à plusieurs reprises en lisant le fil de discussion. Piotr, quel est le sens de cette phrase ? Je pense qu'il y a même un tel commandement dans le "vigin" de Petr ...... Pourquoi imprimer le code ? Pourquoi ne peut-on pas l'enregistrer dans un fichier texte avec le bon nom et au bon endroit ?

Peter, ne vous précipitez pas sur le visualiseur, abordons l'applicabilité de votre suggestion dans un contexte général.

En d'autres termes, dessinez un formulaire comportant quelques boutons, une liste déroulante, quelques cases à cocher et un champ de saisie. Pour l'instant, comment faire référence à ces contrôles dans le code procédural, leur donner des valeurs et en obtenir.

Dès que vous l'aurez compris, vous passerez à autre chose.

Trouvez le profil d'Oleg Papkov. Je lui ai fait un gui à 11 fenêtres avec beaucoup d'éléments différents dans le langage de balisage, il y a un an. Tout fonctionne. Il sait mieux que quiconque de quoi il parle. Je suis très occupé en ce moment.

@Oleg Papkov

EtAlexandr Atagyan(voici son panel)

 

Voici le fichier de connexion pour ce panneau. Je l'ai trouvé après tout.

Dossiers :
 

Ce fichier contient des fonctionnalités permettant d'appeler des contrôles, de récupérer leurs valeurs, de définir des valeurs et des états. La fonctionnalité est standard et l'utilisateur n'a pas besoin de regarder dans le fichier.

Dossiers :
 
Реter Konow:

Voici le fichier de connexion pour ce panneau. Je l'ai trouvé après tout.

Je n'ai pas vu d'interaction entre le programme principal et l'interface dans ce code. Apparemment, nous parlons des langues complètement différentes.

 
Алексей Барбашин:

Je n'ai pas vu d'interaction entre le programme principal et l'interface dans ce code. Apparemment, nous parlons des langues complètement différentes.

Je n'ai pas le programme principal. Les personnes à qui j'ai fait ces interfaces l'ont. L'interface graphique était connectée à leur programme(dont je n'ai pas vu le code du tout) via des ressources. Et maintenant, la connexion sera intégrée à l'intérieur. C'est-à-dire qu'il fonctionnera sans ressources. Directement.

 
Реter Konow:

Je n'ai pas le programme principal. Les personnes à qui j'ai fait ces interfaces l'ont. L'interface graphique était connectée à leur programme(dont je n'ai pas vu le code du tout) via des ressources. Et maintenant, la connexion sera intégrée à l'intérieur. C'est-à-dire qu'il fonctionnera sans ressources. Directement.

Ce n'est pas exactement comme ça que ça marche. Vous faites un éditeur d'interface visuelle. La partie visuelle de votre application est exactement l'interface graphique que votre application crée. Et ce qui est fait "en coulisse", comment les nouveaux textes de l'interface graphique sont créés, est le programme principal.

Mais comme vous avez votre propre vision de la programmation.....

 
Алексей Барбашин:

Ce n'est pas tout à fait ça. Vous réalisez un éditeur d'interface visuelle. La partie visuelle de votre application est exactement l'interface graphique que votre application crée. Et ce qui est fait "en coulisses", comment les textes de la nouvelle interface graphique sont créés, est le programme principal.

Mais comme vous avez votre propre vision de la programmation.....

Nous avons une énorme divergence de vues, Alexey. Il est préférable de s'en tenir là. On ne peut pas trouver un langage commun tout de suite et cela prend beaucoup de temps. Je vais terminer la version minimale et vous verrez par vous-même. Je vais essayer de le faire pour après-demain.

 
Алексей Барбашин:

Je n'ai pas vu d'interaction entre le programme principal et l'interface dans ce code. Apparemment, nous parlons des langues complètement différentes.

Je pense que c'est ce que vous voulez dire :

void SMSG(string par0 = "0", string par1 = "0", string par2 = "0", string par3 = "0")
{
 
 SEND send; uint i1 = 0;
 if(par0 != "0"){MSG += par0 + "`" + par1 + "`" + par2 + "`" + par3 + "~";}
 if(MSG != NULL && (par0 == (string)DRIVE_IS_READY || GUI_ЗАГРУЖЕН))
   {
 
    StringToCharArray(MSG,send.char_Send);
    ResourceCreate("::DRIVE_2_EA",send.uint_Send,8000,1,0,0,0,COLOR_FORMAT_XRGB_NOALPHA);
    //ArrayInitialize(send.char_Send,0);
    while(send.uint_Send[i1]){send.uint_Send[i1] = 0; i1++;}
    MSG = NULL;
   } 
}
//--------------------------------------------------------------------

//--------------------- -----------------------------------------------
void RMSG(bool Internal_message = 0)
{
 READ read; uint width,height, i1 = 0; string msg[], pars[]; bool q1 = 0,q2 = 0,q3 = 0;bool t = 0; string msg2read = NULL;
 int Номер_колонки = 0,T_header = 0,Программный_вызов = 0,Элемент = 0;
 read.uint_Read[0] = 0;
 //------------------------------------------------------------------------------------
 EA_ADRESS = ObjectGetString(0,"EA_2_DRIVE",OBJPROP_TEXT);
 
 //------------------------------------------------------------------------------------
 if(!Internal_message)t = ResourceReadImage(EA_ADRESS + "::EA_2_DRIVE",read.uint_Read,width,height);

 if(read.uint_Read[0] || Internal_message)
   { 
    int cnvs[100];
    int cnvs_2[100];
    //--------------------------------------
    ArrayInitialize(cnvs,0);
    ArrayInitialize(cnvs_2,0);
    //--------------------------------------
    Не_рисовать = 1;
    int Полная_перерисовка_канваса = 0;
    //--------------------------------------
    if(!Internal_message)msg2read = CharArrayToString(read.char_Read);
    else                 msg2read = i_MSG;
    //---------------------------------------------------------------------   
    ushort Msep = StringGetCharacter("~",0);
    int s = StringSplit(msg2read,Msep,msg);
    //---------------------------------------------------------------------    
    for(int a1 = 0; a1 < s; a1++)
      {
       ushort Psep = StringGetCharacter("`",0);
       int   w1   = StringSplit(msg[a1],Psep,pars);
       //--------------------------------------
       if(w1)
       {
       //------------------------------------------------------------------
       if((int)pars[0] == INIT_GUI && !GUI_ЗАГРУЖЕН)
         {
          Загрузить_GUI();         
         }        
       //--------------------------------------------------  
       if(GUI_ЗАГРУЖЕН)
       {
       if((int)pars[0] == M_COLOR)
         {
          G_CORE[(int)pars[1]][G_CORE[(int)pars[1]][_CURRENT_STATE]] = (int)pars[3];
          //---------------------------------------------
          G_CORE[(int)pars[1]][_REDROW] = 1;
          q1 = 1;  
         } 
       //------------------------------------------------------------------- 
       if((int)pars[0] == T_COLOR)
         {
          G_CORE[G_CORE[(int)pars[1]][_HIS_TEXT]][G_CORE[(int)pars[1]][_CURRENT_STATE]] = (int)pars[3];
          //---------------------------------------------
          if(!G_CORE[(int)pars[1]][_PARAMETER])
            {
             G_CORE[(int)pars[1]][_REDROW] = 1;
             q1 = 1;
            } 
          else
            {
             G_CORE[(int)pars[1]][_REDROW] = 2;
             q2 = 1;
            }      
         }
       //-------------------------------------------------------------------
       if((int)pars[0] == F_COLOR)
         {
          int Состояние_элемента = G_CORE[(int)pars[1]][_CURRENT_STATE];
          if(!Состояние_элемента)Состояние_элемента = _NEUTRAL_STATE;
          //---------------------------------------------
          switch(Состояние_элемента)
           {
            case _NEUTRAL_STATE:           G_CORE[(int)pars[1]][_N_FRAME_COLOR]  = (int)pars[3]; break;
            case _NEUTRAL_HIGHLIGHTED:     G_CORE[(int)pars[1]][_NH_FRAME_COLOR] = (int)pars[3]; break;
            case _ACTIVATED_STATE:         G_CORE[(int)pars[1]][_A_FRAME_COLOR]  = (int)pars[3]; break;
            case _ACTIVATED_HIGHLIGHTED:   G_CORE[(int)pars[1]][_AH_FRAME_COLOR] = (int)pars[3]; break;
           } 
         //---------------------------------------------
          G_CORE[(int)pars[1]][_REDROW] = 1;
          q1 = 1;
        }
      //-------------------------------------------------------------------
      if((int)pars[0] == STATE)
        {
         G_CORE[(int)pars[1]][_CURRENT_STATE] = (int)pars[3];
         //---------------------------------------------
          G_CORE[(int)pars[1]][_REDROW] = 1;
          q1 = 1; 
        }
      //-------------------------------------------------------------------     
      if((int)pars[0] == DEST_GUI)
        {
         for(int s1 = 2; s1 < 500; s1++){if(Открыто_окно[s1])Явление_окон(s1,_WINDOW_CLOSE);} 
         Стереть_Edit();   
        }
      //------------------------------------------------------------------- 
      if((int)pars[0] == SET_VALUE_BY_MAGIC || (int)pars[0] == SORT_COLOMN)
        {
         Номер_колонки = (int)MathRound((int)pars[2]/100000);
         T_header      = (int)pars[2] - (Номер_колонки*100000);
         Элемент       = Элемент_по_T_header_и_колонке(T_header,Номер_колонки,(int)pars[1]);        
        }
      //-------------------------------------------------------------------       
      if((int)pars[0] == SET_VALUE_BY_MAGIC || (int)pars[0] == SORT_COLOMN || (int)pars[0] == DELETE_ROW || (int)pars[0] == DELETE_ALL_ROWS)
        {
         if((int)pars[0] != SORT_COLOMN)int _Канвас = G_CORE[T_header][_CANVAS];
         Программный_вызов          = 1;
        }
      //-------------------------------------------------------------------   
      if((int)pars[0] == SET_VALUE_BY_MAGIC)
        {  
         //--------------------------------------------------
        
         //--------------------------------------------------        
         if(!Элемент)
           {         
            Полная_перерисовка_канваса = 1;
            //--------------------
            Явление_рядов(NEW_ROW,T_header,(int)pars[1]);
            Элемент      = Элемент_по_T_header_и_колонке(T_header,Номер_колонки,(int)pars[1]);
           } 
         //--------------------------------------------------
         
         //--------------------------------------------------
         Контроль_значений_движка(Элемент, pars[3], 1);
         //-------------------------------------------------- 
        }
      //------------------------------------------------------------------- 
      if((int)pars[0] == SORT_COLOMN)
        {
         Явление_рядов(SORT_COLOMN,T_header,Номер_колонки,(int)pars[3]);
        }
      //-------------------------------------------------------------------
      if((int)pars[0] == DELETE_ROW)     
        {
         Явление_рядов(DELETE_ROW,(int)pars[2],(int)pars[1]);
        } 
      //-------------------------------------------------------------------  
      if((int)pars[0] == DELETE_ALL_ROWS)
        {
         Явление_рядов(DELETE_ALL_ROWS,(int)pars[2],(int)pars[1]);
        } 
      //-------------------------------------------------------------------
      if((int)pars[0] == SET_RANGE_N_STEP)
        {
         P_CORE[(int)pars[1]][_V_MIN]  = (string)pars[2];
         P_CORE[(int)pars[1]][_V_MAX]  = (string)pars[3];
         P_CORE[(int)pars[1]][_V_STEP] = (string)pars[4];
         P_CORE[(int)pars[1]][_DIGITS] = (string)pars[5];
        }
      //-------------------------------------------------------------------
      //ВЫСКАКИВАЕТ НА КАЖДОМ ОБРАЩЕНИИ К ФУНКЦИИ.
      //------------------------------------------------------------------  
      /*if((int)pars[0] == W_CAPTION)
        {Alert("(int)pars[0] == W_CAPTION");
         CONTENT[G_CORE[WND[(int)pars[2]]][_WINDOW_NAME]] = pars[1];
         CONTENT[G_CORE[G_CORE[WND[(int)pars[2]]][_CAPTION_OBJECT]][_N_TEXT]] = pars[1];
         //-----------------------------------------------------------------------------
         int Длинна_текста = 0,Высота_текста = 0;
         //------------------------------------------------
         if(!TextSetFont("Microsoft JhengHei Light",10 *-10,FW_NORMAL,0)){Alert("*",__FUNCTION__,"*","Ошибка настройки параметров шрифта! ",GetLastError());}  
         TextGetSize(pars[1],Длинна_текста,Высота_текста);
         //------------------------------------------------
         G_CORE[WND[(int)pars[2]]][_CAPTION_X_SIZE] = Длинна_текста;
         G_CORE[WND[(int)pars[2]]][_CAPTION_Y_SIZE] = Высота_текста;   
         G_CORE[G_CORE[WND[(int)pars[2]]][_CAPTION_OBJECT]][_TEXT_X_SIZE] = Длинна_текста;
         G_CORE[G_CORE[WND[(int)pars[2]]][_CAPTION_OBJECT]][_TEXT_Y_SIZE] = Высота_текста;                       
         //------------------------------------------------
         Объект((int)pars[2]);
         Нарисовать_элемент(WND[(int)pars[2]] + 1,REDROW_WHOLE_CANVAS);
        }  */
      //-------------------------------------------------------------------       
      Программный_вызов = 0;
      //-------------------------------------------------------------------
      if((int)pars[0] == _SYNC_P_CORE)
        {
         if(!Internal_message)Контроль_значений_движка((int)pars[1], pars[3], 1);
         else                 Контроль_значений_движка((int)pars[1], pars[3]);
         q2 = 1;   
        } 
      //------------------------------------------------------------------- 
      if((int)pars[0] == OPEN_WINDOW) Явление_окон((int)pars[1],_WINDOW_OPEN,NULL);         
      if((int)pars[0] == CLOSE_WINDOW)Явление_окон((int)pars[1],_WINDOW_CLOSE,NULL);  
      //-------------------------------------------------------------------   
      if((int)pars[0] == ONLY_READ)G_CORE[(int)pars[1]][_READ_ONLY] = (int)pars[3];
      //=========================================================================================      
      
      //=========================================================================================          
      int Канвас = G_CORE[(int)pars[1]][_CANVAS];
      if((int)pars[0] == SET_VALUE_BY_MAGIC || (int)pars[0] == SORT_COLOMN)Канвас = G_CORE[Элемент][_CANVAS];
      //----------------------------------------------
      for(int r6 = 0; r6 < 100; r6++)
        { 
         if(cnvs[r6] == Канвас)break; 
         //--------------------------
         if(!cnvs[r6])
           {
            cnvs[r6]   = Канвас;
            cnvs_2[r6] = REDROW_CHANGED_ELEMENTS;
            //-----------------------------------
            if(Полная_перерисовка_канваса)
              {
               cnvs_2[r6] = REDROW_WHOLE_CANVAS;
               Полная_перерисовка_канваса = 0;
              } 
            //----------------------------------- 
            break;
           }
         //--------------------------
        }
       //=========================================================================================
       
       //=========================================================================================  
       
       //========================================================================================= 
        }
      } 
    }
    //------------------------------------------------------------------------------------------------------- 
    if(!q1 && q2)q3 = 1;
    else q3 = 0;
    //-------------------------------------------------------------------------------------------------------
    for(int f1 = 0; f1 < 100; f1++)
      {
       if(!cnvs[f1])break;
       if(Открыто_окно[G_CORE[cnvs[f1]][_WS_NUMBER]] && !G_CORE[cnvs[f1]][_HIDE] && cnvs_2[f1] == REDROW_CHANGED_ELEMENTS)
         {
          Нарисовать_элемент(cnvs[f1],REDROW_CHANGED_ELEMENTS);
         } 
       if(cnvs_2[f1] == REDROW_WHOLE_CANVAS)
         {
          Установить_параметры_прокрутки(cnvs[f1]);
          //----------------------------------------------------------
          //Перерисовываем канвас V_BOX-а.
          //----------------------------------------------------------
          Нарисовать_элемент(G_CORE[G_CORE[cnvs[f1]][_MAIN]][_CANVAS],G_CORE[cnvs[f1]][_MAIN]);
          //----------------------------------------------------------
          //Перерисовываем весь канвас.
          //----------------------------------------------------------    
          Нарисовать_элемент(cnvs[f1],REDROW_WHOLE_CANVAS);
          //---------------------------------------------------------- 
         }
      }
    i1 = 0;  
    //-------------------------------------------------------------------------------------------------------
    if(!Internal_message)while(read.uint_Read[i1]){read.uint_Read[i1] = 0; i1++;} 
    //ArrayInitialize(read.char_Read,0);
    //ResourceCreate("::EA_2_DRIVE",read.uint_Read,8000,1,0,0,0,COLOR_FORMAT_XRGB_NOALPHA);
    //-------------------------------------------------------------------------------------------------------
    Не_рисовать = 0;
   // MSG = NULL;
    i_MSG = NULL;
    //-------------------------------------------------------------------------------------------------------      
   }
   
}

Ce sont les deux fonctions qui permettent à l'interface graphique de "communiquer" avec le programme. Ils reçoivent les messages, les décryptent et les transmettent soit aux éléments, soit au programme.

 
Реter Konow:

Je pense que c'est ce que vous vouliez dire :

Ce sont les deux fonctions qui assurent la "communication" de l'interface graphique avec le programme. Ils reçoivent les messages, les décryptent et les transmettent soit aux éléments, soit au programme.

C'est un chef-d'œuvre :)

Открыто_окно[G_CORE[cnvs[f1]][_WS_NUMBER]]

Si quelque chose doit être refait, dans une semaine vous ne vous souviendrez plus de ce qui est lié à quoi.