IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants FMX Delphi Discussion :

FMX Android - Array of boolean


Sujet :

Composants FMX Delphi

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2015
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Juillet 2015
    Messages : 64
    Points : 35
    Points
    35
    Par défaut FMX Android - Array of boolean
    Bonjour,

    J'ai un problème avec un array of boolean.
    Si je lis cet array sous windows, ca fonctionne sans soucis. Il me met tous les switches sur on, lesquelles son True dans l´array.
    Par contre, si je le compile pour android, ca ne foncionne pas (il me met rien sur on) et je n´ai pas de message d´erreur

    voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    procedure TfrmMain.SetPortOn;
    Var
         i:integer;
    begin
     
      //Switch1.Enabled := False;
     {  Switch1.OnClick := nil;
       Switch2.OnClick := nil;
       Switch3.OnClick := nil;
       Switch4.OnClick := nil;
       Switch5.OnClick := nil;
       Switch6.OnClick := nil;
       Switch7.OnClick := nil;
       Switch8.OnClick := nil;
      }
     
       for i := 0 to 7 do
               case i of
     
                  0: Begin
                     if Portstate[i] then
                        Switch1.IsChecked :=True;
                     End;
     
                  1: Begin
                     if Portstate[i] then
                        Switch2.IsChecked :=True;
                     End;
     
                  2: Begin
                     if Portstate[i] then
                        Switch3.IsChecked :=True;
                     End;
                  3: Begin
                     if Portstate[i] then
                        Switch4.IsChecked :=True;
                     End;
     
                  4: Begin
                     if Portstate[i] then
                        Switch5.IsChecked :=True;
                     End;
     
                  5: Begin
                     if Portstate[i] then
                         Switch6.IsChecked :=True;
                     End;
     
                  6: Begin
                     if Portstate[i] then
                        Switch7.IsChecked :=True;
                     End;
     
                  7: Begin
                     if Portstate[i] then
                        Switch8.IsChecked :=True;
                     End;
     
               end;
              //Memo1.Lines.Add('Port:'+IntToStr(i));
      end;

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 654
    Points : 5 209
    Points
    5 209
    Par défaut
    Bonjour,

    Quand tu écrit "il ne met rien sur On" ça veux dire :
    - Que "IsChecked" ne passe jamais à true ?
    - Que ton interface ne bouge pas ?
    - Les deux ?

    Est-ce que tu as les bonnes valeurs dans "Portstate" ?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2015
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Juillet 2015
    Messages : 64
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par popo Voir le message
    Bonjour,

    Quand tu écrit "il ne met rien sur On" ça veux dire :
    - Que "IsChecked" ne passe jamais à true ?
    En windows IsChecked pass à True! Mais pas en Android.
    - Que ton interface ne bouge pas ?
    - Les deux ?

    Est-ce que tu as les bonnes valeurs dans "Portstate" ?
    L' interface sous Windows "bouge" mais pas sous Android.
    Dans Portstate j'ai aussi les bonnes valeurs. Il y a des True et des False.

  4. #4
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 654
    Points : 5 209
    Points
    5 209
    Par défaut
    C'est bizarre.
    Le code est tel que montré ?
    Tu n'e l'aurais pas épuré pour le poster ? Genre enlevé un try except.

    La valeur devrait changer.
    Il y a peut être une méthode d'objet à utiliser pour mettre à jour IsChecked.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2015
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Juillet 2015
    Messages : 64
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par popo Voir le message
    C'est bizarre.
    Le code est tel que montré ?
    Tu n'e l'aurais pas épuré pour le poster ? Genre enlevé un try except.

    La valeur devrait changer.
    Il y a peut être une méthode d'objet à utiliser pour mettre à jour IsChecked.
    Sorry pour la répose tardive, j´etait partis avec la famille.

    Hmm je ne sais pas... mais je viens de changer la procedure. Mais ca ne fonktionne toujours pas...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
     
    u: array [0 .. 7] of TSwitch; //pour info declaré public
     
    //pour info u est assigné dans FormCreate
      u[0] := Switch1;
      u[1] := Switch2;
      u[2] := Switch3;
      u[3] := Switch4;
      u[4] := Switch5;
      u[5] := Switch6;
      u[6] := Switch7;
      u[7] := Switch8;
     
    Edit: PortState0: array [0 .. 7, 0 .. 7] of Boolean;  //aussi declaré public
     
    Function SetPortOn(value: Integer): string;
     
    Var
      I, X, Y: Integer;
      OldState: TNotifyEvent;
     
    begin
     
      for X := 0 to 7 do
        if frmMain.PortState0[value][X] then
        begin
          OldState := frmMain.u[X].OnClick;
          frmMain.u[X].OnClick := nil;
          frmMain.u[X].IsChecked := True;
          frmMain.u[X].OnClick := OldState;
        End
        else if frmMain.PortState0[value][X] = False then
        begin
          OldState := frmMain.u[X].OnClick;
          frmMain.u[X].OnClick := nil;
          frmMain.u[X].IsChecked := False;
          frmMain.u[X].OnClick := OldState;
        End;
    end;

  6. #6
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 654
    Points : 5 209
    Points
    5 209
    Par défaut
    Je peux pas affirmer que ton problème vient de là, c'est peut être complètement autre chose.
    En tout cas, il me semble qu'en FMX, les cases à cocher ne réagissent pas à OnClick comme en VCL mais à OnChange.

    Ci-dessous, le lien vers les principales différences entre VCL et FMX :
    http://docwiki.embarcadero.com/RADSt..._et_FireMonkey

Discussions similaires

  1. FMX Android problème de streaming MPEG en HTTP avec Indy
    Par rdr2510 dans le forum Web & réseau
    Réponses: 0
    Dernier message: 22/08/2015, 08h33
  2. Utilisation de librairie externe '*.so' FMX Android
    Par rdr2510 dans le forum Delphi
    Réponses: 1
    Dernier message: 02/10/2014, 11h51
  3. Réponses: 0
    Dernier message: 02/10/2014, 09h41
  4. Thread FMX Android plante
    Par retwas dans le forum Composants FMX
    Réponses: 17
    Dernier message: 03/12/2013, 09h30
  5. Encodage efficace d'un array de boolean - idée inside.
    Par user 56gt8 dans le forum Débuter
    Réponses: 2
    Dernier message: 14/11/2007, 22h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo