Besoin d’aide RxMui
-
okay je regarde ça merci
Bon je vien de fzire plusieurs test mais je ne capte pas trop en faite :
/* test */
toto= »tony »
say toto /* ça c’est ok */
bob: procedure expose global. /* ça je capte pas! */
say ‘affiche’ toto
return
C’est bon je pense avoir compris j’ai tester l’exemple dans l’arexx pour les nul
Modération de BatteMan : Pensez à éditer votre dernier post afin d’éviter de faire plusieurs posts d’affilés. MERCI.
AdminTu n’appelle pas ta procédure bob : un petit call bob() bien placé par exemple peut aider !
/* test */
toto= »tony »
say toto /* ça c’est ok */
call bob()
call bob()
exit
bob: procedure expose toto
toto = toto || « et alice »
say toto
return
Tous les scripts Arexx ou presque utilisent des procédures ! Une fois que tu auras pigé la portée des variables locales et globale, ce sera plus facile d’adapter des scripts RxMUI.
bigdan
qui n’a plus que de maigres connaissances en ARexx
merci bigdan = je comprend le principe de variable globales et locales car j’ai fait un peu de php et je fais dans mon taff de l’action script pour des site en flash
Par contre tous seul dans mon coin je galère vraiment trop pour apprendre RxMUI j’ai pas envie de laisser tombe mais j’aurai besoin d’aide pour apprendre plus vite.
OS4… ah ben alors tu te crées un script Arexx qui charge rxMUI et interprète les commandes qu’il reçoit et depuis python tu lui envoies des commandes en Arexx…et hopla, tu codes en python c’est joli tout plein… ah oui, mais c’est MUI qui te pose problème… bon, je sors alors!
Salut,
toujours en apprentissage rxmui
Je commence à comprendre mais ya encore un du taff!
Voila mon problème j’esseye d’afficher une liste issu d’un fichier externe dans mon programme avec la class listview
pour le moment j’arrive à faire ouvrir une fenetre shell et avoir ma liste dedans
voici un lien vers mon fichier :
http://amitheme.amiga-ng.org/Amiga/test.lha
merci d’avance pour l’aide
ps: je cherche toujours de la doc française, vieux magazine ou autre…
Salut,
Le consept de rxmui est asser obscure au départ.
Je te conseil d’éviter de mélanger la création dynamique et par variable, cela rend la structure illisible.
/***********************************************************************/
createApp: procedure
app.Title="AttachedListExample"
app.Version="$VER: AttachedListExample 1.0 (8.7.2001)"
app.Copyright="©2001 by Alfonso Ranieri"
app.Author="Alfonso Ranieri"
app.Description="AttachedList Example"
app.Base="ALIST"
app.SubWindow="mwin"
mwin.Title="AttachedList Example"
mwin.ID="MWIN"
mwin.Contents="mgroup"
/*call child("mgroup","graces","group") Par defaut, un group est vertical */
/*De plus tu mélange la création par variable et dynamique */
mgroup.0="graces" /* mgroup (qui est vertical) contient l'objet graces */
graces.class="group" /* graces est une classe group */
graces.0="races" /* graces contient l'objet races */
races.class="NListview" /* races est une classe NListView */
races.list="list" /* un listview contient un objet liste, ici "list" */
list.Format="BAR,BAR,BAR,BAR,BAR,BAR,BAR,BAR" /* attributs de la liste ici le Format */
list.Title="Act|Nom du bouton|Effacer le fichier|Chemin|Commande|Option|Entrée|Sortie"
mgroup.1="gactions" /* le 2eme objet de mgroup est gactions */
gactions.class="group" /* gactions est une classe group */
gactions.horiz=1
/* défini l'attribut Horiz à Vrai alias True alias 1 (Faux alias False = 0) */
gactions.0=button("AddAction","Ajouter") /* ajouté un objet bouton appelé
AddAction avec le texte "Ajouter" dedans */
gactions.1=HSpace(0)
/* ajout d'un espace pour te montrer que là cela peut être utile */
gactions.2=button("DelAction","Supprimer")
/* call DataLoad() oulala il faudrai déjà terminer ta gui avant d'essayer de l'utiliser,
"graces.3=HSpace(0)" manquait graces.2 donc n'est jamais trouvé... Il faut tjs
commencer par 0 et incrémenter */
/* création de l'application, qui crée la fenetre mwin etc... */
if NewObj("application","app")~=0 then exit
/* notification pour pouvoir quitter en cliquant l'icône de fermeture */
call Notify("mwin","closerequest",1,"app","returnid","quit")
call DataLoad() /* ton application existe, là tu peux remplir ta liste */
/* Pour utiliser l'application, c'est mieux d'ouvrir la fenetre */
call set("mwin","open",1)
return
/*********************************************************************/
DataLoad: procedure
/* ben alors on teste pas son ouverture de ficher ?
ce n'est pas parce que le fichier "existe" que tu pourra l'ouvrir
si quelqu'un d'autre l'utilise */
IF OPEN(maBase,"fichier.data", READ) THEN DO
DO WHILE ~EOF(maBase)
comligne = READLN(maBase);
call DoMethod('races',"Insert",comligne,"Bottom")
/* appel la méthode "Insert" pour la liste "races" avec les données du fichier
à la fin de la liste */
END
CALL CLOSE(maBase)
END
ELSE DO
SAY "Impossible d'ouvir la base de donnée!"
END
RETURN
Voilà le morceau de code corrigé et commenté.
A+
Ici:
mwin.Contents="mgroup" /* mode variable */
call child("mgroup","graces","group") /* mode dynamique */
graces.0=HSpace(0) /* mode variable */
Cela rend la « lisibilité » de l’arborescence difficile (du moins pour moi).
Il faut aussi utiliser l’identation (tabulation) pour décaler chaque création de groupe pour éviter de se planter.
EDIT 19h30: En fait c’est un peu plus compliqué car en fait tu as fait cela avec ces 3 lignes ci-dessus:
mwin.Contents="mgroup" /* mode variable */
mgroup.0="graces"
graces.class="group"
graces.0=HSpace(0) /* mode variable */
Sachant que « mgroup » est déjà un groupe vertical, tu imbrique deux groupes pour rien. Comme par défaut, les groupes n’ont pas de bordure (frame), ils sont invisible.
Dans le code, il y a 3 groupes imbriqué: « mgroup », « graces » et « races ».
D’ailleurs quand tu vois qu’un groupe n’a qu’un seule membre
ex: graces.0= »races » , il n’y a pas de « graces.1 » donc le groupe « graces » est inutile.
Maintenant cela peut avoir un intéret pour mettre ce qu’on appel un titre de bordure (frame title).
modifie en ajoutant ceci et tu verra:
graces.class="group" /* graces est une classe group */
graces.frame='group' /* ajoute une bordure de "groupe" */
graces.frametitle="Liste des races" /* ajoute un titre à la bordure */
graces.0="races" /* graces contient l'objet races */
Ensuite, décale les deux lignes du milieu dans « races. » et enlève le « g » du début. Tu aura toujours la même bordure autour de ta liste.
Il est conseillé de travailler sur papier avant de créer une gui MUI.
Essaye de dessiner une fenetre avec les différents éléments en pensant tjs qu’il sont soit dans des groupes verticaux soir dans des groupes horizontaux et qu’ils peuvent s’empiler.
Dans l’éxemple que j’ai retravaillé:
+-mwin-fenetre
+| .-mgroup-group-vertical-(invisible)
. || ! +-(0)-races-nlistview-(invisible)
+ ! || ! | .-list-listview
. | ! || ! | ! Titre #! | ! |
| ! | ! 1|test:|0|Bouton 1|Fichier 1|Opt|In| #! | ! |
| ! | ! #! | ! |
| ! | ! #! | ! |
| ! | ! #! | ! |
| ! | ! #! | ! |
| ! | ! #! | ! |
| ! | ! î! | ! |
| ! | ! v! | ! |
| ! | '
' | ! || ! +
+ ! || ! +-(1)-gaction-group-horiz-(invisible)
+ ! || ! | .-(0)-AddAction-. +(1)-hspace. .-(2)-DelAction-. | ! |
| ! | ! Ajouter ! | | ! Supprimer ! | ! |
| ! | '
' +
+ '
' | ! || ! +
+ ! || '
' |+
+Donc il faut dessiner les éléments en suivant un aspect homogène.
Ensuite tu entoure chaque groupe d’objets suivant leur disposition pour connaitre ton « empilement ».
Voilà
A+
/me qui a passé plus de temps a faire le ascii art qu’à le dissiner/photographier et à le poster ici…
A propos, je n’ai rien inventé:
sur ce liens, tu as la liste des classes:
http://alfie.altervista.org/rxmui/rxmuidoc/classes.html
« races » est un NListVew qui est un enfant de « group ».
Donc tous les attributs de « group » peuvent être appliqué à « races ».
Autre éxemple, un « bouton » MUI est une zone de texte avec une « bordure » bouton, un « fond » bouton etc…
la ligne:
button("AddAction","Ajouter")
peut être écrite:
gactions.0="AddAction"
AddAction.class="text" /* affiche du texte */
AddAction.Contents="Ajouter" /* ce qu'on affiche */
AddAction.Preparse=ParseText("%c") /* texte centré */
AddAction.Frame='Button' /* bordure */
AddAction.Background='ButtonBack' /* fond */
AddAction.Font='Button' /* fonte */
AddAction.InputMode='RelVerify' /* Reagit quand on clic dessus */
Et après on me demande pourquoi j’adore mui…
A+
- Vous devez être connecté pour répondre à ce sujet.
› Forums › AmigaOS, MorphOS et AROS › Développement › Besoin d’aide RxMui