FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Gestion d'un système client-serveur.
Rendre la disposition d'une FORM modifiable par utilisateur Emptypar Klaus Ven 17 Mai 2024 - 14:02

» item_index(résolu)
Rendre la disposition d'une FORM modifiable par utilisateur Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
Rendre la disposition d'une FORM modifiable par utilisateur Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
Rendre la disposition d'une FORM modifiable par utilisateur Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Rendre la disposition d'une FORM modifiable par utilisateur Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
Rendre la disposition d'une FORM modifiable par utilisateur Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
Rendre la disposition d'une FORM modifiable par utilisateur Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
Rendre la disposition d'une FORM modifiable par utilisateur Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Rendre la disposition d'une FORM modifiable par utilisateur Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Rendre la disposition d'une FORM modifiable par utilisateur Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Rendre la disposition d'une FORM modifiable par utilisateur Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Rendre la disposition d'une FORM modifiable par utilisateur Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
Rendre la disposition d'une FORM modifiable par utilisateur Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Rendre la disposition d'une FORM modifiable par utilisateur Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
Rendre la disposition d'une FORM modifiable par utilisateur Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le deal à ne pas rater :
ETB Pokémon Fable Nébuleuse : où acheter le coffret dresseur ...
Voir le deal

 

 Rendre la disposition d'une FORM modifiable par utilisateur

Aller en bas 
3 participants
AuteurMessage
Klaus

Klaus


Nombre de messages : 12301
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Rendre la disposition d'une FORM modifiable par utilisateur Empty
MessageSujet: Rendre la disposition d'une FORM modifiable par utilisateur   Rendre la disposition d'une FORM modifiable par utilisateur EmptyVen 3 Fév 2012 - 1:03

Voici un petit essai de rendre une FORM modifiable par l'utilisateur. On peut prendre cela comme base pour un IDE, pour donner de la souplesse à une application, etc.

On peut décider à la création si un objet est déplaçable et/ou ou non. Cet outil peut être intégré dans un programme par 3 lignes de code en début du programme, dont une est un #INCLUDE du module concerné. Cette directive peut également être placée tout à la fin du programme. Elle est entièrement protégée contre toute exécution intempestive, même si on place le #INCLUDE en plein milieu d'un sous-programme, par exemple.

Le programme de démo montre un bouton et un mémo déplaçable, et un bouton non déplaçable. Cette option peut être activée ou désactivé, dans cet exemple, par la simple gestion du commentaire devant les deux lignes stratégiques en début du programme (ce sont les lignes 6 et 7 dans ce programme). Si la possibilité est activée, un menu "Edition" avec le sous-menu "Déplacer" apparait, et une ligne "Mode d'emploi" apparaît dans le menu "Aide". Dans la version ci-après, ces deux lignes sont désactivées, et ces éléments n'apparaissent pas.

Code:


label labels : gosub labels
' pour utiliser le modificateur:
'  placer les trois lignes suivantes AU DEBUT du programme !
' uniquement pour le modificateur
' label declarer_modificateur : ' à placer au début du programme
' gosub declarer_modificateur : ' à placer au début du programme
' à placer après les deux lignes précédentes OU à la fin du programme !
 #INCLUDE "MODIFICATEUR.bas"
gosub variables
gosub GUI
gosub MENU

end

' clic sur un bouton géré par le modificateur
fermer:
' *** les lignes suivantes sont spécifiques à l'usage du modificateur
  if variable("EDI_flag%")=1
    if EDI_flag%=0
      terminate
    else
        gosub identifier
    end_if
    return
  else
' *** fin des lignes spécifiques pour le modificateur
' *** ici, traitement normal de l'application
    terminate
  end_if : ' nécessaire pour fermer le IF du modificateur
 
' clic sur un objet non géré par le modificateur
non_gere:
  message "Cet objet ne peut pas être modifié !'
  return

' clic sur un mémo géré par le modificateur
click_memo:
' *** les lignes suivantes sont spécifiques à l'usage du modificateur
  if variable("EDI_flag%")=1
    if EDI_flag%=0
      message "Clic sur le mémo en PRESENCE du modificateur !"
    else
        gosub identifier
    end_if
    return
  else
' *** fin des lignes spécifiques pour le modificateur
' *** ici, traitement normal de l'application
    message "Click sur le mémo en ABSENCE du modificateur !"
  end_if : ' nécessaire pour fermer le IF du modificateur
  return
 
labels:
  label creer_objet_visible
  label creer_objet_invisible, variables, doc, apropos, click_memo
  label GUI, MENU, fermer, close_doc, close_apropos, non_gere
  return

