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
» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Quelques SUBs, en vrac - Page 2 Emptypar Yannick Aujourd'hui à 18:32

» Philharmusique
Quelques SUBs, en vrac - Page 2 Emptypar jjn4 Aujourd'hui à 13:58

» PANORAMIC V 1
Quelques SUBs, en vrac - Page 2 Emptypar papydall Hier à 3:22

» select intégrés [résolu]
Quelques SUBs, en vrac - Page 2 Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Quelques SUBs, en vrac - Page 2 Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Quelques SUBs, en vrac - Page 2 Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Quelques SUBs, en vrac - Page 2 Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Quelques SUBs, en vrac - Page 2 Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0
Quelques SUBs, en vrac - Page 2 Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Quelques SUBs, en vrac - Page 2 Emptypar Klaus Lun 6 Mai 2024 - 11:41

» Gestion d'un système client-serveur.
Quelques SUBs, en vrac - Page 2 Emptypar Klaus Lun 6 Mai 2024 - 10:23

» @Jack
Quelques SUBs, en vrac - Page 2 Emptypar Jack Mar 30 Avr 2024 - 20:40

» Une calculatrice en une ligne de programme
Quelques SUBs, en vrac - Page 2 Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Quelques SUBs, en vrac - Page 2 Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Quelques SUBs, en vrac - Page 2 Emptypar jjn4 Ven 26 Avr 2024 - 17:39

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 du moment :
Réassort du coffret Pokémon 151 ...
Voir le deal

 

 Quelques SUBs, en vrac

Aller en bas 
+5
Klaus
Yannick
Jicehel
papydall
JL35
9 participants
Aller à la page : Précédent  1, 2, 3  Suivant
AuteurMessage
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Quelques SUBs, en vrac - Page 2 Empty
MessageSujet: Re: Quelques SUBs, en vrac   Quelques SUBs, en vrac - Page 2 EmptySam 19 Jan 2013 - 20:41

Je m'étais fais la même réflexion, pas pratique de manipuler les types numériques d'objets.
Ta solution est mieux, mais encore un peu... lourde, à mon avis, avec la série de IF upper$(...

Encore une fois, je regrette le bon vieux basic avec le Select Case qui fonctionnait aussi bien avec des variables alphanumériques que des variables numériques, du genre
SELECT UPPER$(Type$)
CASE "FORM": ...
CASE "ALPHA"
c'est (c'était) quand même plus simple à lire (et à coder).
Revenir en haut Aller en bas
Klaus

Klaus


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

Quelques SUBs, en vrac - Page 2 Empty
MessageSujet: Re: Quelques SUBs, en vrac   Quelques SUBs, en vrac - Page 2 EmptySam 19 Jan 2013 - 20:52

Alors, moi aussi, j'ai envie de contribuer aux procédures réutilisables. Donc, extraits de KGF_SUB.bas, 3 procédures qui sont utilisables SANS KGF.dll:

1. Alignement d'un texte dans un objet (edit, memo, ...). Il faut donner le numéro de l'objet:
Code:
' === alignement d'un texte
Sub Align(No%,T$,Alignement$,WC%)
  Dim_Local sp%,x%,t%        : ' Définition des variables locales
  If Variable("Align$")=0 then Dim Align$ : ' On doit définir une variable globale pour retourner la chaine calculée
  sp% = text_width(" ",No%)  : ' La variable sp% correspond à la taille d'un espace
  t% = text_width(T$,No%)    : ' La variable t% correspond à la taille du texte
  ' Teste si l'on a demandé un affichage centré
  If Alignement$="C"
    ' *** bug dans Panoramic ***  x% = int((w%-sp%-t%)/sp%/2)
    x% = int((WC%-sp%-t%)/sp%*2)  : ' Calcul du nombre d'espaces à ajouter devant la chaine
  Else
    ' Teste si l'on a demandé un affichage à droite
    If Alignement$="D" Then x% = int((WC%-sp%-t%)/sp%) - 1  : ' Calcul du nombre d'espaces à ajouter devant la chaine
  End_If
  if x% > 0 then T$ = string$(x%," ")+T$ : ' On ajoute les espaces devant la chaine (0 si alignement à gauche)
  Align$ = T$  : ' On place la chaine modifiée dans la chaine de retour
End_Sub

