DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / Développer une application ou un site / Champs, fenêtres et pages / Champs : Types disponibles / Champ Conteneur natif
  • Présentation
  • Exemples didactiques
  • Présentation
  • Création d'un bouton (code natif Java)
  • Création d'un bouton (code natif Kotlin)
  • Création d'un bouton (Code natif Objective C)
  • Manipuler le champ Conteneur natif avec les propriétés WLangage
WINDEV
WindowsLinuxJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac Catalyst
Autres
Procédures stockées
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.
L'événement "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 (code natif Java)

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)
Pour plus de détails sur la saisie de code Java sous l'éditeur de code, consultez Saisir du code Java.
Android

Création d'un bouton (code natif Kotlin)

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 Kotlin de la procédure globale permettant de créer la vue :
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.Button;

    fun KT_BoutonDansChampNatif(nIdParent : Int)
    {
    var button = Button(getContexteApplication())
    button.setText("Codé en Kotlin")
    button.setOnClickListener(View.OnClickListener()
    {
    appelProcedureWL("WLAndroid_AfficheInfo", "Hello world !")
    })
    var 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 :
      var 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)
Pour plus de détails sur la saisie de code Kotlin sous l'éditeur de code, consultez Saisir du code Kotlin.
iPhone/iPad

Création d'un bouton (Code natif Objective C)

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 !")
Pour plus de détails sur la saisie de code Objectif C sous l'éditeur de code, consultez Saisir du code Objective C.
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

Dernière modification : 13/09/2024

Signaler une erreur ou faire une suggestion | Aide en ligne locale