Bonjour à tous,
Concernant le prog de Boddhi (encore merci pour ce super-tuto).
Seconde leçon enregistrée (après les gadgets de dobro). Les constantes globales. Ex « Nbtables ». La variation du nombre de tables est trop simple, et le menu se formate automatiquement.
Idem je suppose pour « Nbplats », sauf que l'on va chercher les données $ et prix dans un tableau, global lui aussi.
J'imagine que le nombre d'éléments du tableau est variable, et indexé sur (Nbplats).
Je n'ai pas encore potassé les tableaux, mais pouvez-vous me décomposer la structure de définition du tableau ? Plats.plats(Nbplats) ?
Je n'ai pas encore bien compris la structure de l'affichage des plats cliqués. Je vais potasser ça.
Vous vous souvenez que je comprends vite, mais que...
En fait, et en passant du coq à l'âne, les anciennes instructions get et put ne servent plus à rien avec la structure des gadgets, c'est ça ?
J'ai remarqué aussi que rien ne se passe après l'entrée des plats, et que leur prix ne s'affiche pas. je dois faire la suite je pense.
A ce propos, que suggèrez-vous ? Je mets le process addition dans la boucle principale ? Quoi ? Vous attendez de voir ce que je vais faire ? Je le savais !
@MLD, je compte utiliser ce programme l'année prochaine pour mon gîte, et ensuite pour mes futures chambres d'hôte et un restau. Je pourrais acheter un programme style EBP ou autre, mais ça ne vaudra jamais un produit fait maison.
@DOBRO, merci du conseil pour les tutos. J'ai copié les débutant, et je commence à copier les trucs intéressants du forum débutant en ayant commençé par la page 77 ! Je copie aussi les trucs intéressants et pas trop difficiles des archives Purearea. Et vous avez refilé le virus du basic à mon fils de 15 ans.
Ce sont donc mes devoirs de Noël.... ça va turbuler grave, pendant les fêtes. Je prépare mes questions pour la rentrée. ET en début de mois, j'achète PB.
Comme dirait Berlu, joyeux Bounga Bounga à tous (ça reste l'essentiel), et bonne année depuis le Périgord !
Deux textes différents dans une meme box.
-
- Messages : 10
- Inscription : ven. 08/oct./2010 16:26
-
- Messages : 604
- Inscription : lun. 26/avr./2010 16:14
- Localisation : S 48° 52' 31'' / O 123° 23' 33''
Re: Deux textes différents dans une meme box.
Salut bladerunner46
Y a du boulot !!! Faut vraiment que tu potasses la doc !!!
Bon, commençons :
Petite rectification, les variables NbTables & NbPlats ne sont pas des constantes. Les constantes commencent toujours par un #.
Toutefois, comme la valeur de ces variables n'est pas censée changer au cours de l'exécution du programme, on aurait très bien pu utiliser des constantes. Au choix...
Ensuite, effectivement, comme l'on peut être amené à utiliser plusieurs fois le nombre de tables, de plats, ... autant les définir dans des variables globales. Comme cela si tu veux changer rajouter ou enlever des tables ou des plats, tu n'auras qu'à redéfinir ces valeurs qu'une seule fois sans craindre d'oublier de changer ces valeurs partout où elles auraient pu se trouver...
Oui !!! Là encore, on peut avoir besoin de ces valeurs n'importe où dans le programme, autant donc les déclarer, via un tableau, en Global
On aurait très bien pu aussi utiliser le jeu d'instructions Restore, Read, Data pour définir les valeurs affectés à Plats.Plat(NbPlats)
Pour les tables, on peut considérer, même si son nombre est fixé (donc connu) dès le départ, qu'elles ne sont pas toutes utilisées. Donc, plutôt que de faire appel à un tableau fini, autant faire appel à une liste et ajouter des éléments (table) au fil des besoins... Ca évite d'encombrer la mémoire inutilement... Pour ce qui est de la procédure d'affichage des plats, elle reçoit l'argument Table, qui est le numéro de table pour laquelle on souhaite afficher les plats déjà commandés et si besoin en ajouter d'autres. On balaye par une boucle ForEach l'ensemble de la liste Tables() jusqu'à trouver le n° de la table que l'on recherche. Une fois trouvée, on sort de la boucle via Break et le programme reste sur l'élément courant de la liste Tables(). Cet élément contient donc toutes les infos liées à la table Table. Ensuite, on lit tous les plats préalablement saisis pour cette table via Tables()\Plats() et on affiche ses données... Simple, non ?
la variable Prix dans la structure .Plat n'était présente dans mon code que pour te montrer l'intérêt de l'utilisation d'une structure... Ici, à moins que tu ne fasses pas payer tes clients (donne-moi tout de suite ton adresse
) et auquel cas tu n'en aurais pas besoin, chaque plat à un prix, donc à toi de créer tout ce qui touche au prix (gadgets, calcul du total addition et que sais-je encore...) tout comme tu as su le faire pour les plats...
pour un ajout en ayant bien pris soin préalablement de rajouter la variable Addition dans la structure Addition !
Je te confirme encore une fois qu'il faut vraiment potasser tous ces aspects-là de PB. C'est LE minimum !!!
La touche F1 est ton amie, ne l'oublie pas !
Quiconque le pourra t'apportera volontiers son aide si tu éprouves des difficultés dans l'élaboration d'un projet ou bout de code mais bien peu passeront du temps, et c'est bien compréhensible (car cela en demande du temps), à t'expliquer les rudiments du langage.
PS : Je connais un p'tit peu le Périgord (noir...). J'adore cette région, haut lieu, entre autres, de l'aventure préhistorique humaine. Sarlat, les Eysies et Beynac (que je recommande à tous, tout petit petit village médiéval au bord de la Vézère mais magnifique !!!) et bien d'autres...
Y a du boulot !!! Faut vraiment que tu potasses la doc !!!


Bon, commençons :
Petite rectification, les variables NbTables & NbPlats ne sont pas des constantes. Les constantes commencent toujours par un #.
Toutefois, comme la valeur de ces variables n'est pas censée changer au cours de l'exécution du programme, on aurait très bien pu utiliser des constantes. Au choix...
Ensuite, effectivement, comme l'on peut être amené à utiliser plusieurs fois le nombre de tables, de plats, ... autant les définir dans des variables globales. Comme cela si tu veux changer rajouter ou enlever des tables ou des plats, tu n'auras qu'à redéfinir ces valeurs qu'une seule fois sans craindre d'oublier de changer ces valeurs partout où elles auraient pu se trouver...
Attention : Plats.Plat() et non Plats.Plats().bladerunner46 a écrit :l'on va chercher les données $ et prix dans un tableau
Oui !!! Là encore, on peut avoir besoin de ces valeurs n'importe où dans le programme, autant donc les déclarer, via un tableau, en Global
On aurait très bien pu aussi utiliser le jeu d'instructions Restore, Read, Data pour définir les valeurs affectés à Plats.Plat(NbPlats)
bladerunner46 a écrit :pouvez-vous me décomposer la structure de définition du tableau Plats.plats(Nbplats) ?
- La structure ? Tu regardes le début du code là où est inscrit "Structure Plat".
Le principe ? Tous les plats possèdent le même nombre d'informations (nom, prix, description,...). Donc, autant faire appel à une structure .Plat dans laquelle on définit des noms de champs (Nom, Prix, ...). Ensuite, on créé un tableau Plats() de type .Plat de dimension NbPlats, ce qui en PB donne : Dim Plats.Plat(NbPlats)
Procédure ! pas structure !bladerunner46 a écrit :Je n'ai pas encore bien compris la structure de l'affichage des plats cliqués
Pour les tables, on peut considérer, même si son nombre est fixé (donc connu) dès le départ, qu'elles ne sont pas toutes utilisées. Donc, plutôt que de faire appel à un tableau fini, autant faire appel à une liste et ajouter des éléments (table) au fil des besoins... Ca évite d'encombrer la mémoire inutilement... Pour ce qui est de la procédure d'affichage des plats, elle reçoit l'argument Table, qui est le numéro de table pour laquelle on souhaite afficher les plats déjà commandés et si besoin en ajouter d'autres. On balaye par une boucle ForEach l'ensemble de la liste Tables() jusqu'à trouver le n° de la table que l'on recherche. Une fois trouvée, on sort de la boucle via Break et le programme reste sur l'élément courant de la liste Tables(). Cet élément contient donc toutes les infos liées à la table Table. Ensuite, on lit tous les plats préalablement saisis pour cette table via Tables()\Plats() et on affiche ses données... Simple, non ?

Si ma mémoire est bonne, ces 2 commandes étaient utilisées pour alimenter des fichiers disques préalablement créés. Donc rien à voir ici avec les structures, et encore moins avec les gadgets !!!bladerunner46 a écrit :les anciennes instructions get et put ne servent plus à rien avec la structure des gadgets
T'as tout compris !!!bladerunner46 a écrit :J'ai remarqué aussi que rien ne se passe après l'entrée des plats, et que leur prix ne s'affiche pas. je dois faire la suite je pense.



Surtout pas !!! Sous PB, la boucle principale est généralement la boucle qui gère les évènements utilisateur (clic souris, frappe clavier, ...) relatifs aux gadgets (fenêtres et contrôles). Le calcul de l'addition doit se faire au moment où tu ajoutes (ou enlèves) un plat dans la liste Tables()\Plats. Ici dans la procédure Ajout_Plats(Plat) en ajoutant après la lignebladerunner46 a écrit :A ce propos, que suggèrez-vous ? Je mets le process addition dans la boucle principale ?
Code : Tout sélectionner
Tables()\Plats()=Plat
Code : Tout sélectionner
Tables()\Addition + Plats(Plat)\Prix
Je te confirme encore une fois qu'il faut vraiment potasser tous ces aspects-là de PB. C'est LE minimum !!!

La touche F1 est ton amie, ne l'oublie pas !

Quiconque le pourra t'apportera volontiers son aide si tu éprouves des difficultés dans l'élaboration d'un projet ou bout de code mais bien peu passeront du temps, et c'est bien compréhensible (car cela en demande du temps), à t'expliquer les rudiments du langage.
PS : Je connais un p'tit peu le Périgord (noir...). J'adore cette région, haut lieu, entre autres, de l'aventure préhistorique humaine. Sarlat, les Eysies et Beynac (que je recommande à tous, tout petit petit village médiéval au bord de la Vézère mais magnifique !!!) et bien d'autres...
Re: Deux textes différents dans une meme box.
Salut Bladerunner46
Petits conseils d'amis
Pour ce type de programme, met noir sur blanc les fonctions que tu veux obtenir ainsi que leurs limites.
Exemple:
### Hotellerie ####
Réservation par chambre ou par personne (nombre de chambre max)
Facturation par chambre ou par personne
### Restauration ###
Réservation par table et/ou par personne (nombre de table max)
Plats: type de plat (coucous du Périgord). Possibilité de recherche par numéro de plat ou par type. (nombre de plat
max)
indication du prix de chaque plat
### Facturation ###
Par table ou/et par personne
### Comptabilité simplifiée ###
Journalière ou journalière + mensuel.
Et j'ai du en oubliés + ton imagination.
Tu as intérêt a faire une programmation par module.
N'oublie pas que PB permet dans un même programme d'utiliser plusieurs fenêtres.(Fenêtre principale + fenêtres secondaires.)
Cela sera plus facile pour une maintenance ou une extension future.(la programmation type spaghetti, même aux truffes du Périgord n'est pas top.)
Ton fils aura surement de grandes joies s'il s'intérrêsse a la programmation.
Petits conseils d'amis
Pour ce type de programme, met noir sur blanc les fonctions que tu veux obtenir ainsi que leurs limites.
Exemple:
### Hotellerie ####
Réservation par chambre ou par personne (nombre de chambre max)
Facturation par chambre ou par personne
### Restauration ###
Réservation par table et/ou par personne (nombre de table max)
Plats: type de plat (coucous du Périgord). Possibilité de recherche par numéro de plat ou par type. (nombre de plat
max)
indication du prix de chaque plat
### Facturation ###
Par table ou/et par personne
### Comptabilité simplifiée ###
Journalière ou journalière + mensuel.
Et j'ai du en oubliés + ton imagination.
Tu as intérêt a faire une programmation par module.
N'oublie pas que PB permet dans un même programme d'utiliser plusieurs fenêtres.(Fenêtre principale + fenêtres secondaires.)
Cela sera plus facile pour une maintenance ou une extension future.(la programmation type spaghetti, même aux truffes du Périgord n'est pas top.)
Ton fils aura surement de grandes joies s'il s'intérrêsse a la programmation.