2. Alignement d'un texte avec plus d'options, et il n'y a plus besoin de numéro d'objet:
Code:
' === alignement d'un texte avec police, taille, gras
Sub AlignEX(T$,Alignement$,WC%,police$,taille%,gras%)
  Dim_Local sp%,x%,x1%,t%,i%, TT$        : ' Définition des variables locales
  If Variable("AlignEX$")=0 then Dim AlignEX$ : ' On doit définir une variable globale pour retourner la chaine calculée
  ' chercher le premier numéro d'objet libre
  i% = 1
  while object_exists(i%)=1
    i% = i% + 1
  end_while
  ' créer un ALPHA avec les bons attributs
  alpha i% : font_name i%,police$ : font_size i%,taille%
  if gras%=1 then font_bold i%
  sp% = text_width(" ",i%)  : ' La variable sp% correspond à la taille d'un espace
  t% = text_width(T$,i%)    : ' La variable t% correspond à la taille du texte
  ' Teste si l'on a demandé un affichage centré
  If Alignement$="C"
    ' *** bug dans Panoramic ***  x% = int((w%-sp%-t%)/sp%/2)
    x% = int((WC%-sp%-t%)/sp%*2)  : ' Calcul du nombre d'espaces à ajouter devant la chaine
    x1% = x%
  Else
    ' Teste si l'on a demandé un affichage à droite
    If Alignement$="D"
      x% = int((WC%-sp%-t%)/sp%) - 1  : ' Calcul du nombre d'espaces à ajouter devant la chaine
      x1% = 0
    else
      x1% = int((WC%-sp%-t%)/sp%) - 1  : ' Calcul du nombre d'espaces à ajouter devant la chaine
      x% = 0
    end_if
 End_If
  TT$ = T$
  if x% > 0 then TT$ = string$(x%," ")+TT$ : ' On ajoute les espaces devant la chaine (0 si alignement à gauche)
  if x1% > 0 then TT$ = TT$+string$(x1%," ") : ' On ajoute les espaces derrière la chaine (0 si alignement à gauche)
  AlignEX$ = TT$  : ' On place la chaine modifiée dans la chaine de retour
  delete i% : ' supprimer le ALPHA interne
End_Sub

3. remplacement de toutes tes occurrences d'un caractère par un autre dans une chaîne:
Code:
' === remplacer toutes les occurrences d'un caractère par un autre
sub RemplacerCaracteres(t$,c1$,c2$)
  if variable("RemplacerCaracteres$")=0 then dim RemplacerCaracteres$
  dim_local p%,s$
  s$ = t$
  p% = instr(s$,c1$)
  while p%>0
    if p%=1
      s$ = c2$+mid$(s$,p%+1,len(s$))
    else
      s$ = left$(s$,p%-1)+c2$+mid$(s$,p%+1,len(s$))
    end_if
    p% = instr(s$,c1$)
  end_while
  RemplacerCaracteres$ = s$
end_sub

EDIT

l'utilisation de ces procédures est montrée dans demo_KGF_SUB.bas.


Dernière édition par Klaus le Sam 19 Jan 2013 - 21:09, édité 1 fois
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

Quelques SUBs, en vrac - Page 2 Empty
MessageSujet: Re: Quelques SUBs, en vrac   Quelques SUBs, en vrac - Page 2 EmptySam 19 Jan 2013 - 20:58

@L35:
Tu crées une chaine du type "alpha......edit......memo.....list.... " etc. L'important, c'est de donner un nombre de caractères identiques à chaque mot-cle, en complétant par n'importe quoi (ici, des points). Puis tu fais
Code:

type% = (instr(chaine_type$,type$)+n%-1)/n%
select i%
  case 1: ' alpha
  case 2: ' edit
  case 3: ' memo
  case 4: ' list
...
end_select
chaine_type$ est cette chaîne de référence, type$ est un mot_clé recherché, et n% est la longueur retenue pour tous les mots-clé.

Note: j'ai mis les mots-clé dans n'importe quel ordre, sans lien avec le type d'objet. Techniquement, ce n'est pas nécessaire pour piloter le SELECT. Ce serait juste pour l'élégance...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Quelques SUBs, en vrac - Page 2 Empty
MessageSujet: Re: Quelques SUBs, en vrac   Quelques SUBs, en vrac - Page 2 EmptySam 19 Jan 2013 - 21:25

