French Database sqlite

klaus

Expert
Licensed User
Longtime User
premièrement en ce qui concerne les 2 spinners 'année' et 'mois'
Il faut juste élargir les Spinners dans le Designer.
Mais, j'ai vu qu'il faut l'élargir beaucoup pour que Septembre s'affiche correctement.
J'ai mis la propriété: Padding à 0, 0, 0, 0 et ça fonctionne mieux.

Je n'ai pas encore compris pourquoi dans ton programme le titre est affiché et pourquoi full screen ne fonctionne pas.

Pour essayer full screen et j'ai crée un nouveau projet en copiant le layout et ça fonctionne.
Il y a des incohérences dans ton programme:
1. Tu ne veux pas de titre, mais tu définis une valeur pour le titre ?
2. Tu définis un menu, qui est dans le titre alors que tu n'en veux pas !?

Je n'ai pas d'expérience avec les menus Android, j'ai horreur des menus, je n'en utilise jamais.
Je préfère des boutons accessibles directement, l'utilisateur voit directement ce qu'il peut faire, mais c'est seulement ma préférence.

Je n'ai pas compris ton layout, je suppose une version spéciale adapté à ton dispositif.
Ce qui pourrait poser des problèmes sur d'autres dispositifs.
Il y a des View hors écran, pourquoi ?
Tu devrais utiliser les ancres (Anchors) surtout pour l'image de fond et mettre Fill.

Ci joint mon projet test.
Ne sachant pas pourquoi dans ton projet ça ne fonctionne pas ou plus, je suppose que quelque chose a été initialisé une fois pour toutes et n'est plus modifié.
Mais quoi ? Mystère.
Je te conseille de:
- redéfinir un nouveau projet en recopiant successivement les différentes parties.
- reprendre mon projet test et copier le code dans celui-ci en modifiant le nom.
 

Attachments

  • LandscapeFullScreen.zip
    71.7 KB · Views: 170

sultan87

Active Member
Licensed User
Longtime User
Bonsoir Klaus
merci pour votre réactivité, votre disponibilité et vos conseils
je viens de charger LandscapeFullScreen
cela correspond à mon attente
je vais suivre vos conseils
- redéfinir un nouveau projet en recopiant successivement les différentes parties.
- reprendre mon projet test et copier le code dans celui-ci en modifiant le nom.
je regarde cela vendredi car je m'absente 2 jours
Pierre
 

sultan87

Active Member
Licensed User
Longtime User
Bonjour à tous
Sur les conseils de Klaus, j'ai voulu savoir pourquoi j'avais ce bandeau (image 1)
cela vient de l'utilisation des menus Android
B4X:
    Activity.AddMenuItem("Principal", "Principal")
    Activity.AddMenuItem("Totaux", "Totaux")
    Activity.AddMenuItem("Liste", "Liste")
je n'ai donc pas redéfini mon projet, je vais suivre vos conseils et ajouter un bouton pour dérouler le menu
Pierre
 

Attachments

  • image 1.jpg
    486.7 KB · Views: 165

sultan87

Active Member
Licensed User
Longtime User
Bonjour
grossière erreur, cela ne vient pas de l'utilisation des menus Android
j'ai repris le projet de Klaus ( LandscapeFullScreen)
- j'ai recopié successivement les différentes parties de mon projet LaMieCaline dans LandscapeFullScreen.
- j'ai testé
- j'ai modifié le nom.
tout fonctionne correctement
j'améliore en créant, comme l'indique Klaus, des menus par boutons
Aussitôt fini je mettrai mon projet en ligne, sans ambition
Pierre
 

sultan87

Active Member
Licensed User
Longtime User
Bonsoir Klaus
j'ai repris le module "Table" du projet que vous avez eu l’amabilité de me donner pour lister le contenu de ma table "Achats"
dans votre projet le tableau s'affiche correctement et je peux monter et descendre dans la liste
dans mon projet le tableau s'affiche correctement et je peux monter et descendre dans la liste
et puis cela se bloque impossible de monter et descendre dans la liste
j'avoue ne pas comprendre
voici le lien de mon projet
https://transfert.free.fr/UqZUTq
Pierre
 

sultan87

Active Member
Licensed User
Longtime User
Bonsoir
je me réponds tout fonctionne correctement
cela vient du fait que j'ai donné la possibilité de saisir un achat en cliquant sur une partie de l'image de fond sans passer par le menu
il s'avère que cette partie d'mage se trouve en dessous de mon tableau "tblAchats"
je vais remédier à ce problème
Pierre
 

Serge Bertet

Active Member
Licensed User
À la fin de la Sub bntSaisie_Click tu dois rajouter :
B4X:
    bntSaisieImg.Enabled = False
    bntSaisie.Enabled = False

J'ai un problème avec : Private Sub Parles(Texte As String) qui plante à chaque fois.

NB: j'ai supprimé tous les '_' (underscore) des noms des views, ça me paraît plus clair pour distinguer les noms d'événements.
 

sultan87

Active Member
Licensed User
Longtime User
Bonjour à tous
j'avance sur mon projet grâce à l'aide et aux conseils de tous
Klaus a mis un module Table pour afficher le résultat de requête sous forme de tableau
Y a t'il un tuto pour par exemple changer le cadrage d'un texte qui par défaut est "center" en laissant le titre "center"
Pierre
 

zed

Active Member
Licensed User
Voici un example pour centrer une colonne

B4X:
Dim RS As ResultSet = sql.ExecQuery("SELECT  * FROM myTable order by id desc")
Do While RS.NextRow

    Dim p As B4XView = maColonneAcentrer.CellsLayouts.Get(0)
    For i = 1 To maColonneAcentrer.CellsLayouts.Size - 1
        Dim pnl As B4XView = maColonneAcentrer.CellsLayouts.Get(i)
        p.GetView(maColonneAcentrer.LabelIndex).SetTextAlignment("CENTER", "LEFT")
    Next
    
    RS.GetString("field1").Trim
    etc....
loop

et voilà... ;-)
 

sultan87

Active Member
Licensed User
Longtime User
Bonsoir ZED
merci pour la réponse
c'est par rapport au module "Table" donné par Klaus voir point 26
Pierre
 

klaus

Expert
Licensed User
Longtime User
Y a t'il un tuto pour par exemple changer le cadrage d'un texte qui par défaut est "center" en laissant le titre "center"
Non, il n'y a pas de tutoriel, j'ai pensé que le programme de démo suffisait.

Pour changer l'alignement du texte il faut utiliser une des fonctions ci-dessous:
Soit
B4X:
tblAchats.SetCellAlignmentColN(2, Bit.Or(Gravity.LEFT, Gravity.CENTER_VERTICAL))
Pour ne changer qu'une colonne, le premier paramètre est l'indice de la colonne.

Ou
B4X:
    Private Alignments() As Int
    Alignments = Array As Int(Bit.Or(Gravity.LEFT, Gravity.CENTER_VERTICAL), Bit.Or(Gravity.LEFT, Gravity.CENTER_VERTICAL), Bit.Or(Gravity.LEFT, Gravity.CENTER_VERTICAL), Bit.Or(Gravity.RIGHT, Gravity.CENTER_VERTICAL))
    tblAchats.SetCellAlignments(Alignments)
Pour toutes les colonnes. Attention: le nombre des paramètres doit correspondre au nombre de colonnes.
 

sultan87

Active Member
Licensed User
Longtime User
Bonjour Klaus
merci pour vos conseils et le programme de démo qui m'a servi
sur l'image du fichier joint, je voulais cadrer à gauche la colonne "Prix Libelle"
j'essaye vos conseils
Pierre
 

Attachments

  • Screenshot_2022-11-07-09-13-29-233_b4a.LaMieCaline.zip
    484.5 KB · Views: 168

sultan87

Active Member
Licensed User
Longtime User
Merci Klaus
j'ai fait le test avec la solution 1
tout fonctionne
encore merci pour votre soutien
Pierre
 

sultan87

Active Member
Licensed User
Longtime User
Bonjour à tous
je fignoles mon projet
en cliquant sur les 3 petits . en haut à droite, j'affiche le menu
si je choisis "Liste", j’affiche la liste des achats (image Liste)
si je clique à nouveau sur les 3 petits . en haut à droite, j'affiche le menu en superposition (image Liste avec Menu)
si je veux effacer le menu, j'appuie à nouveau sur les 3 petits . en haut à droite, le menu s'efface
j'aurai voulu, si possible, cliquer en dehors des différentes views affichées pour effacer le menu
je suis peut être trop compliqué ou exigeant
Pierre
 

Attachments

  • La Mie Caline Code.zip
    96.1 KB · Views: 141
  • BD.zip
    5.9 KB · Views: 149

sultan87

Active Member
Licensed User
Longtime User
j'ai oublié les images
 

Attachments

  • Liste avec menu.zip
    509.5 KB · Views: 156
  • Liste.zip
    484.4 KB · Views: 151

Serge Bertet

Active Member
Licensed User
J'ai toujours un plantage à la sub Parles

Dans : Sub TTS1_Ready(Success As Boolean) Success est toujours false.
Ça fonctionnait pourtant lors des premiers tests au tout début.

