PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV ET WINDEV MOBILE

  • Présentation
  • Exemples didactiques
  • Présentation
  • Création d'un bouton
  • Création d'un bouton
  • Manipuler le champ Conteneur natif avec les propriétés WLangage
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Autres
Procédures stockées
Manipuler un champ Conteneur natif par programmation
Présentation
Le champ Conteneur Natif renvoie un handle/identifiant :
Ce handle peut ensuite être utilisé dans le code natif pour gérer le champ.
Le traitement "Création de XXX" associé au champ doit contenir le code de création de l'objet affiché dans le champ Conteneur natif.
AndroidiPhone/iPad Remarque : Le champ Conteneur natif ne peut pas être testé en mode GO. Il est nécessaire de compiler et de déployer l'application.
Exemples didactiques

Présentation

Pour présenter la programmation du champ Conteneur Natif, voici un exemple didactique permettant de créer un champ Bouton. Cet exemple est volontairement simple, et bien sur, le champ Bouton existe en standard dans les applications WINDEV et WINDEV Mobile.
Android

Création d'un bouton

Le code suivant permet de créer un bouton à la taille du champ Conteneur natif.
  • Code de création du champ Conteneur natif : Ce code appelle une procédure disponible en code natif Java permettant de créer la vue qui va être affichée dans le champ.
    Android_AjouteBoutonDansChampNatif(MoiMême..Valeur)
    La propriété ..Valeur correspond à l'identifiant de la vue.
  • Code Java de la procédure globale permettant de créer la vue :
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.Button;

    public static void Android_AjouteBoutonDansChampNatif(int nIdParent)
    {
    Button button = new Button(getContexteApplication());
    button.setText("Hello world !");
    button.setOnClickListener(new View.OnClickListener()
    {
    @Override
    public void onClick(View v)
    {
    appelProcedureWL("WLAndroid_AfficheInfo", "Hello world !");
    }
    });
    ViewGroup parent = (ViewGroup)getActiviteEnCours().findViewById(nIdParent);
    if(parent != null)
    {
    parent.addView(button);
    }
    }
    Dans cet exemple, le code peut être divisé en deux parties :
    • le code de création de la vue.
    • le code permettant d'associer la vue au champ Conteneur natif. Ce code doit être adapté selon le type de vue créée (ici, un bouton), mais doit toujours être présent. Ce code reprend l'identifiant de la vue (nIdParent) passé en paramètre à la procédure. Ce code est le suivant :
      ViewGroup parent = (ViewGroup)getActiviteEnCours().findViewById(nIdParent);
      if(parent != null)
      {
      parent.addView(button);
      }
Remarque : Dans le code de création de la vue, le bouton utilise la procédure WLangage WLAndroid_AfficheInfo qui permet d'afficher un message. Le code de cette procédure est le suivant :
PROCÉDURE WLAndroid_AfficheInfo(sInfo)
Info(sInfo)
iPhone/iPad

Création d'un bouton

Le code suivant permet de créer un bouton dans le champ Conteneur natif.
  • Code de création du champ Conteneur natif : Ce code appelle une procédure disponible en code natif Objective C permettant de créer la vue qui va être affichée dans le champ. La taille du bouton est passée en paramètre.
    IOS_AjouteBoutonDansChampNatif(MoiMême..Valeur, 10, 10, 200, 60)
    La propriété ..Valeur correspond à l'identifiant de la vue.
  • Code Objective C de la procédure globale permettant de créer la vue :
    • Procédure IOS_AjouteBoutonDansChampNatif :
      void IOS_AjouteBoutonDansChampNatif(void *pParent, int x, int y, int width, int height)
      {
      UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
      SimpleClass * pclClass = [[SimpleClass alloc] init];
      [button addTarget:pclClass action:@selector(onClick:)
      forControlEvents:UIControlEventTouchUpInside];
      [button setTitle:@"Hello world !" forState:UIControlStateNormal];
      button.frame = CGRectMake(x, y, width, height);
      [(UIView*)pParent addSubview:button];
      }
      Dans cet exemple, le code peut être divisé en deux parties :
      • le code de création de la vue.
      • le code permettant d'associer la vue au champ Conteneur natif. Ce code doit être adapté selon le type de vue créée (ici, un bouton), mais doit toujours être présent. Ce code reprend l'identifiant de la vue (pParent) passé en paramètre à la procédure. Ce code est le suivant :
        [(UIView*)pParent addSubview:button];
    • Procédure PlaceHolder (utilisé par la procédure IOS_AjouteBoutonDansChampNatif). ATTENTION : Ce code doit être placé AVANT le code de la procédure globale IOS_AjouteBoutonDansChampNatif.
      #import "UIKit/UIKit.h"
      void PlaceHolder(){}
      @interface SimpleClass : NSObject
      @end
      @implementation SimpleClass

      - (void)onClick:(id)unused{
      [self performSelector:@selector(onClickDelayed:) withObject:unused afterDelay:0];
      }

      - (void)onClickDelayed:(id)unused{
      ClicSurBoutonNatif();
      }


      @end
  • Code WLangage appelé par le code Objective C, permettant d'afficher un message lors du clic sur le bouton.
    PROCÉDURE WLIOS_AfficheInfo() , ObjC
    Info("Clic !")
Manipuler le champ Conteneur natif avec les propriétés WLangage
Le champ Conteneur peut être manipulé par plusieurs propriétés WLangage. Pour connaître la liste complète des propriétés du WLangage pouvant être utilisées avec un champ de type Conteneur natif, consultez Propriétés associées au champ Conteneur natif.
Version minimum requise
  • Version 23
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire