Gadget sur un Canvas

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Gadget sur un Canvas

Message par falsam »

Je pensais qu'un StringGadget était inopérationnel sur un CanvasGadget.

Je voudrais savoir si le résultat de ce code est un bug ou pas et si ça fonctionne sous environnement Linux et Mac OS.

Avec la souris, sélectionner une position sur le canvas. Entrer un texte, puis valider avec la touche entrée.

Code : Tout sélectionner

Enumeration Police
  #Font
EndEnumeration

Enumeration Windows
  #Mainform
EndEnumeration

Enumeration Gadgets    
  #Canvas
  #Buffer
EndEnumeration

Enumeration MenuAndShortCut
  #Kbd_Return
EndEnumeration

Define.l Event, WEvent, MEvent, GEvent, TEvent

Global WindowStyle.i=#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered|#PB_Window_SizeGadget

Global WWidth.i, WHeight.i, Buffer.s

Procedure Open_MainForm()
  LoadFont(#Font, "Arial", 9)
  SetGadgetFont(#PB_Default, FontID(#Font)) 
  
  OpenWindow(#Mainform, 0, 0, 800, 600, "New Form", WindowStyle)
  CanvasGadget(#Canvas, 0, 0, 800, 600)
  
  AddKeyboardShortcut(#Mainform, #PB_Shortcut_Return, #Kbd_Return)
EndProcedure
 
Open_MainForm()

Repeat
  Event  = WaitWindowEvent(10)
  WEvent = EventWindow() 
  MEvent = EventMenu()
  GEvent = EventGadget()
  TEvent = EventType()
  Select Event
    Case #PB_Event_Menu
      Select MEvent
        Case #Kbd_Return
          If IsGadget(#Buffer)
            Buffer = GetGadgetText(#Buffer)
          
            StartDrawing(CanvasOutput(#Canvas))
            DrawingMode(#PB_2DDrawing_Transparent )
            DrawingFont(FontID(#Font))
            DrawText(GadgetX(#Buffer), GadgetY(#Buffer), Buffer, RGB(0, 0, 0))
            StopDrawing()
          
            FreeGadget(#Buffer)
          EndIf
          
      EndSelect
      
    Case #PB_Event_Gadget
      Select GEvent
        Case #Canvas
          Select TEvent
            Case #PB_EventType_LeftButtonDown
            x = GetGadgetAttribute(0, #PB_Canvas_MouseX)
            y = GetGadgetAttribute(0, #PB_Canvas_MouseY)

            StringGadget(#Buffer, x, y, 300, 22,"Votre texte")
            SetActiveGadget(#Buffer)
          EndSelect
                    
      EndSelect
      
    Case #PB_Event_SizeWindow
      WWidth  = WindowWidth(#Mainform, #PB_Window_InnerCoordinate)
      WHeight = WindowHeight(#Mainform, #PB_Window_InnerCoordinate)
      ResizeGadget(#Canvas, #PB_Ignore, #PB_Ignore, WWidth, WHeight)
      
    Case #PB_Event_CloseWindow
      End
      
  EndSelect
ForEver
Dernière modification par falsam le jeu. 05/sept./2013 11:45, modifié 1 fois.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Gadget sur un Canvas

Message par G-Rom »

marche pas sous linux x64

edit:
j'aurais créer une fenêtre par dessus la principale à la taille du stringgadget, les gadgets ne sont pas fait pour se chevaucher.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Gadget sur un Canvas

Message par falsam »

G-Rom a écrit :marche pas sous linux x64
Je pense que c'est #PB_Event_SizeWindow qui ne réagit pas de la même manière que sous Windows. j'ai modifié le code. Si tu pouvais refaire ce test G-Rom ?
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Gadget sur un Canvas

Message par G-Rom »

Well done, ca marche ^^
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Gadget sur un Canvas

Message par falsam »

G-Rom a écrit :Well done, ca marche ^^
Yeahhhhh :)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Gadget sur un Canvas

Message par MetalOS »

Marche aussi sur Mac OS X Mountain Lion.

Image
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Gadget sur un Canvas

Message par falsam »

Merci de ta réponse MetalOS :)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Répondre