Gambas France BETA


Pas de compte ? Incription

Comment ...

Ce sujet est résolu.

1
AuteurMessages
valaquarus#1 Posté le 6/8/2022 à 17:43:54
-- Unus Ex Altera --Comment faire en sorte de récupérer le résultat d'une opération dans la calculatrice de ce projet : CalcTest et l'envoyer s'imprimer dans un TextArea, par exemple.
J'aimerais imprimer au moment où l'utilisateur clique sur égal dans la calculatrice puisque la propriété Resultat se trouve alimentée à ce moment là.
Philippe

Merci pour la leçon de chose.
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.3
spheris#2 Posté le 6/8/2022 à 19:09:37
philippe,
De ce que je comprends, il faut bidouiller la classe dans frmcalcul pour récupérer la valeur lors d'un clic sur le bouton egal.
Peut être créer une fonction qui te renvoi la valeur, ou utiliser une propriété.
Dans les deux cas, je ne saurais t'aider, car je potasse ton code avec grand intérêt, car vraiment nouveau pour moi.
L'utilisation d'un nouveau contrôle fait maison est une découverte forte intéressante.
;-)
valaquarus#3 Posté le 6/8/2022 à 20:49:49
-- Unus Ex Altera --@Spheris,
je récupère le résultat dans une propriété appelée bêtement Resultat.
Voir la procédure btnEgal_Click() :
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
PUBLIC SUB btnEgal_Click() '<---------------------------------------- évènement _Click() lors de l'appui sur "="

IF $signe <> "" THEN INC $i ELSE RETURN '<----------------------- on incrémente $i qu'après un passage par Chiffres

SELECT CASE $signe '<--------------------------------------------- les opérations à faire en fonction du signe cliqué
CASE "+"
$fValeur.Add($fValeur[$i - 2] + $fValeur[$i - 1], $i)
CASE "-"
$fValeur.Add($fValeur[$i - 2] - $fValeur[$i - 1], $i)
CASE "/"
IF $fValeur[$i - 1] <> 0 THEN $fValeur.Add($fValeur[$i - 2] / $fValeur[$i - 1], $i) ELSE RETURN '<-- pas de division par zéro
CASE "*"
$fValeur.Add($fValeur[$i - 2] * $fValeur[$i - 1], $i)
END SELECT

tbAffichage.text = Str$($fValeur[$i]) '<------------------------ localisation Europa
Insertion() '<---------------------------------------------------- insertion de la valeur dans le tableau

IF NOT IsNull($fValeur[$i - 2]) OR NOT IsNull($fValeur[$i - 1]) THEN '<---- pour impression quelconque Résultat
$sTransfText = Str($fValeur[$i - 2]) & " " & $signe & " " & Str($fValeur[$i - 1]) & " " & "=" & " " & Str($fValeur[$i]) & gb.CrLf '<--------------le résultat
RAISE EnvoiResultat(ME.Resultat) '<--------------------------- pour l'instant je ne sais pas m'en servir
ENDIF

$signe = "" '<--------------------------------------------------- pour empêcher de revenir sans passer par un autre signe
$iVirgule = 0 '<------------------------------------------------ réinitialisation iVirgule

END



L'idée d'un bouton intermédiaire fonctionne, il suffit de ça :
1
2
3
PUBLIC SUB Button1_Click()
TextArea1.Insert(Class11.ResultCalc)
END

mais j'aimerai faire mieux et m'en passer pour récupérer l'évènement de l'appui sur l'égal pour engendrer directement l'impression dans le TexArea.

Philippe
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.3
valaquarus#4 Posté le 6/8/2022 à 21:08:39
-- Unus Ex Altera --@Spheris,
j'ai mis une version modifiée avec le bouton dont on vient de parler :
CalcTest
C'est la variable privée (de dessert) $sTransfText qui récupère le résultat pour le transférer à la propriété :
1
PROPERTY Resultat AS STRING USE $sTransfText

puis je récupère ce Resultat dans (ici) la Class1 :
1
2
3
4
5
6
7
8
9
10
11
12
13
PROPERTY ResultCalc AS STRING '<---------------------------------- propriété pour récupérer le résultat de frmCalcul

PRIVATE FUNCTION ResultCalc_Read() AS STRING '<--------------------- définition de la propriété ResultCalc

RETURN $hCalculatrice.Resultat

END

PRIVATE SUB ResultCalc_Write(Value AS STRING) '<--------------------- définition de la propriété ResultCalc

$hCalculatrice.Resultat = Value

END


Ça, c'est pour moi, la partie facile.

J'ai créé un event dans frmCalc mais je ne sais pas le récupérer dans la nouvelle Class1 :
1
EVENT EnvoiResultat(data AS STRING) '<------------------------------ déclaration d'un évènement mais je ne maîtrise pas


Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.3
spheris#5 Posté le 7/8/2022 à 18:27:16

En fait tu dois savoir que le programme que tu mets en téléchargement ne se compile pas sur mon gb3.14.3 car la propriété Frame1.alignement = left n'existe pas encore sous cette version.
Grrrrr....
c'est triste, ces histoires de versions non compatibles au sein meme de gb3
valaquarus#6 Posté le 8/8/2022 à 12:07:01
-- Unus Ex Altera --@spheris,
c'est tout le problème des évolutions, de n'importe quoi, d'ailleurs. Le principe de l'évolution est de faire mieux sinon ce n'est pas une évolution, c'est autre chose.
Philippe
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.3
spheris#7 Posté le 9/8/2022 à 18:54:15
Si on regarde à la concurence(qui n'en est plus une...)
Pour ne pas leur enlever cela, micro$oft faisait évoluer leur vb de 3 vers 4 en utilisant une rétro compatibilité temporaire, mais affichait clairement les évolutions d'une version à l'autre.
Là nous sommes de 3.14 à 3.17, ce qui est à mon sens du gambas 3.
Comment donc expliquer à des novices que la 3.9.x n'est pas compatible avec la 3.14, qui elle aussi n'est pas compatible avec la 3.17 ?

La solution : évoluez, évoluez, évoluez, et dites nous enfin quelle version STABLE et FONCTIONNELLE nous pouvons utiliser.

Le truc de fou, c'est que le site officiel même de gambas affiche les incompatibilités entre les versions (menu marron à gauche) :

http://gambas.sourceforge.net/en/main.html

Moi qui utilise différentes distros sur différentes plates formes,(ARM,I586, AMD64, etc...) , je ne vous raconte pas la galère...
valaquarus#8 Posté le 11/8/2022 à 00:55:08
-- Unus Ex Altera --@spheris,
n'y a t il pas de quoi mettre à jour toutes machines, je crois bien qu'il en existe deux dans la logithèque de Gambas mais je ne les ais pas testées car aucune utilité mais pour toi qui doit jongler en permanence entre plusieurs machines ce serait l'idéal de pourvoir tout mettre à jour dans une seule et même foulée.
Philippe
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.3
spheris#9 Posté le 12/8/2022 à 07:16:32
Philippe,
Malheureusement non , toutes les plates formes utilisées ont des versions différentes de gambas, et c'est bien ça le problème.
Les dernières versions à jour sont disponibles sur le site officiel. Tu remarqueras que sur certaine plates formes, on tourne encore avec une 3.9 de Gambas.
D'où une demande de compatibilité dans toutes les versions d'un gambas 3 traditionnel.

Sur la version 2 de gambas, du premier au dernier, toutes les sources se compilaient sans problème.

Je pense que l'idée actuelle de développemnt n'est pas bonne.

Corriger des bugs pour plus de stabilité, très bien. Mais enlever ou rajouter des fonctions, enlever ou ajouter des widgets, cela doit faire uniquement partie d'une nouvelle version. Gambas 4 par exemple.

prenons un exemple. La plupart des source en GB3 sur la forge qui ont été posées en 2010 ne se compile même plus, pourtant c'est du GB3.

Va expliquer cela à un néophite qu'il n'a pas le bon gambas 3 et qu'il doit mettre à jour sa version par le nouveau ppa(etc...), plusieurs vont fuir tout simplement.
linuxos#10 Posté le 12/8/2022 à 12:55:24
Un peu de sel, de poivre et la crevette sera... Bonjour spheris,

Il ne faut pas oublier que souvent les avancées de Gambas se font, car les distributions changent par elles-mêmes.
Par exemple, QT4 a disparu de la majorité des distributions, toujours présent, mais QT5 utilisé et installé par défaut.
Dans ce cas, Benoit n'a pas le choix que de faire évoluer Gambas.
Il y a bien des changements de part et d'autres, mais dans l'ensemble, si la compatibilité peut être gardée, elle le sera.

Pareil avec X11 et wayland maintenant, etc...

Olivier
Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
spheris#11 Posté le 12/8/2022 à 13:16:06
linuxos,
Et j'ajoute même

A) j'ai développé des programmes sous gtk2 en gb2, et ils fonctionnent très bien en gb3.14.3.


B) Je n'utilise jamais qt en raison de ces 'évolutions' (evolutions qui n'en sont pas une à mon avis car obligé de remodifier le code à chauqe fois, genre je dois réinventer la roue à chaque évolution)

C) Je dirais même avoir eesayé gtk3 avec gambas et je l'ai vite fuis.

D) D'où ma question récurente , si nous pouvions avoir fltk comme gb.fltk, je l'utiliserais avec le plus grand plaisir.

Je n'ai malheureusement pas la capacité de développer un composant fltk.
D'ailleurs, une autre question :

E) Exixte-t-il a possibilité d'importer des bibliothèque C++ dans fgb et non bibliothèe en C? y a t il quelque part su le net un exemple?
1