New @ProcedureName() command

Share your advanced PureBasic knowledge/code with the community.
BackupUser
PureBasic Guru
PureBasic Guru
Posts: 16777133
Joined: Tue Apr 22, 2003 7:42 pm

New @ProcedureName() command

Post by BackupUser »

Restored from previous forum. Originally posted by Franco.

Code updated for 5.20+

Excellent work Fred!
This is what I searched for . Now here is an example:

Code: Select all

; (c) 2001 - Franco's template - absolutely freeware
; Events with the new @ProcedureName() command.
; ; Enable inline ASM support!
; 
; EnableASM

Dim ConnectMenu.i(16) ;max gadgets from menu & toolbar
Dim ConnectGadget.i(3) ;max other gadgets

; Create all Functions and connect these.
Procedure FunctionNew()
  MessageRequester("Procedure Function","New",0)
EndProcedure
ConnectMenu(0) = @FunctionNew()
ConnectMenu(14) = @FunctionNew()
ConnectGadget(0) = @FunctionNew()

Procedure FunctionOpen()
  MessageRequester("Procedure Function","Open",0)
EndProcedure
ConnectMenu(1) = @FunctionOpen()
ConnectMenu(15) = @FunctionOpen()
ConnectGadget(1) = @FunctionOpen()

Procedure FunctionSave()
  MessageRequester("Procedure Function","Save",0)
EndProcedure
ConnectMenu(2) = @FunctionSave()
ConnectMenu(16) = @FunctionSave()
ConnectGadget(2) = @FunctionSave()

Procedure FunctionPrint()
  MessageRequester("Procedure Function","Print",0)
EndProcedure
ConnectMenu(3) = @FunctionPrint()
ConnectGadget(3) = @FunctionPrint()

Procedure FunctionFind()
  MessageRequester("Procedure Function","Find",0)
EndProcedure
ConnectMenu(4) = @FunctionFind()

Procedure FunctionReplace()
  MessageRequester("Procedure Function","Replace",0)
EndProcedure
ConnectMenu(5) = @FunctionReplace()

Procedure FunctionCut()
  MessageRequester("Procedure Function","Cut",0)
EndProcedure
ConnectMenu(6) = @FunctionCut()

Procedure FunctionCopy()
  MessageRequester("Procedure Function","Copy",0)
EndProcedure
ConnectMenu(7) = @FunctionCopy()

Procedure FunctionPaste()
  MessageRequester("Procedure Function","Paste",0)
EndProcedure
ConnectMenu(8) = @FunctionPaste()

Procedure FunctionUndo()
  MessageRequester("Procedure Function","Undo",0)
EndProcedure
ConnectMenu(9) = @FunctionUndo()

Procedure FunctionRedo()
  MessageRequester("Procedure Function","Redo",0)
EndProcedure
ConnectMenu(10) = @FunctionRedo()

Procedure FunctionDelete()
  MessageRequester("Procedure Function","Delete",0)
EndProcedure
ConnectMenu(11) = @FunctionDelete()

Procedure FunctionProperties()
  MessageRequester("Procedure Function","Properties",0)
EndProcedure
ConnectMenu(12) = @FunctionProperties()

Procedure FunctionHelp()
  MessageRequester("Procedure Function","Help",0)
EndProcedure
ConnectMenu(13) = @FunctionHelp()


If OpenWindow(0, 200, 200, 340, 240, "ToolBar event example", #PB_Window_SystemMenu)
  If CreateToolBar(0, WindowID(0))
    ToolBarStandardButton(0, #PB_ToolBarIcon_New)
    ToolBarStandardButton(1, #PB_ToolBarIcon_Open)
    ToolBarStandardButton(2, #PB_ToolBarIcon_Save)
    ToolBarStandardButton(3, #PB_ToolBarIcon_Print)
    ToolBarStandardButton(4, #PB_ToolBarIcon_Find)
    ToolBarStandardButton(5, #PB_ToolBarIcon_Replace)
    ToolBarStandardButton(6, #PB_ToolBarIcon_Cut)
    ToolBarStandardButton(7, #PB_ToolBarIcon_Copy)
    ToolBarStandardButton(8, #PB_ToolBarIcon_Paste)
    ToolBarStandardButton(9, #PB_ToolBarIcon_Undo)
    ToolBarStandardButton(10, #PB_ToolBarIcon_Redo)
    ToolBarStandardButton(11, #PB_ToolBarIcon_Delete)
    ToolBarStandardButton(12, #PB_ToolBarIcon_Properties)
    ToolBarStandardButton(13, #PB_ToolBarIcon_Help)
  EndIf
 
  If CreateMenu(0, WindowID(0))
    MenuTitle("Project")
    MenuItem(14, "New")
    MenuItem(15, "Open")
    MenuItem(16, "Save")
  EndIf
 
  ButtonGadget(0,2,170,80,25,"New")
  ButtonGadget(1,85,170,80,25,"Open")
  ButtonGadget(2,168,170,80,25,"Save")
  ButtonGadget(3,251,170,80,25,"Print")
 
  Repeat
    EventID = WaitWindowEvent()
    If EventID = #PB_Event_Menu : Function.i = ConnectMenu(EventGadget()) : CallFunctionFast(Function) : EndIf
    If EventID = #PB_Event_Gadget : Function.i = ConnectGadget(EventGadget()) : CallFunctionFast(Function) : EndIf
  Until EventID = #PB_Event_CloseWindow
EndIf

End 
Have a nice day...
Franco