variables:
  if variable("EDI_flag%")=0
    dim no%    : ' nécessaire en absence du modificateur !
  end_if
' placer ici toutes les variables de l'application
  dim  form_doc%, form_apropos%, s$, nl$
  dim temp1% , temp2%
' placer ici toutes les initialisations de variables
  nl$ = str$(13)+str$(10)
  return

' création d'un numéro d'objet
creer_objet_visible:
  if variable("EDI_flag%")=1
    n_objet% = n_objet% + 1
    no% = no% + 1
    objets%(no%,0) = no%
    objets%(no%,1) = 1
  else
    no% = no% + 1
  end_if
  return

' création d'un numéro d'objet
creer_objet_invisible:
  if variable("EDI_flag%")=1
    n_objet% = n_objet% + 1
    no% = no% + 1
    objets%(no%,0) = no%
    objets%(no%,1) = 0
  else
    no% = no% + 1
  end_if
  return

' créer ici l'interface visuel de l'application
' contraite: utiliser creer_objet_visible pour générer
' un numéro d'objet pour tous les objets "modifiables"
' et creer_objet_invisible pour tous les objets "non-
' "modifiables"
GUI:
' objets de la form 0
  gosub creer_objet_visible
  button no% : top no%,10 : left no%,10
  caption no%,"Fermer" : on_click no%, fermer
  gosub creer_objet_invisible
  button no% : top no%,10 : left no%,200
  caption no%,"Non géré" : on_click no%, non_gere
  gosub creer_objet_visible
  memo no% : top no%,40 : left no%,50
  item_add no%,"mémo géré par le Modificateur"
  on_click no%, click_memo

   
' form pour le mode d'emploi
  if variable("EDI_flag%")=1
    gosub creer_objet_invisible
    form_doc% = no%
    form no% : hide no% : caption no%, "Mode d'emploi"
    on_close no%, close_doc
    top no%,200 : left no%,200
    height no%, 500 : width no%,300
    gosub creer_objet_invisible
    memo no% : parent no%,form_doc%
    top no%,10 : left no%,10
    height no%,450 : width no%,280
    item_add no%,"Mode d'emploi du Modificateur"
    item_add no%,""
    item_add no%,"Le modificateur permet de changer l'aspect"
    item_add no%,"de tous les objets créés par creer_objet_visible."
    item_add no%,""
    item_add no%,"Pour l'activer, il faut choisir l'option Edition/Déplacer"
    item_add no%,"dans le menu de l'application."
    item_add no%,""
    item_add no%,"La fenêtre du modificateur apparaît alors,"
    item_add no%,"avec l'invitation de sélectionner un objet."
    item_add no%,"Pour cela, il suffit d'un clic gauche sur un objet"
    item_add no%,"qui a été créé par la routine creer_objet_visible."
    item_add no%,""
    item_add no%,"Une invitation à appliquer les modifications s'affiche alors."
    item_add no%,"Ces modifications s'effectuent à l'aide des champs et"
    item_add no%,"boutons de la fenêtre du modificateur. Ces éléments son"
    item_add no%," inactifs tant qu'un objet approprié n'a pas été choisi."
    item_add no%,""
    item_add no%,"On peut alors déplacer l'objet en utilisant les flèches du"
    item_add no%,"modificateur. Le pas de déplacements en pixels (défaut=5)"
    item_add no%,"est spécifié dans le champ à droite. Toute valeur non"
    item_add no%,"valide dans ce champ restaure le défaut de 5 pixels."
    item_add no%,""
    item_add no%,"On peut aussi changer les dimensions de l'objet, en"
    item_add no%,"spécifiant les nouvelles valeurs pour hauteur et largeur"
    item_add no%,"dans les champs respectifs. Ces valeurs seront appliquées"
    item_add no%,"par le bouton Valider.Toute valeur non valide dans ces"
    item_add no%,"champs laisse la valeur correspondante inchangée."
    item_add no%,""
    item_add no%,"Note:"
    item_add no%,"Pour l'heure, uniquement position et dimensions sont gérées."
  end_if

' form pour la fenêtre A-propos
  gosub creer_objet_invisible
  form_apropos% = no%
  form no% : hide no% : caption no%, "A propos"
  on_close no%, close_apropos
  top no%,200 : left no%,200
  gosub creer_objet_invisible
  alpha no% : parent no%, form_apropos%
  top no%,10 : left no%,10
  s$ = "GUI modifiable Version V1.0"+nl$+nl$
  s$ = s$ + "Auteur: Klaus"+nl$+nl$
  s$ = s$ + "Date: 1/2/2012"
  caption no%, s$
  return

