Gambas France BETA


Pas de compte ? Incription

Explication de code lecteur multimédia valquarus

Ce sujet est résolu.

1
AuteurMessages
spheris#1 Posté le 4/1/2024 à 18:21:54
Valaquarus,
Voici un beau programme que tu nous as fait, j'ai parcouru attentivement le code et plusieurs questions me sautent aux yeux.

A) Dans la form AjouterWeb tu as mis

1
ME.Close(TRUE)


Que signifie le True entre parenthèses?

B) Dans cette même form tu écris :

1
FMain.saStationUrl.Push(TextBox2.Text)


Tu modifie une variable
string[] d'un formulaire directement à partir d'un autre formulaire?
ça me choque, je ne pensais qu'on ne pouvait pas le faire sur des variable de type tableau.

C) Toujours dans cette form :

1
2
3
PUBLIC SUB Run() AS BOOLEAN
RETURN NOT ME.ShowModal()
END


Peux-tu m'expliquer à quoi correspond une méthode interne Run et que veut dire Showmodal?
En d'autre terme plus simple à quoi sert cette méthode? ;)

E) dans le form fchoixfichier tu écris :

1
Fchoixfichier.FileChooser1.SelectedPath = FMain.sChemMusique


ne peut-on pas écrire simplement :

1
FileChooser1.SelectedPath = FMain.sChemMusique


puisqu'il est dans le form actuel du code...
et quel est le raisonnement qu te l'a fait écrire?


F) dans la form ajouterweb tu écris :

1
2
3
4
5
6
7
8
9
10
PUBLIC SUB btnOK_Click()
WITH FMain.ComboBox1
.ReadOnly = FALSE
FMain.saNom.Push(TextBox1.Text)
FMain.saStationUrl.Push(TextBox2.Text)
FMain.ind = FMain.saNom.Max
FMain.ind = FMain.saStationUrl.Max
END WITH
ME.Close(TRUE)
END


Pourquoi englober tout le code dans une boucle With alors que tu ne modifies qu'un seul paramètre de la combobox?

G) dans le module settings dans la méthode storesetting tu écris:

1
AppSettings["saNom"] = FMain.saNom


Pourquoi dans le fichier conf les champs sont séparés par des virgules. L'as-tu paramétré ou c'est par défaut?
Je ne connaissais pas cette façon d'aborder le fichier settings. C'est géant !

En tout cas, j'ai appris pas mal de choses à la lecture de ton code.
bravo!
;) ;)

valaquarus#2 Posté le 5/1/2024 à 11:04:06
-- Unus Ex Altera --Bonjour Sphéris,
Je te réponds volontiers sur les différents points que tu soulèves :
1
ME.close(TRUE)

ce n'est pas moi qui est mis ce true ici c'est l'ide, il suffit de lui demander un nouveau formulaire avec gestion des boites de dialogue pour qu'il écrive :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
PUBLIC SUB Run() AS BOOLEAN

RETURN NOT ME.ShowModal()

END

PUBLIC SUB btnOK_Click()

ME.Close(TRUE)

END

PUBLIC SUB btnCancel_Click()

ME.Close

END

J'avoue que je me suis déjà posé ces questions et recherché dans la documentation des réponses, je n'y ai obtenue que des questions supplémentaires.
Window.Close (gb.qt4)
Function Close ( [ Return As Integer ] ) As Boolean
Ferme la fenêtre, et retourne un entier en option, utilisé par la méthode ShowModal.

Window.ShowModal (gb.qt4)
Function ShowModal ( ) As Integer
Montre la fenêtre dans un mode modal.
Cette méthode se finit seulement quand la fenêtre est fermée, et la valeur passée à la méthode Close est retournée.

1
1 FMain.saStationUrl.Push(TextBox2.Text)

Là, il n'y a rien de choquant, je pousse (push) une valeur (string) dans un tableau de string[].


On peut écrire directement :

FileChooser1.SelectedPath = FMain.sChemMusique mais on perd juste à la lecture l'information de l'endroit et un mot ne coûte rien à écrire.
Je veux que le répertoire d'ouverture soit celui de la Musique sur mon disque dur.

With End With n'est pas une boucle c'est pourquoi je peux y mettre ce que je veux si cela représente quelque chose et a du sens
mais si on veut être brut de pomme on n'intégrerait que la ligne à modifier .


Pour les settings :
1
2
3
4
5
6
7
8
9
saNom = ["VirginRock70 mp3",
"France Musique AAC",
"La Baroque AAC",
"FIP JAZZ AAC",
"Easy Classic AAC",
"La Jazz AAC"]

'les flux des stations de radio web
saStationUrl = ["https://icy.unitedradio.it/VirginRock70.mp3", "[url=http://icecast.radiofrance.fr/francemusique-hifi.aac]http://icecast.radiofrance.fr/francemusique-hifi.aac[/url]", "[url=http://icecast.radiofrance.fr/francemusiquebaroque-hifi.aac]http://icecast.radiofrance.fr/francemusiquebaroque-hifi.aac[/url]", "[url=http://icecast.radiofrance.fr/fipjazz-hifi.aac]http://icecast.radiofrance.fr/fipjazz-hifi.aac[/url]", "[url=http://icecast.radiofrance.fr/francemusiqueeasyclassique-hifi.aac]http://icecast.radiofrance.fr/francemusiqueeasyclassique-hifi.aac[/url]", "[url=http://icecast.radiofrance.fr/francemusiquelajazz-hifi.aac]http://icecast.radiofrance.fr/francemusiquelajazz-hifi.aac[/url]"]


1
2
PUBLIC saStationUrl AS String[] 'URL des stations
PUBLIC saNom AS String[] 'nom des stations

Ces deux valeurs sont des tableaux de string, il est normal de retrouver une liste séparée par des virgules dans leur initialisation.

J'espère avoir répondu le plus clairement possible à ces différentes questions légitimes.
Valaquarus

Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5
spheris#3 Posté le 5/1/2024 à 16:44:44
Merci oui j'y vois plus clair maintenant.
Par contre, je viens de découvrir l'option à cocher 'boite de dialogue' et entre nous je ne vois pas à quoi cela peut servir.
une petite parenthèse qui je pense est intéressante:

Comment dans cette dite boite de dialogue font-ils pour ne pas avoir deux boutons collé cote à cote malgré une Hbox qui les lient tous les deux.
valaquarus#4 Posté le 5/1/2024 à 18:05:47
-- Unus Ex Altera --
Comment dans cette dite boite de dialogue font-ils pour ne pas avoir deux boutons collé cote à cote malgré une Hbox qui les lient tous les deux.

Simplement avec la propriété expand à true du panel alliée au spacing à true de la hbox.
Valaquarus
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.5
1