J'ai modifié la sub comme ça mais j'ai plus de son, normal :
B4X:
Private Sub Parles(Texte As String)
    Try
        TTS1.Speak(Texte, True)
        Do While jTTS.RunMethod("isSpeaking", Null) = True
        Loop
    Catch
        Log(LastException.Message)
    End Try
End Sub

Quand je clique sur 'Liste' j'ai cette erreur :

J'ai pourtant désinstallé l'ancienne version pour être sûr d'avoir la dernière BDD installée.

C'est peut-être moi qui ne sais pas me servir de l'appli, je touche à tous les boutons sans savoir ce que je fais ?
 

klaus

Expert
Licensed User
Longtime User
Pour le moment il n'y a rien qui se passe.
Je peux cliquer où je veux mais, rien et silence complet.
J'avais déjà vu au part avant qu'il y a des problèmes de layout selon l'appareil qu'on utilise.
J'ai testé sur mon téléphone, je regarderais plus loin demain.
 

sultan87

Active Member
Licensed User
Longtime User
Bonsoir
pour répondre à Serge
j'ai fait une modif dans la BD
dans table "Achats" j'ai rajouté le champ "Produit"
j'ai également rajouté la table "Produits" qui est en liaison avec le champ "produit" de la table "Achats"
je n'ai aucun problème avec "Sub Parles", j'ai repris exactement ce que Klaus m'avait donné
dans le post 55 j'ai remis la BD et le code
pour répondre à Klaus
je n'ai aucun problème avec mon smartphone qui est un "Xiomi Redmi Note 10"
Bonne soirée à tous
Pierre
 

klaus

Expert
Licensed User
Longtime User
pour répondre à Klaus
je n'ai aucun problème avec mon smartphone qui est un "Xiomi Redmi Note 10"
Je n'en doute pas.
Mais ton programme fonctionne bien sur ton appareil qui a un rapport largeur / hauteur plus grand que d'autres appareils.
J'ai testé plus loin et en tapotant sur le coin inférieur droite on obtient la saisie d'un achat mais seulement une fois, après ce bouton est désactivé.
Au fait, à quoi sert ce bouton invisible ?
Le bouton menu n'apparait pas sur mon Samsung Galaxy S10 car il est situé hors de mon écran.
En mettant l'ancre horizontale du bouton à droite, le bouton est affiché.

Pour la base de données, j'ai ajouté cette ligne:
B4X:
'        File.Delete(MyPath_Local,"LaMieCaline.db")
Il faut supprimer le " ' " de commentaire lors de la première exécution pour remplacer l'ancienne, puis commenter cette ligne.

Je ne comprends pas bien la logique de ton programme, par exemple pour la saisie d'un achat l'utilisateur sélectionne l'achat sur l'écran mais doit confirmer par oral.
Il me semble qu'une boite de dialogue serait plus rapide et efficace, deux boutons OUI et NON.

Pour passer d'un écran à l'autre, tu passes par le menu qu'il faut activer systématiquement. Donc deux clics.
En tant qu'utilisateur je trouverais ennuyeux à la longue de toujours devoir cliquer sur le bouton menu pour faire quelque chose.
Je préfère un menu toujours affiché et on clique directement sur un bouton ou autre objet pour l'opération suivante. Donc un seul clic.
Au lieu d'avoir le menu sur le côté, l'avoir dans une bande au bas de l'écran, ça ne prend pas tellement de place

Pour afficher et cacher des objets qui vont ensemble il est plus simple de les mettre sur un Panel et mettre celui-ci visible ou invisible.
Exemple: lbl_Spinner_An.Visible = False, Spinner_An.Visible = False, lbl_Spinner_Mois.Visible = False, Spinner_Mois.Visible = False
pnlSpinner.Visible = False

Si tu veux maintenir le menu de côté et pouvoir le cacher en cliquant quelque part ailleurs sur l'écran tu peux ajouter un Panel transparent sur lequel se trouve le menu.
Et avec l'évènement Touch tu peux rendre ce Panel invisible avec le menu.

J'ai aussi vu que lorsqu'on clique sur un RadioButton pour la sélection d'un achat, il ne devient pas noir immédiatement.
La même chose quand on clique sur Liste, la table et les Spinners ne sont pas affichés immédiatement.
Avec des Sleep(0) juste avant Parles ils sont affichée immédiatement.

Je joins ma vision du programme.
 

Attachments

  • La Mie Caline_2002_11_08.zip
    103.5 KB · Views: 123
Last edited:
Cookies are required to use this site. You must accept them to continue using the site. Learn more…