' création des menus de l'application
MENU:
  gosub creer_objet_invisible
  temp1% = no%
  main_menu no%

' menu "fichiers"
  gosub creer_objet_invisible
  temp2% = no%
  sub_menu no% : parent no%,temp1%
  caption no%, "Fichers"
    gosub creer_objet_invisible
    sub_menu no% : parent no%,temp2%
    caption no%, "---------"
    gosub creer_objet_invisible
    sub_menu no% : parent no%,temp2%
    caption no%, "Fermer" : on_click no%, fermer

' intégration automatique du modificateur dans le menu
' menu "édition"
  if variable("EDI_flag%")=1
    gosub creer_objet_invisible
    temp2% = no%
    sub_menu no% : parent no%,temp1%
    caption no%, "Edition"
      gosub creer_objet_invisible
      sub_menu no% : parent no%,temp2%
      caption no%, "Déplacer" : on_click no%, edition
  end_if

' menu "aide"
  gosub creer_objet_invisible
  temp2% = no%
  sub_menu no% : parent no%,temp1%
  caption no%, "Aide"
    if variable("EDI_flag%")=1
      gosub creer_objet_invisible
      sub_menu no% : parent no%,temp2%
      caption no%, "Mode d'emploi" : on_click no%,doc
    end_if
    gosub creer_objet_invisible
    sub_menu no% : parent no%,temp2%
    caption no%, "A Propos" : on_click no%,apropos
  return

' montrer le mode d'emploi
doc:
  inactive 0
  show form_doc%
  return

' fermer le mode d'emploi
close_doc:
  hide form_doc%
  active 0
  to_foreground 0
  return

' montrer la fenêtre A-propos
apropos:
  inactive 0
  show form_apropos%
  return

' fermer la fenêtre A-propos
close_apropos:
  hide form_apropos%
  active 0
  to_foreground 0
  return
 

Voici le fichier MODIFICATEUR.bas qui doit résider dans le même répertoire que le programme (pour #INCLUDE):
Code:
  ' ===================== section "Moficicateur" ========
' inclure cette section si l'on veut utiliser le module
' éventuellement par #INCLUDE
if 1=0 : ' ne rien faire si on passe ici !
declarer_modificateur:
  label labels_edit : gosub labels_edit
  gosub variables_edit
  form 1 : hide 1 : top 1,30 : left 1,500
  on_close 1,close_edit : width 1,300 : height 1,600
  alpha 2 : parent 2,1 : top 2,10 : left 2,10
  font_size 2,12 : font_bold 2
  container 3 : parent 3,1 : top 3,70 : left 3,10
  caption 3,"Positionnement" : width 3,200
    button 4 : parent 4,3 : top 4,20 : left 4,30
      caption 4,"^" : width 4,20 : height 4,20
      on_click 4,vers_haut
    button 5 : parent 5,3 : top 5,40 : left 5,10
      caption 5,"<" : width 5,20 : height 5,20
      on_click 5,vers_gauche
    button 6 : parent 6,3 : top 6,40 : left 6,50
      caption 6,">" : width 6,20 : height 6,20
      on_click 6,vers_droite
    button 7 : parent 7,3 : top 7,60 : left 7,30
      caption 7,"v" : width 7,20 : height 7,20
      on_click 7,vers_bas
    alpha 8 : parent 8,3 : top 8,10 : left 8,100
      caption 8,"Valeur du pas:"
    edit 9 : parent 9,3 : top 9,30 : left 9,125
      text 9,"5" : width 9,30
  container 10 : parent 10,1 : top 10,180 : left 10,10
  caption 10,"Dimensions" : width 10,200 : height 10,120
    alpha 11 : parent 11,10 : top 11,20 : left 11,10
      caption 11,"Hauteur;"
    edit 12 : parent 12,10 : top 12,20 : left 12,100
      width 12,40
    alpha 13 : parent 13,10 : top 13,50 : left 13,10
      caption 13,"Largeur;"
    edit 14 : parent 14,10 : top 14,50 : left 14,100
      width 14,40
    button 15 : parent 15,10 : top 15,80 : left 15,100
      width 15,40 : caption 15,"Valider"
      on_click 15,changer_dimension
  return

labels_edit:
  label identifier, edition, close_edit, variables_edit
  label vers_haut, vers_gauche, vers_droite, vers_bas
  label charger_pas, changer_dimension
  return

variables_edit:
  dim n_objet%, no%, no_base%, objets%(500,1)
  dim no_id% , pas%
  dim nlx$, EDI_flag% , i_edit%
  n_objet% = 0
  no_base% = 100
  no% = no_base%
  nlx$ = chr$(13)+chr$(10)
  EDI_flag% = 0
  return

identifier:
  no_id% = 0
  for i_edit%=no_base%+1 to no%
    if objets%(i_edit%,1)=1
      if clicked(objets%(i_edit%,0))=1
        no_id% = i_edit%
        text 12,height(no_id%)
        text 14,width(no_id%)
        to_foreground 1
        caption 2,"Modifiez l'objet sélectionné"+nlx$+"avec les boutons"
        return
      end_if
    end_if
  next i_edit%
  return

edition:
  if EDI_flag%=1
    message "Vous êtes déjà en mode Edition !"
    return
  end_if
  show 1
  EDI_flag% = 1
  no_id% = 0
  caption 2,"Sélectionnez un objet..."
  text 12,0
  text 14,0
  return

close_edit:
  EDI_flag% = 0
  no_id% = 0
  hide 1
  return

vers_haut:
  if no_id%=0 then return
  gosub charger_pas
  top no_id%, top(no_id%) - pas%
  return

vers_gauche:
  if no_id%=0 then return
  gosub charger_pas
  left no_id%, left(no_id%) - pas%
  return

vers_droite:
  if no_id%=0 then return
  gosub charger_pas
  left no_id%, left(no_id%) + pas%
  return

vers_bas:
  if no_id%=0 then return
  gosub charger_pas
  top no_id%, top(no_id%) + pas%
  return

charger_pas:
  if numeric(text$(9))=0 then text 9,"5"
  pas% = val(text$(9))
  return

changer_dimension:
  if no_id%=0 then return
  if numeric(text$(12))=0 then text 12,height(no_id%)
  if numeric(text$(14))=0 then text 12,width(no_id%)
  height no_id%,val(text$(12))
  width no_id%,val(text$(14))
  return

end_if : ' fin d'exécution conditionnelle pour modificateur absent
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
exdragon

exdragon


Nombre de messages : 601
Date d'inscription : 05/01/2012

Rendre la disposition d'une FORM modifiable par utilisateur Empty
MessageSujet: Re: Rendre la disposition d'une FORM modifiable par utilisateur   Rendre la disposition d'une FORM modifiable par utilisateur EmptyVen 3 Fév 2012 - 4:11

T'est vraiment fort^^
Tu veux pas participer au concours ?

Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Rendre la disposition d'une FORM modifiable par utilisateur Empty
MessageSujet: Re: Rendre la disposition d'une FORM modifiable par utilisateur   Rendre la disposition d'une FORM modifiable par utilisateur EmptyVen 3 Fév 2012 - 7:33

Je prends aussi, çà peut m'être utile.

C'est bien fait et bien expliqué. Merci Klaus.
Revenir en haut Aller en bas
Invité
Invité




Rendre la disposition d'une FORM modifiable par utilisateur Empty
MessageSujet: Re: Rendre la disposition d'une FORM modifiable par utilisateur   Rendre la disposition d'une FORM modifiable par utilisateur EmptyVen 3 Fév 2012 - 16:36

Bonjour,
Je suis peut-être dans le cosmos, mais Klaus est un extraterrestre. Il va trop vite, je ne peux pas suivre.
(
Entre parenthèses, cosmos que j'ai choisi ici, est en réalité le surnom qu'on m'a donné; pour un événement français en rapport avec mon nom, pour lequel je suis étranger. Et comme je ne suis pas doué pour le choix d'un pseudo, je l'ai pris. Mais je signale que j'ai les pieds bien sûr terre! Very Happy. Je l'ai choisi, j'en subis les conséquences. Embarassed et je fais avec.
)
Je répond pour tous les postes de Klaus de cette nuit! Il y en a de trop, et ça fait : bom boum!
Revenir en haut Aller en bas
Contenu sponsorisé





Rendre la disposition d'une FORM modifiable par utilisateur Empty
MessageSujet: Re: Rendre la disposition d'une FORM modifiable par utilisateur   Rendre la disposition d'une FORM modifiable par utilisateur Empty

Revenir en haut Aller en bas
 
Rendre la disposition d'une FORM modifiable par utilisateur
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» FORM modifiable
» Au sujet des DIM
» Comment rendre transparent un alpha ?
» Mise à disposition de toutes les DLL's en FTP
» Sources mises à disposition sur mon WebDav

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: