Gambas France BETA


Pas de compte ? Incription

Rafraîchir InputBox

Ce sujet est résolu.

1
AuteurMessages
didier18#1 Posté le 22/11/2015 à 11:36:55
Bonjour

Comment rafraîchir une InputBox (avant qu'elle ne soit affichée) si elle contient une nombre important de lignes de choix ?
Dans l'exemple ci-dessous le dialogue s'ouvre bien mais on ne vois pas l'intégralité de la liste.
Pour afficher la totalité des données, il faut cliquer sur le signe '-' de la fenêtre InputBox...

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
' Gambas class file

PUBLIC btn AS NEW Button(ME) AS "btn"
PUBLIC $sIlist AS String[]
PUBLIC msg AS STRING

PUBLIC SUB btn_Click()
DIM i, j AS INTEGER
$sIlist = Split("0-SDA0,1-SDA1,2-SDA2,3-SDA3,4-SDA4,5-SDA5,6-SDA6,7-SDA7,8-SDA8,9-SDA9,10-SDA10", ",")
FOR i = 0 TO $sIlist.Count - 1
msg = msg & $sIlist[i] & "<br>"
NEXT
j = InputBox(msg & "Choisir une valeur", "test inputbox")
END

PUBLIC SUB Form_Open()
ME.center
WITH btn
.H = 28
.Text = "Choix"
.W = 50
.X = 10
.Y = 10
END WITH
END


A noter que j'ai le même soucis que ce soit sous Gambas3-3.6.2 que sous Gambas3-3.8.3...
Merci
Bonne journée.
gambix#2 Posté le 22/11/2015 à 22:32:54
Faire simple !Je pense que dans ton cas une boite de dialogue personnalisée serait plus indiquée. Tu pourrais même en faire une basée sur un combobox ou bien un listview, vu que tes choix sont limité et strictes
Moins de texte dans une signature c'est agrandir son espace.
linuxos#3 Posté le 23/11/2015 à 02:43:56
Un peu de sel, de poivre et la crevette sera... Bonsoir Didier,

A tester: ajouter: Me.Refresh a la fin de la fonction Form_Open() pour le forcer a rafraichir.

Sinon, lancer un Timer avec 10ms qui lui déclarera ton InputBox. Dans plusieurs cas j'ai eu recours a cette méthode car l'affichage du contenu de formulaires n'était pas comme complété.

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.
vuott#4 Posté le 23/11/2015 à 17:16:11
Ne cedere ineluctabili possimusTchao didier18,

...est-ce que tu utilises QT4 ou GTK ? ......
« Vita non suavis esse potest, nec Mors amara. »
didier18#5 Posté le 24/11/2015 à 11:40:21
Bonjour

Je viens de m'apercevoir que l'exemple tel que donné dans mon premier message fonctionne tout à fait et ne reproduis pas le phénomène de mauvais affichage...
J'en déduis qu'il doit y avoir un tampon ou une variable que j'ai mal vidée quelques part (donc c'est de ma faute !).

vuott@ : J'utilise QT4, mais effectivement c'est une éventualité d'incompatibilité à laquelle je n'avais pas pensé.

linuxos@ : Le Me.Refresh ne fonctionne pas dans ce cas, j'ai placé cette commande (y compris en fin du Form.Open) et à la fin de la procédure, mais celà n'a pas d'effet sur l'InpuBox. Ma logique tendrait à dire que c'est normal puisque l'InputBox est considérée comme un 'Dialog', c'est donc le 'Dialog' qu'il faudrait 'Refresher' et non le 'Form' (mais peut être que là aussi j'ai tout faux). Lancer un 'Timer' pour faire afficher l'InputBox' reste envisageable, mais vu que cette procédure ne devrait être utilisée qu'en de rares occasions voir pas du tout, je vais passer par une autre piste...

gambix@ : L'idée de la boîte de dialogue personnalisée (avec ComboBox) me semble être la plus judicieuse à ce stade. C'est cette solution que je vais adopter.

Merci à vous trois de m'avoir aidé à la résolution de ce problème.

Bonne journée.


vuott#6 Posté le 24/11/2015 à 13:51:51
Ne cedere ineluctabili possimusSi je utilise QT4, je reçois ce problème. Si je utilise GTK, je vois toute la liste en InputBox.
« Vita non suavis esse potest, nec Mors amara. »
didier18#7 Posté le 24/11/2015 à 14:40:39
vuott +1

L'éternel problème entre l'utilisation des composants gb.qt4 ou gb.gui qui sont incompatibles entre eux... :-(

Bonne journée.
1