Je cherche à faire un petit tableur de x lignes et y colones.
J'utilise ListIconGadget et tout va bien pour l'affichage.
Par contre je n'arrive pas à selecionner un elements autre que ceux de la premier colone ...
Mon but est de pouvoir editer un element (directement ou par l'intermediaire d'un inputrequester).
Cela est-il possible avec Listicongadget ou existe til un autre gadget permetant cela ?
PS: dans la doc de listicongadget ont voit sur l'image d'exemple, un petit triangle à droite du mot Nom. Comment fait-on pour l'afficher ? Si c'est Api ... taper deux fois ...
Tableur
pour listicon gadget avec plusieurs colonnes, c'est normal.
seules les lignes sont concernées globalement.
Mais il suffit de créer plusieurs listicongadget les une à côté des autres.
Sinon tu peux créer un tableau de stringgadget
ou comme ça:
code commencé il y a longtemps, mais jamais fini. Donc c'est pas top, mais ça peut t'aider. (Miracle, il trainait encore sur mon disque)
TAB pour valider une entrée
ou encore (encore un reliquat!)
Pas faire attention à la console
Je ne les ai pas modifié, et ils étaient en cours de construction...
seules les lignes sont concernées globalement.
Mais il suffit de créer plusieurs listicongadget les une à côté des autres.
Sinon tu peux créer un tableau de stringgadget
ou comme ça:
code commencé il y a longtemps, mais jamais fini. Donc c'est pas top, mais ça peut t'aider. (Miracle, il trainait encore sur mon disque)
TAB pour valider une entrée
Code : Tout sélectionner
OpenConsole():InitKeyboard()
hauteur.l=0
largeur.l=0
nligne=30:ncolonne=30
basel=1:basec=1:courantl=1:courantc=1:edit.b=0
Dim tab.s(nligne,ncolonne)
Dim type.s(nligne,ncolonne)
Global edit
Global tab,type,ncolonne,nligne,basel,basec,courantl,courantc
Declare refresh()
win.l=OpenWindow(0,0,0,800,500,#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered |#PB_Window_SystemMenu|#PB_Window_TitleBar,"Tableur")
CreateMenu(0,win)
MenuTitle("Fichiers")
MenuItem(10,"Ouvrir")
MenuItem(11,"Sauver")
MenuItem(12,"Sauver comme")
MenuTitle("Edition")
MenuItem(21,"Copier")
MenuItem(22,"Coller")
CreateGadgetList(win)
EditorGadget (2,100,10,600,40,#PB_Container_Raised)
;ScrollAreaGadget(1,0,80,790,410,ncolonne*60,nligne*20,30,#PB_ScrollArea_Single)
ContainerGadget(1,5,80,13*60,19*20,#PB_Container_raised|#PB_Container_double)
CreateImage(0,13*60,19*20)
ImageGadget(3,0,0,13*60,19*20,UseImage(0))
CloseGadgetList()
run.b=1:ligne=1:colonne=1
Repeat
event=WaitWindowEvent()
If WindowHeight()<>hauteur Or WindowWidth()<>largeur
hauteur=WindowHeight():largeur=WindowWidth()
;ResizeGadget(1,5,80,largeur-10,hauteur-90)
refresh()
EndIf
ExamineKeyboard()
If KeyboardReleased(#PB_Key_Tab)
tab(courantl,courantc)=GetGadgetText(2)
If courantl<nligne : courantl=courantl+1:EndIf
refresh()
EndIf
If KeyboardReleased(#PB_Key_down)
PrintN("down")
EndIf
If KeyboardReleased(#PB_Key_up) And ligne>1
ligne=ligne-1:ActivateGadget(colonne+1000*ligne)
EndIf
Select event
Case 513
If WindowMouseX()>72 And WindowMouseY()>152
courantc=basec+Round((WindowMouseX()-12)/60,0)-1
courantl=basel+Round((WindowMouseY()-132)/20,0)-1
PrintN(Str(WindowMouseX())+" "+Str(WindowMouseY()))
PrintN(Str(courantl)+" "+Str(courantc))
refresh()
ActivateGadget(2)
EndIf
Case #PB_Event_Gadget
Select EventType()
EndSelect
Case #PB_EventCloseWindow
run=0
EndSelect
Until run=0
CloseConsole():CloseWindow(win)
End
Procedure refresh()
If courantl>basel+16: basel=basel+1:EndIf
If courantc>basec+10: basec=basec+1:EndIf
If courantl=basel And basel>1: basel=basel-1:EndIf
If courantc=basec And basec>1 : basec=basec-1:EndIf
StartDrawing(ImageOutput())
Box(0,0,13*60,19*20,RGB(255,255,255))
FrontColor(0,0,0)
For i=1 To 19
For j=1 To 13
Line(60*j,20,1,19*20+50)
Line(60,20*i,13*60,1)
Locate(60*(j)+2,20*(i)+2)
DrawText(Left(tab(basel+i-1,basec+j-1),7))
Next j
Next i
FrontColor(0,0,255)
For i=1 To 19
Locate(0,19*i):DrawText("L "+Str(basel+i-1))
Next i
For j=1 To 13
Locate(60*j,0):DrawText("C "+Str(basec+j-1))
Next j
FrontColor(255,0,0)
DrawingMode(4)
Box(60*(courantc-basec+1)+1,20*(courantl-basel+1)+1,60,20)
DrawImage(0,0,0)
StopDrawing()
SetGadgetState(3,UseImage(0))
SetGadgetText(2,tab(courantl,courantc))
EndProcedure
Code : Tout sélectionner
OpenConsole():InitKeyboard()
hauteur.l=300
largeur.l=500
nligne=30:ncolonne=30
win.l=OpenWindow(0,0,0,800,500,#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered |#PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MaximizeGadget|#PB_Window_TitleBar,"Tableur")
PrintN(Str(win))
CreateGadgetList(win)
ScrollAreaGadget(1,0,0,790,590,ncolonne*60+90,nligne*20+50,30)
For i.l=1 To ncolonne
For j.l=1 To nligne
StringGadget(1000*j+i,60*i,20*j,60,20,"")
Next j
Next i
CloseGadgetList()
run.b=1:ligne=1:colonne=1
Repeat
event=WaitWindowEvent()
If WindowHeight()<>hauteur Or WindowWidth()<>largeur
hauteur=WindowHeight():largeur=WindowWidth()
ResizeGadget(1,0,0,largeur-10,hauteur-10)
EndIf
ExamineKeyboard()
If KeyboardReleased(#PB_Key_Return) And colonne<ncolonne
colonne=colonne+1:ActivateGadget(colonne+1000*ligne)
EndIf
If KeyboardReleased(#PB_Key_down) And ligne<nligne
ligne=ligne+1:ActivateGadget(colonne+1000*ligne)
EndIf
If KeyboardReleased(#PB_Key_up) And ligne>1
ligne=ligne-1:ActivateGadget(colonne+1000*ligne)
EndIf
;If KeyboardReleased(#PB_Key_left) And colonne>1
;colonne=colonne-1:ActivateGadget(colonne+1000*ligne)
;EndIf
;If KeyboardReleased(#PB_Key_Right) And colonne<ncolonne
;colonne=colonne+1:ActivateGadget(colonne+1000*ligne)
;EndIf
Select event
Case #PB_Event_Gadget
Select EventType()
Case #PB_EventType_Focus
n.l=EventGadgetID():ligne=Round(n/1000,0):colonne=n-1000*ligne
PrintN(Str(ligne)+" "+Str(colonne))
EndSelect
Case #PB_EventCloseWindow
run=0
EndSelect
Until run=0
CloseConsole():CloseWindow(win)
End
Je ne les ai pas modifié, et ils étaient en cours de construction...