Intéressant (j'étais en train de chercher une solution ...), je note.
et tes Subs, intéressantes aussi.

Suite à la tienne qui remplace un caractère par un autre, j'en ai une qui remplace toutes les occurences d'un mot par un autre dans une chaîne:
Code:
SUB Replace(a$,b$,c$)
' Remplace dans a$ les occurences de b$ par c$ (tailles différentes éventuelles)
' chaîne résultante dans rs_ch$
DIM_LOCAL rm_k%, rm_u%, ff_a$
IF VARIABLE("rs_ch$") = 0 THEN DIM rs_ch$
rs_ch$ = a$: rm_k% = INSTR(rs_ch$, b$)
WHILE rm_k% > 0
    rs_ch$ = LEFT$(rs_ch$, rm_k%-1) + c$ + MID$(rs_ch$, rm_k%+LEN(b$), 500): ' nouvelle chaîne
    rm_u% = rm_k%+LEN(c$): ff_a$ = MID$(rs_ch$, rm_u%, 500)
    rm_k% = INSTR(ff_a$, b$)
    IF rm_k% = 0 THEN EXIT_WHILE
    rm_k% = rm_k%+rm_u%-1
END_WHILE
END_SUB
on pourrait aussi prévoir d'autres paramètres des objets, comme le Caption, la couleur, mais tout ça entraîne bien loin.

Pour la définition des objets, la création d'une chaîne contenant tous les noms d'objets avec la même longueur oblige à s'aligner sur le nom d'objet le plus long, et on ne sait pas s'il n'y en aura pas un plus long plus tard...
On pourrait faire comme ceci (ça ressemble à la solution papydall, mais j'ai mis le numéro d'objet à attribuer dans les paramètres d'appel, perso je préfère):
Code:
Objets("Button",7,1,50,20,200,150,0): CAPTION 7,"Bouton": ' <- exemple d'appel de la Sub
END

SUB Objets(obj$,No%,V%,T%,L%,W%,H%,P%)
DIM_LOCAL indx%
IF VARIABLE("T_obj$") = 0
  DIM T_obj$
  T_obj$="01SCENE3D;02BUTTON;03EDIT;04MEMO;05COMBO;06ALPHA;07FORM;08LIST;09PICTURE;"
  T_obj$=T_obj$+"10CHECK;11OPTION;12MAIN_MENU;13SUB_MENU;14SOUND;15MOVIE;16TRACK_BAR;"
  T_obj$=T_obj$+"17OPEN_DIALOG;18SAVE_DIALOG;19SCROLL_BAR;20PROGRESS_BAR;21SPIN;"
  T_obj$=T_obj$+"22GRID;23CONTAINER;24;25;26DLIST;27SCENE2D;28TIMER;29;30;31;"
  T_obj$=T_obj$+"32CONTAINER_OPTION;33;34;35;36;37;38;39;40;41IMAGE;"
END_IF
indx% = INSTR(T_obj$,UPPER$(obj$)+";"): indx% = VAL(MID$(T_obj$,indx%-2,2))
SELECT indx%
    CASE 1: SCENE3D No%
    CASE 2: BUTTON No%
    CASE 3: EDIT No%
    ' ....
    ' ....
END_SELECT
TOP No%,T%: LEFT No%,L%
IF W% > 0 THEN WIDTH No%,W%
IF H% > 0 THEN HEIGHT No%,H%
IF P% > 0 THEN PARENT No%,P%
IF V% = 0 THEN HIDE No%
END_SUB
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7008
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Quelques SUBs, en vrac - Page 2 Empty
MessageSujet: Re: Quelques SUBs, en vrac   Quelques SUBs, en vrac - Page 2 EmptySam 19 Jan 2013 - 23:32

Hello World !
Merci Klaus et JL35 pour vos réactions.
Je vais voir vos codes.
Les belles idées sortent de plusieurs têtes qui réfléchissent ensemble sur un point commun.
JL35, je trouve que ta méthode est bonne.

A l’instar de KGF.dll de Klaus, on peut réaliser ensemble (chacun apportera sa contribution) PANO_SUB qui comportera différentes procédures.
Et au lieu de réinventer la roue à chaque fois, il suffira pour un programmeur d’intégrer dans son programme PANO_SUB par #INCLUDE PANO_SUB ou de copier/coller la ou les SUBs qui l’intéressent.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Yannick




Nombre de messages : 8611
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Quelques SUBs, en vrac - Page 2 Empty
MessageSujet: re   Quelques SUBs, en vrac - Page 2 EmptySam 19 Jan 2013 - 23:52

@ JL35,

Je me suis posé la question sur select et les alphanumerique et j'en suis au même regrets... Sad

@ tous,

Je ne suis pas sur qu'une seule Sub pour tout les objets soit très opportune... scratch
Si on veut une Sub pour tous on est obligé de retreindre les paramètres à leur paramètres communs

Numéro, visibilité , top,left,height, width,parent

@ papydall,

parent 0 est correct puisque 0 renvoi sur le form 0

Edit

tout comme l'initialisation à 0 des objets puisque si je n' appelle pas la sub pour le form 0 il est créé par defaut et à ce moment les attributs s'applique sur le form 0

ce sont les autres objets qui ne sont pas développés... Laughing


Re Edit

dans mon idéal, l'appelle à la sub serait :

Objet ( "objet", Visibilité%,Dim.H%,Dim.L%,Top%,Left%,Parent%)

j'ai essayé de passé la font en paramètre mais j'ai eu droit à une "erreur exception" au premier appel scratch
peut être un minibug de l'éditeur...

RE Re Edit

@ JL35,

Je viens de regarder ton code pour les objets, l'idée me plait même si perso je me garderai la possibilité
de centrer les form avec les paramètre T% et L% à 0

" J'aime bien quand les form sont centrés sur l'écran..." Laughing


Dernière édition par ygeronimi le Dim 20 Jan 2013 - 0:15, édité 4 fois
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7008
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Quelques SUBs, en vrac - Page 2 Empty
MessageSujet: Re: Quelques SUBs, en vrac   Quelques SUBs, en vrac - Page 2 EmptyDim 20 Jan 2013 - 0:14

Ygeronimi, bien sûr parent 0 renvoie sur FORM 0 mais si tu appelles ta SUB comme ceci , pour créer un ALPHA par exemple (avec no% initialisée à 0):

Code:
objet(2,1,100,100,10,10,0)
tu obtiens le message d’erreur OBJECT number out of range
puisque tu tentes de créer ALPHA 0.
C’est pourquoi je dis que no% doit être initialisée à 1.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Yannick




Nombre de messages : 8611
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Quelques SUBs, en vrac - Page 2 Empty
MessageSujet: re   Quelques SUBs, en vrac - Page 2 EmptyDim 20 Jan 2013 - 0:18

@ papydall,

si tu initialise NO% à 1 ta sub ne marche pas pour ton form 0

c'est pour cela que je l'initialise à 0 et qu'il faut dans les autres "case" spécifier la condition

if NO%=0 then NO%=NO%+1


Edit :

Ce n'était qu'une ébauche....
...et donc pas complète

Edit

on peut, pour éviter les répétitions, mettre

if Type%>1 and NO%=0 then NO%=NO%+1 avant le "select"


RE Edit

@ JL35,

Par simplicité, il est important à mes yeux que "form" soit en première ou en dernière position de la chaîne...


Dernière édition par ygeronimi le Dim 20 Jan 2013 - 0:28, édité 2 fois
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7008
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Quelques SUBs, en vrac - Page 2 Empty
MessageSujet: Re: Quelques SUBs, en vrac   Quelques SUBs, en vrac - Page 2 EmptyDim 20 Jan 2013 - 0:27

Dans ce cas ça sera beaucoup de lignes de test
Code:
 if NO%=0 then NO%=NO%+1
Si on initialise no% à 1 et on traite FORM 0 en dehors de la SUB, ne serait-il pas mieux ?

EDIT : J'ai posté avant de voir ton EDIT !


Dernière édition par papydall le Dim 20 Jan 2013 - 0:31, édité 1 fois
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Yannick




Nombre de messages : 8611
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Quelques SUBs, en vrac - Page 2 Empty
MessageSujet: re   Quelques SUBs, en vrac - Page 2 EmptyDim 20 Jan 2013 - 0:30

j'ai fait un edit, on s'est croisé

on peut écrire

if Type%>1 and NO%=0 then NO%=NO%+1

avant le select


Edit : là où tout se complique c'est quand on veut créer plusieurs objets identiques avec une boucle
et des parmètres différents.... scratch
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7008
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Quelques SUBs, en vrac - Page 2 Empty
MessageSujet: Re: Quelques SUBs, en vrac   Quelques SUBs, en vrac - Page 2 EmptyDim 20 Jan 2013 - 0:36


Je suis content que tu as retrouvé le plaisir de te faire torturer les neuronnes ! Quelques SUBs, en vrac - Page 2 3d-moqueur-rire-3
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Yannick




Nombre de messages : 8611
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Quelques SUBs, en vrac - Page 2 Empty
MessageSujet: re   Quelques SUBs, en vrac - Page 2 EmptyDim 20 Jan 2013 - 0:42

J'ai chopé un rhume d'enfer et je carbure à l'actifed et au Doliprane
Je ne sens plus mes neuronnes...

lol!
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8611
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Quelques SUBs, en vrac - Page 2 Empty
MessageSujet: re   Quelques SUBs, en vrac - Page 2 EmptyDim 20 Jan 2013 - 0:46

J' en reviens à la déclaration de plusieurs objets identiques par un boucle

on va devoir créer les objets
retrouver le numéro de l'objet de départ
refaire une boucle avec une indentation des attributs

( cas de plusieurs edit l'un sous l'autre où à côté de l'autre par exemple )

Pour les captions, il va falloir faire une boucle qui passe en revue tout les objets
et applique le caption à l'objet d'après une lecture de data.... affraid

(cas de plusieurs alpha par exemple )

Edit :

je ne suis pas sûr mais je pense que cela devrait ressembler à çà :
Code:
for x%=0 to Number_objects
        if object_type(x%)=6
        y%=y%+1
        restore
        for z%=1 to (Nombre de data)
          read a$
          if right$(a$,len(a$)-1)="Alpha" then exit_for
        next z%
        for w%=1 to y%
          read a$
        next w%
        caption x%,a$
        end_if
    next x%
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7008
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Quelques SUBs, en vrac - Page 2 Empty
MessageSujet: Re: Quelques SUBs, en vrac   Quelques SUBs, en vrac - Page 2 EmptyDim 20 Jan 2013 - 1:38

Regarde ceci:
Code:
label quit
dim n_container% ,i%, j%

' Exemple d'appel de SUB Creat_Objet(....)
Creat_Objet("container",1,400,500,10,50,0)
  n_container% = no%
' Appel de SUB Creat_Objet dans 2 boucles imbriquées avec paramètres calculés
 for i% = 1  to 5
    for j% = 1 to 5
        creat_objet("alpha",1,100,100,10+i%*50,10+(j%-1)*100,n_container%)
        caption no%,"ALPHA " + str$((i%-1)*5+j%)
    next j%
 next i%
 
Creat_Objet("button",1,0,100,300,180,n_container%)
  caption no%,"QUIT" : on_click no%,quit
  inactive no% : message "CONTINUER" : active no%
  for i% = 1 to 25
    font_bold i% : font_color i%,rnd(255),rnd(255),rnd(255)
  next i%
end
' ******************************************************************************
quit:
terminate
return : ' cette commande n'est pas nécessaire, mais elle est là pour les règles de l'art !

' *****************************************************************************
' Type$ indique le type de l'objet : FORM, ALPHA, EDIT etc...
' V% = 0 ---> l'objet sera invisible (HIDE); V% = 1 ---> l'objet sera visible (SHOW)
' H% ---> HEIGHT ; W% ---> WIDTH; T% ---> TOP; L% ---> LEFT
' P% ---> PARENT <--- La valeur 0 pour indiquer que l'objet n'a pas de parent (orphelin !!!)
SUB Creat_Objet(Type$,V%,H%,W%,T%,L%,P%)
      If Variable("NO%") = 0 : Dim NO% : NO% = 1 : Else : NO% = NO% + 1 : End_If

      if upper$(Type$) = "FORM"  then Form NO%
      if upper$(type$) = "ALPHA" then Alpha NO%
      IF UPPER$(Type$) = "EDIT"  then Edit NO%
      IF UPPER$(Type$) = "COMBO" then Combo NO%
      IF UPPER$(Type$) = "LIST"  then List NO%
      IF UPPER$(Type$) = "DLIST" then Dlist NO%
      IF UPPER$(Type$) = "MEMO"  then Memo NO%
      IF UPPER$(Type$) = "CONTAINER" then Container NO%
      IF UPPER$(Type$) = "CONTAINER_OPTION" then Container_Option NO%
      IF UPPER$(Type$) = "OPTION" then Option NO%
      IF UPPER$(Type$) = "CHECK"  then Check NO%
      IF UPPER$(Type$) = "BUTTON" then Button NO%
      IF UPPER$(Type$) = "GRID"  then Grid NO%
      IF UPPER$(Type$) = "PICTURE" then Picture NO%
      IF UPPER$(Type$) = "SOUND"  then Sound NO%
      IF UPPER$(Type$) = "MOVIE"  then Movie NO%
      IF UPPER$(Type$) = "IMAGE"  then Image NO%

  ' Visibilité
      If V% < 1 Then hide NO%
  ' Dimensions
      If H% > 0 Then Height NO%,H%
      If W% > 0 Then Width NO%,W%
  ' Placement
      If NO% = 1
        If T% > 0 : Top NO%,T% : Else : Top NO%,(Screen_y-H%)/2 : End_If
        If L% > 0 : Left NO%,L%: Else : Left NO%,(Screen_x-W%)/2: End_If
      Else
        If T% > 0 then Top NO%,T%
        If L% > 0 then Left NO%,L%
    End_If
  ' filiation
    If P% > 0 then Parent NO%,P%
END_SUB
' ******************************************************************************
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Yannick




Nombre de messages : 8611
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Quelques SUBs, en vrac - Page 2 Empty
MessageSujet: re   Quelques SUBs, en vrac - Page 2 EmptyDim 20 Jan 2013 - 2:08

cheers Effectivement on peut faire de cette façon, c'est trop compliqué...

Je vais essayé de rajouter mon bout de code au tien... Laughing
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8611
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Quelques SUBs, en vrac - Page 2 Empty
MessageSujet: re   Quelques SUBs, en vrac - Page 2 EmptyDim 20 Jan 2013 - 2:42

j'ai ajouté çà :
Code:
Sub Nom_alpha()
dim_local x%,z%,a$
' placement du point de lecture des datas à 0
restore
' recherche du début de la liste des captions pour les alphas
for z%=1 to 26
  read a$
  if right$(a$,len(a$)-1)="Alpha" then exit_for
next z%
' attribution des captions pour les alphas
for x%=0 to Number_objects
  if object_type(x%)=6
      read a$
      caption x%,a$
  end_if
next x%
end_sub

data "#Alpha" :data "georges"
data "pierre" :data "stephane"
data "paul"  :data "cosmos"
data "jacques":data "jl35"
data "léon"  :data "maelilou"
data "nestor" :data "jjn4"
data "jean"  :data "jc"
data "isidore":data "nardo"
data "luc"    :data "flower"
data "papydall":data "claude"
data "klaus"  :data "marie"
data "nicolas" :data "jpcr"
data "robert"  :data "jdebord"

avec le simple appel : Nom_alpha()
après la création
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7008
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Quelques SUBs, en vrac - Page 2 Empty
MessageSujet: Re: Quelques SUBs, en vrac   Quelques SUBs, en vrac - Page 2 EmptyDim 20 Jan 2013 - 13:15

Pourquoi pas puisque ça marche !Quelques SUBs, en vrac - Page 2 Yahoo-supercontent
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Yannick




Nombre de messages : 8611
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Quelques SUBs, en vrac - Page 2 Empty
MessageSujet: re   Quelques SUBs, en vrac - Page 2 EmptyDim 20 Jan 2013 - 14:58

le plus triste de cette sub ,
c'est que je ne me souviens pas de 25 panoramiciens régulier sur le forum Rolling Eyes
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Quelques SUBs, en vrac - Page 2 Empty
MessageSujet: Re: Quelques SUBs, en vrac   Quelques SUBs, en vrac - Page 2 EmptyDim 20 Jan 2013 - 15:05

J'efface, j'avais pas vu la liste... mais c'est un peu nébuleux (pour moi), c'est vrai qu'avec la neige qui tombe sans arrêt... papydall, ça va ? fait pas trop froid en Tunisie ?
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8611
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Quelques SUBs, en vrac - Page 2 Empty
MessageSujet: re   Quelques SUBs, en vrac - Page 2 EmptyDim 20 Jan 2013 - 16:34

Avec les idées des uns et des autres additionnées aux miennes,
j'en suis arrivé à ce résultat :
Code:
Objets("Button",1,50,20,200,150,0,"button")
Objets("Alpha",1,10,10,0,0,0,"alpha")
END

SUB Objets(obj$,V%,T%,L%,W%,H%,P%,C$)
DIM_LOCAL indx%
' Numérotation
If VARIABLE("No%")=0:Dim No% :No%=0:Else:No%=No%+1:End_If
' Création de l'objet
IF VARIABLE("T_obj$") = 0
  DIM T_obj$
  T_obj$="01SCENE3D;02BUTTON;03EDIT;04MEMO;05COMBO;06ALPHA;07FORM;08LIST;09PICTURE;"
  T_obj$=T_obj$+"10CHECK;11OPTION;12MAIN_MENU;13SUB_MENU;14SOUND;15MOVIE;16TRACK_BAR;"
  T_obj$=T_obj$+"17OPEN_DIALOG;18SAVE_DIALOG;19SCROLL_BAR;20PROGRESS_BAR;21SPIN;"
  T_obj$=T_obj$+"22GRID;23CONTAINER;24;25;26DLIST;27SCENE2D;28TIMER;29;30;31;"
  T_obj$=T_obj$+"32CONTAINER_OPTION;33;34;35;36;37;38;39;40;41IMAGE;"
END_IF
indx% = INSTR(T_obj$,UPPER$(obj$)+";"): indx% = VAL(MID$(T_obj$,indx%-2,2))
if indx%<>7 and NO%=0 then NO%=NO%+1
SELECT indx%
    CASE 1: SCENE3D No%
    CASE 2: BUTTON No% :Caption No%,C$
    CASE 3: EDIT No%
    CASE 4: MEMO No%
    CASE 5: COMBO No%
    CASE 6: ALPHA No% :Caption No%,C$
    CASE 7: IF No%>0 THEN FORM No% :Caption No%,C$
    CASE 8: LIST No%
    CASE 9: PICTURE No%
    CASE 10: CHECK No% :Caption No%,C$
    CASE 11: OPTION No% :Caption No%,C$
    CASE 12: MAIN_MENU No%
    CASE 13: SUB_MENU No% :Caption No%,C$
    CASE 14: SOUND No%
    CASE 15: MOVIE No%
    CASE 16: TRACK_BAR No%
    CASE 17: OPEN_DIALOG No%
    CASE 18: SAVE_DIALOG No%
    CASE 19: SCROLL_BAR No%
    CASE 20: PROGRESS_BAR No%
    CASE 21: SPIN No%
    CASE 22: GRID No%
    CASE 23: CONTAINER No% :Caption No%,C$
    CASE 26: DLIST No%
    CASE 27: SCENE2D No%
    CASE 28: TIMER No%
    CASE 32: CONTAINER_OPTION No% :Caption No%,C$
    CASE 41: IMAGE No%
END_SELECT
' Visibilité
If V% = 0 Then hide NO%
' Dimensions
If H% > 0 Then Height NO%,H%
If W% > 0 Then Width NO%,W%
' Placement
If indx% = 7
  If T% > 0 : Top NO%,T% : Else : Top NO%,(Screen_y-H%)/2 : End_If
  If L% > 0 : Left NO%,L%: Else : Left NO%,(Screen_x-W%)/2: End_If
Else
  If T% > 0 then Top NO%,T%
  If L% > 0 then Left NO%,L%
End_If
' filiation
If P% > 0 then Parent NO%,P%
END_SUB

J'ai ajouté la possibilité d'un caption défini dès l'appel mais que l'on peut laisser "vide" par ""
J'ai dans l'idée qu'il serait bien que chaque objet puisse afficher son numéro par défaut dès son affichage.
L'affichage pouvant être initialisé par la suite, cela faciliterai le job pour retrouver le numéro de chacun des
objets par prévisualisation de l'interface.

Qu'en pensez vous ?


Dernière édition par ygeronimi le Dim 20 Jan 2013 - 16:54, édité 1 fois (Raison : correction)
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

Quelques SUBs, en vrac - Page 2 Empty
MessageSujet: Re: Quelques SUBs, en vrac   Quelques SUBs, en vrac - Page 2 EmptyDim 20 Jan 2013 - 17:01

Salut Ygeronimi,

Citation :
J'ai dans l'idée qu'il serait bien que chaque objet puisse afficher son numéro par défaut dès son affichage.
L'affichage pouvant être initialisé par la suite, cela faciliterai le job pour retrouver le numéro de chacun des
objets par prévisualisation de l'interface.

Oui, ou alors tu transformes le N° dobjet en une variable% explicite comme ci-dessous

Code:

Dim No%:no%=10
dim Grid_machin%:Cre_Objets("grid",1,50,20,400,150,0,"CONTAINER_OPTION"):Grid_machin%=no%

caption 0,Grid_machin%
END

SUB Cre_Objets(obj$,V%,T%,L%,W%,H%,P%,C$)
DIM_LOCAL indx%
' Numérotation
No%=No%+1
' Création de l'objet
IF VARIABLE("T_obj$") = 0
  DIM T_obj$
  T_obj$="01SCENE3D;02BUTTON;03EDIT;04MEMO;05COMBO;06ALPHA;07FORM;08LIST;09PICTURE;"
  T_obj$=T_obj$+"10CHECK;11OPTION;12MAIN_MENU;13SUB_MENU;14SOUND;15MOVIE;16TRACK_BAR;"
  T_obj$=T_obj$+"17OPEN_DIALOG;18SAVE_DIALOG;19SCROLL_BAR;20PROGRESS_BAR;21SPIN;"
  T_obj$=T_obj$+"22GRID;23CONTAINER;24;25;26DLIST;27SCENE2D;28TIMER;29;30;31;"
  T_obj$=T_obj$+"32CONTAINER_OPTION;33;34;35;36;37;38;39;40;41IMAGE;"
END_IF
indx% = INSTR(T_obj$,UPPER$(obj$)+";"): indx% = VAL(MID$(T_obj$,indx%-2,2))
if indx%<>7 and NO%=0 then NO%=NO%+1
SELECT indx%
    CASE 1: SCENE3D No%
    CASE 2: BUTTON No% :Caption No%,C$
    CASE 3: EDIT No%
    CASE 4: MEMO No%
    CASE 5: COMBO No%
    CASE 6: ALPHA No% :Caption No%,C$
    CASE 7: IF No%>0 THEN FORM No% :Caption No%,C$
    CASE 8: LIST No%
    CASE 9: PICTURE No%
    CASE 10: CHECK No%
    CASE 11: OPTION No% :Caption No%,C$
    CASE 12: MAIN_MENU No%
    CASE 13: SUB_MENU No% :Caption No%,C$
    CASE 14: SOUND No%
    CASE 15: MOVIE No%
    CASE 16: TRACK_BAR No%
    CASE 17: OPEN_DIALOG No%
    CASE 18: SAVE_DIALOG No%
    CASE 19: SCROLL_BAR No%
    CASE 20: PROGRESS_BAR No%
    CASE 21: SPIN No%
    CASE 22: GRID No%
    CASE 23: CONTAINER No% :Caption No%,C$
    CASE 26: DLIST No%
    CASE 27: SCENE2D No%
    CASE 28: TIMER No%
    CASE 32: CONTAINER_OPTION No% :Caption No%,C$
    CASE 41: IMAGE No%
END_SELECT
' Visibilité
If V% = 0 Then hide NO%
' Dimensions
If H% > 0 Then Height NO%,H%
If W% > 0 Then Width NO%,W%
' Placement
If NO% = 1
  If T% > 0 : Top NO%,T% : Else : Top NO%,(Screen_y-H%)/2 : End_If
  If L% > 0 : Left NO%,L%: Else : Left NO%,(Screen_x-W%)/2: End_If
Else
  If T% > 0 then Top NO%,T%
  If L% > 0 then Left NO%,L%
End_If
' filiation
If P% > 0 then Parent NO%,P%
END_SUB

En tout cas je prends car çà simplifie la création d'objet.

A+
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8611
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Quelques SUBs, en vrac - Page 2 Empty
MessageSujet: re   Quelques SUBs, en vrac - Page 2 EmptyDim 20 Jan 2013 - 17:37

@ Jean Claude,

Cela va bien si tu définis les attributs au fur et à mesure que tu crées les objets
mais une fois qu'ils le sont tous et que tu veux changer un attribut ou te servir d' un objet
pour récupérer ou afficher une valeur.... scratch

"heu...c'est quoi le numéro de celui là déjà....450 ou 700 scratch "


Edit : j'ai fait une correction, tu as pris le code d' avant celle ci
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Quelques SUBs, en vrac - Page 2 Empty
MessageSujet: Re: Quelques SUBs, en vrac   Quelques SUBs, en vrac - Page 2 EmptyDim 20 Jan 2013 - 18:25

Pas mal la dernière mouture ygeronimi.
Mais comme je disais, il me semble que pour moi je sortirais de la sub la définition du numéro de l'objet. Comme tu disais, si on veut intervenir après coup dans le code, ou bien utiliser les objets en cours de codage, il faut bien connaître le numéro des objets concernés: IF CHECKED(n1), TEXT$(n2) ...
Il faut récupérer No% en sortie de sub, ce qui revient au même.
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

Quelques SUBs, en vrac - Page 2 Empty
MessageSujet: Re: Quelques SUBs, en vrac   Quelques SUBs, en vrac - Page 2 EmptyDim 20 Jan 2013 - 20:46

Je ne vois pas le problème avec les N° d'objet sous forme Variable%

Moi, je ne code que comme cela. Supposons que nous ayons besoin d'un EDIT pour saisir un nom dans un carnet d'adresse. Je "l'appelle" (en réalité je le numérote) sous la forme Edit_Nom%, ainsi je mémorise l'objet et sa fonction sans avoir besoin de connaitre son véritable numéro. Dans le cas ou cet EDIT doit être utilisé plusieurs fois je le "nomme" Edit_01%.

La solution de JL35 de sortir le numéro (NO%) oui, mais çà change pas le problème il faut mémoriser que tel numéro correspond à l'edit situé en haut à gauche.....

A+
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Quelques SUBs, en vrac - Page 2 Empty
MessageSujet: Re: Quelques SUBs, en vrac   Quelques SUBs, en vrac - Page 2 EmptyDim 20 Jan 2013 - 21:05

Tu as raison Jean Claude, c'est bien plus parlant avec un nom de variable, mais ça risque d'en faire beaucoup.
C'est vrai qu'on n'est pas obligé de leur donner un nom à tous, seulement les plus utilisés.
Revenir en haut Aller en bas
Contenu sponsorisé





Quelques SUBs, en vrac - Page 2 Empty
MessageSujet: Re: Quelques SUBs, en vrac   Quelques SUBs, en vrac - Page 2 Empty

Revenir en haut Aller en bas
 
Quelques SUBs, en vrac
Revenir en haut 
Page 2 sur 3Aller à la page : Précédent  1, 2, 3  Suivant
 Sujets similaires
-
» Quelques Subs
» Un petit calendrier avec quelques Subs
» Mise à jour des Subs
» Ajout de ON_MOUSE_OVER et autres idées en vrac
» Des SUBs en VBS

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: