Gambas France BETA


Pas de compte ? Incription

Ecrire dans la page (form)

1
AuteurMessages
almasi#1 Posté le 24/6/2017 à 18:11:49
Bonjour à tous,

Je débute en Gambas et souhaite transcrire un programme VB dans lequel l'essentiel est composé de menus écrits directement dans la page. Malheureusement, je ne trouve pas comment faire en Gambas, la commande Print écrivant, elle, dans la console.

Existe-t-il une solution?

Merci d'avance!
vuott#2 Posté le 24/6/2017 à 23:59:07
Ne cedere ineluctabili possimusJe ne sais pas si moi j'ai bien compris, mais si tu veux faire apparaître l'écrit dans le Form, tu dois mettre, par exemple, un Label sur le Form.
Puis tu peux utiliser la propriété Label1.Text.

Exemplum:
1
2
3
4
5
6
7
8
9
PUBLIC SUB Form_Open()

WITH Label1
.Alignment = Align.TopLeft
.Text = "Gambas est un langage de programmation libre utilisant la syntaxe du BASIC,\ndisponible (pour le moment) pour GNU/Linux et autres systèmes Unix." &
"\nIl est accompagné d'un interpréteur et d'un IDE."
END WITH

END

« Vita non suavis esse potest, nec Mors amara. »
almasi#3 Posté le 25/6/2017 à 21:54:46
Merci vuott,

Tu as très bien compris ma question.

La solution que tu me propose fonctionne bien sûr, mais j'ai besoin de pouvoir utiliser la page comme dans l'antique QBasic, d'où provient le programme VB que je cherche à convertir. A l'origine il y avait des menus sous forme de lignes numérotées, chacune figurant un choix. Au bas de ces lignes figurait une question "Choix n° ? " et il suffisait de taper un chiffre puis valider pour ouvrir l'option choisie.

Avantage : tout se commande au pavé numérique et pour l'avoir longtemps utilisé, je peux dire que c'était très rapide et facile, bref agréable. Pas de souris, c'est bien trop lent en réclamant des mouvements, des sélections et des clics. Le programme converti en VB fonctionne au seul pavé umérique car il est possible d'écrire directement dans la page avec "Print" et de récupérer les réponses avec "InputBox", il mais réclame windows...

De plus, ma version de Gambas (3.1.1), acquise avec le Gestionnaire de logiciels, ne possède pas de méthode "InputBox"... Mise à jour à faire je pense





almasi#4 Posté le 25/6/2017 à 22:37:03
Me voici de nouveau. J'ai trouvé une solution presque à l'identique de l'original, qui devrait me convenir. Il n'y a même pas besoin de valider le choix :



' Gambas class file

Public Sub _new()

End

Public Sub Form_Open()

With Label1
.Alignment = Align.TopLeft
'.Text = ""
End With

textbox1.text = ""

End

Public Sub textbox1_Change()

Dim choix As String

With Label1
.text = ""
.text = "1 - Ligne 1" & Chr$(10)
.text = Label1.text & "2 - Ligne 2"
End With

choix = textbox1.text
Select Case choix
Case 1
Message.Info("Choix 1", "VU")
textbox1.text = ""
Case 2
Message.Info("Choix 2", "VU")
textbox1.text = ""
Default
'Message.Info("Autre choix que 1 ou 2", "VU")
textbox1.text = ""
End Select

End


Merci encore pour ton aide rapide!



gambix#5 Posté le 26/6/2017 à 12:24:52
Faire simple !La il te faudrait persque une appli en console du coup...

gb.term.app ?

Tu peux aussi dessinner ton texte dans un drawing area... un peu dans le style de ce qui est fait avec la fenetre about
Moins de texte dans une signature c'est agrandir son espace.
Patrick#6 Posté le 26/6/2017 à 12:29:13
Bonjour,
Voila bien longtemps que je n'ai pas utilisé de menu comme ça ! il est peut-être possible de mélanger les 2 (souris et clavier) ?
L'utilisateur pourra choisir sa façon de travailler.
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
PUBLIC SUB Form_Open()

Button1.text = "1 - Choix 1"
Button2.text = "2 - Choix 2"
Button3.text = "3 - Autre Choix"
textbox1.text = ""
textbox1.SetFocus

END

PUBLIC SUB Button1_Click()

Message.Info("Choix 1", "VU")
textbox1.text = ""

END
PUBLIC SUB Button2_Click()

Message.Info("Choix 2", "VU")
textbox1.text = ""

END

PUBLIC SUB Button3_Click()

Message.Info("Autre choix", "VU")
textbox1.text = ""

END

PUBLIC SUB textbox1_KeyPress()

DIM choix AS STRING

TRY choix = Chr(Key.code)
IF ERROR THEN choix = ""
SELECT CASE choix
CASE "1"
Button1_Click

CASE "2"
Button2_Click

CASE "3"
Button3_Click

CASE ELSE
TextBox1.Clear

END SELECT
STOP EVENT

END

J'ai utilisé textbox1_KeyPress() juste pour monter une autre possibilité.
gambix#7 Posté le 26/6/2017 à 17:29:17
Faire simple !Après tu as la solution des raccourci automatiques :


Si tu donne le texte :

Button1.Text = "&1 - fonction 1"

alors le '&' n'est pas affiché mais assigne le raccourci alt+1 au bouton... bon la limite est que tu ne peux avoir que 9 chiffres mais ensuite tu as les lettres.

Moins de texte dans une signature c'est agrandir son espace.
Flachy Joe#8 Posté le 27/6/2017 à 09:08:28
Iguane : Il Gambas Uniquement pour Activer ses NEuronesSalut,

voila une idée pour faire ça rapidement, avec détection des touches et possibilité de cliquer sur les boutons.
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
PRIVATE allBtn AS NEW Button[]

PRIVATE SUB NewBtn(short AS STRING, text AS STRING)

DIM btn AS Button
btn = NEW Button(ME) AS "btn_Menu"

btn.Tag = short
btn.Text = short & " - " & text

IF allBtn.Count > 1 THEN
btn.y = allBtn[allBtn.Count - 1].y + allBtn[allBtn.Count - 1].h
ENDIF
allBtn.Push(btn)

END


PUBLIC SUB Form_Open()

'Création du menu
NewBtn("1", "La Bulgarie")
NewBtn("2", "Le Pakistan")
NewBtn("D", "La réponse D"

END


PUBLIC SUB btn_Menu_Click()

SELECT CASE LAST.tag
CASE "1"
Message("C'est pas faux !")
CASE "D"
Message.Question("Est-ce votre ultime bafouille ?", "Oui", "Non")
END SELECT

END


PUBLIC SUB btn_Menu_KeyPress()
DIM b AS Button

IF NOT Key.Normal THEN RETURN

FOR EACH b IN allBtn
IF Lower(b.Tag) = Key.Text THEN
b.Value = TRUE
ENDIF
NEXT

END
;) Flachy Joe ;)
almasi#9 Posté le 29/6/2017 à 22:58:10
Je vous avoue que je n'ai pas eu le temps d'analyser vos propositions et, devant m'absenter dès dimanche pour une petite semaine, cela risque d'attendre encore un peu. Mais comme je vais en avoir besoin, cela se fera et je vous donnerai alors des nouvelles.

Merci à tous en attendant, c'est très sympa de votre part
1