Ce qui serait bien, c'est de pouvoir insérer une procedure dans une procedure.
Ou bien un gosub return dans une procedure.
Car parfois y'a des codes qui nécéssitent deux procedures qui sont liées ensembles.
Et donc ça sert à rien de créer deux procedure, sauf à oublier d'en copier une des deux ou trois et d'avoir un gros message d'erreur comme quoi cette instruction n'est ni un tableau ni une fonction
Comme par example dans ce code qui est génial, dont j'avais besoin et que m'a donné SROD, pour compter les gadgets par type dans une fenetre .
Mais bon la procedure est constituée de 2 procédures + 1 declaration.
Bon on peut mettre la declaration dans la procedure, je l'ai déja fait plusieur fois et ça marche, mais on ne peut pas merger les deux
Et je trouve ça dommage, pour la clarté d'un code.
Apres tout si elle ne sert qu'a cette instruction pourquoi ne pas pouvoir la mettre dedans
Reste encore les PBI équivalents des modules VB ou l'on mettrait que ce code, soit, mais ça fait plein de petits fichiers qui tourne autour de l'appli principale, encore un moyen d'en oublier un ....
Code : Tout sélectionner
Structure _countgadgets
className$
count.l
EndStructure
Procedure.l EnumChildWindowProc(hwnd, *cg._countgadgets)
Protected buffer$
buffer$=Space(100)
GetClassName_(hwnd, @buffer$, 100)
If buffer$ = *cg\className$
*cg\count + 1
EndIf
ProcedureReturn 1
EndProcedure
;The following function takes a window handle and a gadget handle and returns a count of the
;number of similar controls on the given window.
;This count includes the specified gadget.
Procedure.l CountSimilarGadgets(winhWnd, gadgethWnd)
Protected buffer$
Protected cg._countgadgets
If IsWindow_(winhWnd) And IsWindow_(gadgethWnd)
buffer$=Space(100)
GetClassName_(gadgethWnd, @buffer$, 100)
cg\className$ = buffer$
EnumChildWindows_(winhWnd, @EnumChildWindowProc(),@cg)
EndIf
ProcedureReturn cg\count
EndProcedure
If OpenWindow(0, 100, 100, 600, 600, "Count gadgets", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
ButtonGadget(0, 10, 10, 200, 20, "Standard Button")
ButtonGadget(1, 10, 40, 200, 20, "Left Button", #PB_Button_Left)
ButtonGadget(2, 10, 70, 200, 20, "Right Button", #PB_Button_Right)
ButtonGadget(3, 10,100, 200, 60, "Multiline Button (longer text gets automatically wrapped)", #PB_Button_MultiLine)
ButtonGadget(4, 10,170, 200, 20, "Toggle Button", #PB_Button_Toggle)
count = CountSimilarGadgets(WindowID(0), GadgetID(0))
Debug "There are " + Str(count) + " buttons!"
Repeat
event = WaitWindowEvent()
Until event = #PB_Event_CloseWindow
EndIf
End