Les "Frames" : question d'un presque transfuge Delphi

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Stpéphane
Messages : 2
Inscription : lun. 07/juil./2025 0:06

Les "Frames" : question d'un presque transfuge Delphi

Message par Stpéphane »

Bonjour
Je dev en Delphi depuis plusieurs années et ai découvert, un peu par hasard, PureBAsic et sa puissance mais surtout sa simplicité avec la possibilité de faire du 100% procédural moi qui déteste la POO ...
En delphi il existe un composant appelé Frame qui n est rien d autre qu'un cadre dans lequel on injecte une partie de l interface visuelle que l on a développé (tant visuellement qu'au niveau des procédures spécifiques) dans un autre fichier.
Je ne vois pas l équivalent en PureBasic.
Donc j imagine créer l équivalent avec un panel invisible dans lequel j aurais mis tous mes composants et que je dupliquerais à volonté par code et passerai à visible. Mais si vous imaginez une piste plus simple à mettre en œuvre, je suis preneur, je ne demande qu'à apprendre ;-)
Seulement quid des procédures spécifiques .
Auriez vous un exemple, tout du moins une piste car j'ai bien évidement, comme tout débutant, tendance à vouloir réinventer la roue d'autant que ma première idée est de détecter le tag du gadget appelant la procédure... mais je ne vois pas de tag... Je suis donc un peu perdu.
Merci pour votre aide et vos conseils.
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: Les "Frames" : question d'un presque transfuge Delphi

Message par Mesa »

Bienvenue chez PureBasic.

Moi aussi la poo ma gonflé très vite, ellse est inutile dans la pluspart des cas, d'après moi.

Ça fait très longtemps que je n'a pas touché à Delphi, mais je pense que ce que tu cherches s'appelle: containergadget.

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 430, 150, "ContainerGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  
  ;frame 0
  ContainerGadget(0, 5, 5, 340, 140, #PB_Container_Raised)
  ButtonGadget(1, 10, 15, 80, 24, "Bouton 1")
  ButtonGadget(2, 95, 15, 80, 24, "Bouton 2")
  CloseGadgetList()
  
  
  ;frame 1
  ContainerGadget(3, 5, 5, 340, 140)
  PanelGadget(4, 0, 0, 340, 140)
  AddGadgetItem (4, - 1, "Onglet 1")
  CanvasGadget(5, 3, 3, GadgetWidth(4) - 9, GadgetHeight(4) - 30);?
  CloseGadgetList()
  CloseGadgetList()
  HideGadget(3, #True)
  
  ;bouton on/off
  ButtonGadget(6, 350, 5, 60, 26, "On", #PB_Button_Toggle)
  
  
  Repeat
    Event = WaitWindowEvent()
    
    Select Event
        
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 6
            Select EventType()
              Case #PB_EventType_LeftClick
                If GetGadgetState(6)
                  SetGadgetText(6, "OFF")
                  HideGadget(0, #True)
                  HideGadget(3, #False)
                Else
                  SetGadgetText(6, "ON")
                  HideGadget(0, #False)
                  HideGadget(3, #True)
                EndIf
                
            EndSelect
            
        EndSelect
        
    EndSelect
  Until Event = #PB_Event_CloseWindow
  
EndIf


M.
Stpéphane
Messages : 2
Inscription : lun. 07/juil./2025 0:06

Re: Les "Frames" : question d'un presque transfuge Delphi

Message par Stpéphane »

Merci pour ta réponse.

Après y avoir réfléchi encore, mon pb est plus simple que la façon dont je le présente. C est très certainement la déformation POO car il suffit en fait de créer dynamiquement les composants et de leur attacher tout aussi dynamiquement des events...
J ai demandé à xxx qui m a confirmé que cela était possible. Alors si une IA le dit, puisque c est devenu le graal de tous programmeurs, c est que c est vrai.

Oui c est ironique car je trouve désespérant le recours systématique que certains ont aux IA. J ai appris en décortiquant des codes que je copiais depuis les magazines dans les années 80...

Et oui en Pph, la prog procédurale est souvent beaucoup plus rapide que la POO, mais dans ce langage particulièrement, dire cela revient à être complotiste... dans beaucoup de langages d ailleurs ;-)

Merci pour ton aide.
Répondre