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
» Je teste PANORAMIC V 1 beta 1
Grille d'Edit Emptypar papydall Aujourd'hui à 2:48

» bouton dans autre form que 0
Grille d'Edit Emptypar leclode Hier à 13:59

» KGF_dll - nouvelles versions
Grille d'Edit Emptypar Klaus Hier à 11:41

» Gestion d'un système client-serveur.
Grille d'Edit Emptypar Klaus Hier à 10:23

» PANORAMIC V 1
Grille d'Edit Emptypar papydall Sam 4 Mai 2024 - 3:43

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Grille d'Edit Emptypar Froggy One Jeu 2 Mai 2024 - 11:16

» @Jack
Grille d'Edit Emptypar Jack Mar 30 Avr 2024 - 20:40

» trop de fichiers en cours
Grille d'Edit Emptypar papydall Lun 29 Avr 2024 - 23:39

» Une calculatrice en une ligne de programme
Grille d'Edit Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Grille d'Edit Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Grille d'Edit Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
Grille d'Edit Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Grille d'Edit Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Dessine-moi une galaxie
Grille d'Edit Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Grille d'Edit Emptypar jjn4 Lun 22 Avr 2024 - 13:43

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

 

 Grille d'Edit

Aller en bas 
AuteurMessage
JL35




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

Grille d'Edit Empty
MessageSujet: Grille d'Edit   Grille d'Edit EmptySam 28 Mar 2020 - 20:20

Je ne sais pas si ça a déjà été fait ici, mais si on a besoin d'une grille avec des caractéristiques individuelles pour les cellules (polices différentes avec enrichissements divers, couleur de fond, etc.), on peut utiliser des EDIT, chaque cellule étant indépendante des autres.
Une ébauche de solution:
Code:
' Création d'une pseudo grille avec des EDIT
DIM x%,y%,nc%,nr%,wc%,hr%,p1%,i%,fs$
fs$ = "C:\TEMP\Grille.txt"
x% = 20: y% = 20
nc% = 9: nr% = 11: ' colonnes, rangées
wc% = 52: hr% = 30: ' largeur colonnes, hauteur rangées
p1% = 100: ' 1er objet Edit (de p1% à p1%+nc%*nr%-1)
GridEdit(p1%,x%,y%,nc%,nr%,wc%,hr%)
FOR i% = p1% TO p1%+nc%*nr%-1: TEXT i%,STR$(i%): NEXT i%
COLOR 125,255,255,0: FONT_SIZE 125,12
GridEditW(p1%,3,5,"Salut !")
GridEditS(p1%,nc%,nr%,"Z:\Grille.txt")
pause 1000
GridEditD(p1%,"C",4,60)
GridEditD(p1%,"R",8,40)
pause 1000
for i% = p1% to p1%+nc%*nr%-1: delete i%: next i%
pause 1000
p1% = 150: x% = 50: y% = 40
GridEditL(p1%,x%,y%,fs$)
pause 1000
GridEditD(p1%,"C",1,80)
pause 1000
GridEditD(p1%,"R",1,40)
pause 1000
GridEditP(p1%,3,5,"Arial",10,"G",255,16776960)
END
' ==============================================================================
SUB GridEdit(p1%,x%,y%,nc%,nr%,wc%,hr%)
  ' Création d'une pseudo grille avec des Edit individuels en x%,y%
  ' nc% colonnes, nr% rangées de dimensions wc%,hr%
  ' p1% = 1er objet EDIT (objets de p1% à p1%+nc%*nr%-1)
  DIM_LOCAL p%,x1%,y1%,c%,r%
  p% = p1%-1: y1% = y%
  FOR r% = 1 TO nr%
      x1% = x%
      FOR c% = 1 TO nc%
          p% = p%+1: EDIT p%: TOP p%,y1%: LEFT p%,x1%: WIDTH p%,wc%: HEIGHT p%,hr%
          x1% = x1%+wc%-2
      NEXT c%
      y1% = y1%+hr%-2
  NEXT r%
END_SUB
' ==============================================================================
SUB GridEditR(p1%,c%,r%)
  ' Lire le contenu de la cellule c%,r% du GridEdit p1% -> presse-papier
  DIM_LOCAL p%
  p% = p1%+(r%-1)*nc%+c%-1
  CLIPBOARD_STRING_COPY TEXT$(p%)
END_SUB
' ==============================================================================
SUB GridEditW(p1%,c%,r%,txt$)
  ' Ecrire le texte txt$ dans la cellule c%,r% du GridEdit p1%
  DIM_LOCAL p%
  p% = p1%+(r%-1)*nc%+c%-1
  TEXT p%,txt$
END_SUB
' ==============================================================================
SUB GridEditS(p1%,nc%,nr%,fs$)
  ' Sauvegarder le contenu du GridEdit p1% nc% colonnes nr% rangées dans fs$ (.txt)
  DIM_LOCAL x,y,a$,p%,x1%,y1%
  FILE_OPEN_WRITE 1,fs$
      FILE_WRITELN 1,STR$(nc%)+";"+STR$(nr%)+";"+STR$(WIDTH(p1%))+";"+STR$(HEIGHT(p1%))
      p% = p1%-1
      FOR y = 1 TO nr%
          a$ = "": FOR x = 1 TO nc%: p% = p%+1: a$ = a$+TEXT$(p%)+";": NEXT x
          FILE_WRITELN 1,LEFT$(a$,LEN(a$)-1)
      NEXT y
  FILE_CLOSE 1
END_SUB
' ==============================================================================
SUB GridEditL(p1%,x%,y%,fs$)
  ' Restore en x%,y% de la grille GridEdit sauvegardée dans fs$
  DIM_LOCAL nc%,nr%,wc%,hr%,c%,r%,x1%,y1%,a$,i%,k%,p%
  FILE_OPEN_READ 1,fs$
      FILE_READLN 1,a$
      k% = INSTR(a$,";"): nc% = VAL(LEFT$(a$,k%-1)): a$ = RIGHT_POS$(a$,k%+1)
      k% = INSTR(a$,";"): nr% = VAL(LEFT$(a$,k%-1)): a$ = RIGHT_POS$(a$,k%+1)
      k% = INSTR(a$,";"): wc% = VAL(LEFT$(a$,k%-1)): a$ = RIGHT_POS$(a$,k%+1)     
      hr% = VAL(a$)
      p% = p1%-1: y1% = y%: ' création de la grille
      FOR r% = 1 TO nr%
          x1% = x%
          FOR c% = 1 TO nc%
              p% = p%+1: EDIT p%: TOP p%,y1%: LEFT p%,x1%: WIDTH p%,wc%: HEIGHT p%,hr%
              x1% = x1%+wc%-2
          NEXT c%
          y1% = y1%+hr%-2
      NEXT r%
      p% = p1%-1: ' lecture des données
      FOR i% = 1 TO nr%
          FILE_READLN 1,a$
          k% = INSTR(a$,";")
          WHILE k% > 0
              p% = p%+1: TEXT p%,LEFT$(a$,k%-1): a$ = RIGHT_POS$(a$,k%+1)
              k% = INSTR(a$,";")
          END_WHILE
          p% = p%+1: TEXT p%,a$
      NEXT i%
  FILE_CLOSE 1
END_SUB
' ==============================================================================
SUB GridEditD(p1%,Typ$,n%,val%)
  ' Dans la GridEdit p1%, redimensionner Typ$ ="C" (colonne) ou "R" (rangée) de rang n%
  ' à val% pixels (largeur pour colonne ou hauteur pour rangée)
  DIM_LOCAL p%,c%,r%
  IF UPPER$(Typ$) = "C": ' nouvelle largeur de colonne
      FOR r% = 1 TO nr%
          p% = p1%+(r%-1)*nc%+(n%-1): WIDTH p%,val%
          IF n% < nc%
              FOR c% = n%+1 TO nc%
                  p% = p1%+(r%-1)*nc%+(c%-1): LEFT p%,LEFT(p%)+(val%-wc%)
              NEXT c%
          END_IF
      NEXT r%
  ELSE: ' nouvelle hauteur de rangée
      FOR c% = 1 TO nc%
          p% = p1%+(n%-1)*nc%+(c%-1): HEIGHT p%,val%
          IF n% < nr%
              FOR r% = n%+1 TO nr%
                  p%= p1%+(r%-1)*nc%+(c%-1): TOP p%,TOP(p%)+(val%-hr%)
              NEXT r%
          END_IF
      NEXT c% 
  END_IF
END_SUB
' ==============================================================================
SUB GridEditP(p1%,c%,r%,fnt$,sz%,enr$,ct%,cf%)
  ' Caractéristiques du contenu de la cellule GridEdit colonne c%, rangée r%:
  ' police, taille, enrichissements("GIS" ou "BIU"), couleur texte, couleur fond.
  ' couleurs de la forme: R*256*256 + G*256 + B
  DIM_LOCAL p%,rr%,gg%,bb%
  p% = p1%+(r%-1)*nc%+c%-1: ' Edit correspondant à la cellule c%,r%
  IF fnt$<>"" THEN FONT_NAME p%,fnt$
  IF sz% <> 0 THEN FONT_SIZE p%,sz%
  enr$ = UPPER$(enr$)
  IF enr$ <> ""
      IF INSTR(enr$,"G")>0 OR INSTR(enr$,"B")>0 THEN FONT_BOLD p%
      IF INSTR(enr$,"I")>0 THEN FONT_ITALIC p%
      IF INSTR(enr$,"S")>0 OR INSTR(enr$,"U")>0 THEN FONT_UNDERLINE p%
  END_IF
  IF cf% >= 0 AND cf% < 16777216
      rr%=INT(cf%/65536): gg%=BIN_AND(cf%,65280)/256: bb%=BIN_AND(cf%,255)
      COLOR p%,rr%,gg%,bb%: ' couleur de fond
  END_IF
  IF ct% >= 0 AND ct% < 16777216
      rr%=INT(ct%/65536): gg%=BIN_AND(ct%,65280)/256: bb%=BIN_AND(ct%,255)
      FONT_COLOR p%,rr%,gg%,bb%: ' couleur texte
  END_IF
END_SUB
' ==============================================================================
Chaque cellule est représentée par un 'Edit' particulier.
Il est facile de l'adresser en fonction des numéros de colonne et de rangée.
On peut envisager également la sauvegarde et le restore du contenu de la grille (avec des enrichissements particuliers, ça complique un peu mais ce n'est pas insurmontable).

PS 29/03
J'ai ajouté quelques subs d'exploitation de la grille/Edit, redimensionnement des cellules, garnissage, couleurs de texte et de fond d'une cellule donnée, etc. rien de révolutionnaire mais bon...
Revenir en haut Aller en bas
 
Grille d'Edit
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Une grille d'un nouveau (?) genre
» Grille sur le bureau
» Une grille sur l'écran
» Résoudre une grille de SUDOKU
» Utilitaire : génère grille (bmp) 8x8 , 16x16 , 32x32 , 64x64

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: