FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» MasterMind Alphabétique Français
par Jicehel Aujourd'hui à 22:37

» KGF_dll - nouvelles versions
par Laurent Aujourd'hui à 22:25

» Windows Defender détecte un trojan dans Panoramic
par Jean Claude Aujourd'hui à 22:06

» Sleep ; une alternative de PAUSE
par JL35 Aujourd'hui à 21:49

» New: Maître-expert alphabétique
par Marc37 Aujourd'hui à 16:07

» PPE...le retour ?...
par Jicehel Aujourd'hui à 15:17

» Histoire d' en rire 2
par Yannick Aujourd'hui à 14:42

» GetParent : Utile pas pour deux sous
par papydall Hier à 15:44

» Quelle option est cochée ?
par Yannick Hier à 3:33

» Univers sans fin
par jjn4 Lun 20 Fév 2017 - 17:55

» Palette de couleurs
par jjn4 Lun 20 Fév 2017 - 17:51

» Sortie de Sub intempestive
par JL35 Dim 19 Fév 2017 - 17:31

» Caracteres de blocs
par Yannick Sam 18 Fév 2017 - 16:04

» KGF.dll et EXCEL
par Jicehel Sam 18 Fév 2017 - 14:38

» Gestion des évènements par une DLL
par Klaus Sam 18 Fév 2017 - 13:50

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Février 2017
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728     
CalendrierCalendrier

Partagez | 
 

 Tentative de surlignage

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
JL35



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

MessageSujet: Tentative de surlignage   Jeu 2 Oct 2014 - 19:08

J'ai tenté de faire une sub de surlignage dans un List, par exemple, pour mettre en évidence certains éléments trouvés par programme, mais finalement je ne suis pas trop satisfait du résultat: les éléments sont bien surlignés, mais au moindre clic le surlignage disparait: en fait l'opération se fait par superposition de pictures sur les parties concernées, mais dès qu'on fait autre chose le List est régénéré par panoramic et les pictures rajoutés passent au 2ème plan (dessous -> invisibles).

Donc ça peut être utilisé ponctuellement, mais c'est tout, à moins que quelqu'un ait une meilleure idée:
Code:
DIM f$, a$, buf$, i%

f$ = "C:\GRAPH\JPG\GOLDGATE.jpg": ' <=== un fichier quelconque
WIDTH 0,660: HEIGHT 0,900
LIST 2: TOP 2,0: WIDTH 2,640: HEIGHT 2,850
FONT_NAME 2,"Lucida Console": FONT_SIZE 2,10
MEMO 3: WIDTH 3,600: HIDE 3

Dump(f$,0,1024,16)
ITEM_ADD 3,rda$: FOR i% = 1 TO COUNT(3): ITEM_ADD 2,ITEM_READ$(3,i%): NEXT i%
CAPTION 0,f$

Surligne(2,16,50,5): ' ligne 16, caractère 50
Surligne(2,23,38,5): ' ligne 23, caractère 38
Surligne(2,29,26,5): ' ligne 29, caractère 26
Surligne(2,41,8,11): ' ligne 41, caractère 8
end
' ==============================================================================
SUB Surligne(obj%,ligne%,carac%,nbcar%)
' surligner un élément d'un Memo obj% (à police fixe)
DIM_LOCAL wc%,hc%,fm%,ps%,npt%,n2d%,el$
npt% = NUMBER_PRINT_TARGET: n2d% = NUMBER_2D_TARGET: ' sauvegarde
el$ = MID$(ITEM_READ$(obj%,ligne%),carac%,nbcar%): ' élément à surligner
fm%=2000: WHILE OBJECT_EXISTS(fm%)=1: fm%=fm%+1: END_WHILE
ps%=fm%+1: WHILE OBJECT_EXISTS(ps%)=1: ps%=ps%+1: END_WHILE
wc% = 1+TEXT_WIDTH("ABCDEFGHIJ",obj%)/10: hc% = TEXT_HEIGHT("AjBp",obj%)
FORM fm%: BORDER_HIDE fm%: TOP fm%,TOP(obj%)+(ligne%-1)*hc%+31
LEFT fm%,LEFT(obj%)+(carac%-1)*wc%+12: WIDTH fm%,wc%*nbcar%+4: HEIGHT fm%,hc%
PICTURE ps%: PARENT ps%,fm%: FULL_SPACE ps%
FONT_NAME ps%,"Lucida Console": FONT_SIZE ps%,10: ' font_color ps%,255,0,0
2d_target_is ps%: 2d_fill_color 255,255,80
PRINT_TARGET_IS ps%: PRINT_LOCATE 0,1: PRINT el$
PRINT_TARGET_IS npt%: 2D_TARGET_IS n2d%: ' restore
END_SUB
' ==============================================================================
SUB Dump(f$,posit%,n%,nol%)
' dump de n% octets de f$ à partir de posit% -> rda$, nol% octets par ligne
' à relire par exemple dans un Memo (Item_Add nmemo,rda$)
' (n% ramené si nécessaire au nombre entier inférieur de lignes)
IF VARIABLE("rda$")=0 THEN DIM rda$
DIM_LOCAL ads%, di%, dj%, dk%, ba$, ca$, cc$
IF MOD(n%,nol%)<>0 THEN n% = INT(n%/nol%): n% = n%*nol%
FILEBIN_OPEN_READ 9,f$: FILEBIN_POSITION 9,posit%: ba$ = FILEBIN_HEXA_READ$(9,n%)
FILEBIN_CLOSE 9
ads% = 0: rda$ = ""
FOR di% = 1 TO (n%-1)*2 STEP 2*nol%
    rda$ = rda$ + RIGHT$("0000"+HEX$(ads%),5) + ": ": ca$ = " "
    FOR dj% = di% TO di%+2*nol%-2 STEP 2
        cc$ = MID$(ba$, dj%, 2)
        rda$ = rda$ + cc$ + " ": dk% = HEX(cc$)
        IF dk% > 31
            ca$ = ca$ + CHR$(dk%)
        ELSE
            ca$ = ca$ + "."
        END_IF
    NEXT dj%
    ads% = ads% + nol%
    rda$ = rda$ + ca$ + " " + CHR$(13) + CHR$(10)
NEXT di%
rda$ = LEFT$(rda$, LEN(rda$)-2)
END_SUB
' ==============================================================================
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Invité
Invité



MessageSujet: Re: Tentative de surlignage   Jeu 2 Oct 2014 - 20:37

J'ai pas le temps en ce moment de tester quoique ce soit, donc je ne fais pas l'essai, et je sais comment cela se passe.

Pour mon programme de conception d'un site, j'ai trouvé une solution pour montrer la ligne en cour d'un GRID. Au lieu d'utiliser un picture, utiliser un container. Ca fait la même chose, mais si il est conçu après le list, il restera au dessus, car c'est le dernier créé qui restera sur le précédent, à l'inverse d'un picture qui est recouvert.

EDIT: J'ai pas pensé qu'il y avait une tentative d'écriture, donc dans un container il faudra rajouter un picture ou un alpha. Mille excuses.
Revenir en haut Aller en bas
JL35



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

MessageSujet: Re: Tentative de surlignage   Jeu 2 Oct 2014 - 21:02

Merci cosmos pour tes suggestions, il me semblait bien que tu avais fait quelque chose dans ce genre, autrefois.
Je vais regarder ça de plus près.

EDIT: Formidable cosmos ton idée de container, après un essai rapide le surlignage suit la fenêtre si on la déplace ou si on clique simplement dessus, il reste visible !
Je vais continuer dans cette voie, merci pour cette idée géniale !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



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

MessageSujet: Re: Tentative de surlignage   Jeu 2 Oct 2014 - 23:00

Suite à l'intervention de cosmos, l'outil de surlignage devient plus intéressant, puisqu'il reste visible si on clique ou déplace la fenêtre.
Du coup j'ai ajouté une sub de recherche de séquence, un peu sommaire, mais c'est à titre expérimental: on donne une séquence à chercher, ici en hexa, et les zones trouvées sont surlignées dans le dump affiché (ici, recherche de la séquence 'FFC4' dans un fichier binaire, en l'occurence une image):
C'est très perfectible, évidemment, par exemple si la séquence est à cheval sur deux lignes, et il faudrait pouvoir se déplacer dans le fichier (faire défiler le dump), mais c'est une idée de départ.
Le principe est conçu pour une recherche dans un dump, dans un fichier texte ce serait plus facile.
Code:
DIM f$, a$, buf$, i%, j%
f$ = "C:\GRAPH\JPG\GOLDGATE.jpg": ' <=== un fichier quelconque
WIDTH 0,660: HEIGHT 0,900
LIST 2: TOP 2,0: WIDTH 2,640: HEIGHT 2,850
FONT_NAME 2,"Lucida Console": FONT_SIZE 2,10
MEMO 3: WIDTH 3,600: HIDE 3

Dump(f$,0,1024,16)
ITEM_ADD 3,rda$: FOR i% = 1 TO COUNT(3): ITEM_ADD 2,ITEM_READ$(3,i%): NEXT i%
CAPTION 0,f$
rda$ = ""
FOR i% = 1 TO COUNT(2)
    a$ = MID$(ITEM_READ$(2,i%),8,48)
    FOR j% = 1 TO LEN(a$) STEP 3: rda$=rda$+MID$(a$,j%,2): NEXT j%
NEXT i%

Recherche(rda$,"FFC4"): ' Rechercher et surligner les séquences "FFC4" dans le dump
end
' ==============================================================================
SUB Recherche(a$,seq$)
DIM_LOCAL k%,li%,ca%,nbc%
k% = INSTR(a$,seq$)
WHILE k%>0
    IF odd(k%) = 0: ' pour les recherches en hexa: k% doit être impair
        k%=k%-1
    ELSE
        li% = 1+INT(k%/32)
        ca% = k%-(li%-1)*32: ca%=ca%+INT(ca%/2)-1: ca%=ca%+8: ' (+ adresse)
        nbc% = LEN(seq$)+INT(LEN(seq$)/2)-1: ' pour tenir compte des espaces dump
        Surligne(2,li%,ca%,nbc%)
    END_IF
    k% = INSTR_POS(a$,seq$,k%+2)
END_WHILE
END_SUB
' ==============================================================================
SUB Surligne(obj%,ligne%,carac%,nbcar%)
' surligner un élément d'un Memo obj% (à police fixe)
' ligne%=ligne de l'élément, carac%=rang du caractère dans la ligne, nbcar%=nombre de caractères à surligner
DIM_LOCAL wc%,hc%,fm%,ps%,npt%,n2d%,el$
npt% = NUMBER_PRINT_TARGET: n2d% = NUMBER_2D_TARGET: ' sauvegarde
el$ = MID$(ITEM_READ$(obj%,ligne%),carac%,nbcar%): ' élément à surligner
fm%=2000: WHILE OBJECT_EXISTS(fm%)=1: fm%=fm%+1: END_WHILE
ps%=fm%+1: WHILE OBJECT_EXISTS(ps%)=1: ps%=ps%+1: END_WHILE
wc% = 1+TEXT_WIDTH("ABCDEFGHIJ",obj%)/10: hc% = TEXT_HEIGHT("AjBp",obj%)
CONTAINER fm%: TOP fm%,TOP(obj%)+(ligne%-1)*hc%
LEFT fm%,LEFT(obj%)+(carac%-1)*wc%+3: WIDTH fm%,wc%*nbcar%+4: HEIGHT fm%,hc%
PICTURE ps%: PARENT ps%,fm%: WIDTH ps%,WIDTH(fm%): HEIGHT ps%,HEIGHT(fm%)
FONT_NAME ps%,"Lucida Console": FONT_SIZE ps%,10
2D_TARGET_IS ps%: 2D_FILL_COLOR 255,255,64
PRINT_TARGET_IS ps%: PRINT_LOCATE 0,2: PRINT el$
PRINT_TARGET_IS npt%: 2D_TARGET_IS n2d%: ' restore
END_SUB
' ==============================================================================
SUB Dump(f$,posit%,n%,nol%)
' dump de n% octets de f$ à partir de posit% -> rda$, nol% octets par ligne
' à relire par exemple dans un Memo (Item_Add nmemo,rda$)
' (n% ramené si nécessaire au nombre entier inférieur de lignes)
IF VARIABLE("rda$")=0 THEN DIM rda$
DIM_LOCAL ads%, di%, dj%, dk%, ba$, ca$, cc$
IF MOD(n%,nol%)<>0 THEN n% = INT(n%/nol%): n% = n%*nol%
FILEBIN_OPEN_READ 9,f$: FILEBIN_POSITION 9,posit%: ba$ = FILEBIN_HEXA_READ$(9,n%)
FILEBIN_CLOSE 9
ads% = 0: rda$ = ""
FOR di% = 1 TO (n%-1)*2 STEP 2*nol%
    rda$ = rda$ + RIGHT$("0000"+HEX$(ads%),5) + ": ": ca$ = " "
    FOR dj% = di% TO di%+2*nol%-2 STEP 2
        cc$ = MID$(ba$, dj%, 2)
        rda$ = rda$ + cc$ + " ": dk% = HEX(cc$)
        IF dk% > 31
            ca$ = ca$ + CHR$(dk%)
        ELSE
            ca$ = ca$ + "."
        END_IF
    NEXT dj%
    ads% = ads% + nol%
    rda$ = rda$ + ca$ + " " + CHR$(13) + CHR$(10)
NEXT di%
rda$ = LEFT$(rda$, LEN(rda$)-2)
END_SUB
' ==============================================================================
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Invité
Invité



MessageSujet: Re: Tentative de surlignage   Ven 3 Oct 2014 - 0:43

Merci pour me citer.
J'ai essayé le programme. On voit bien que le surlignage. Le problème est qu'il ne faut pas que cela scroll. Mais c'est expérimental. Le problème du décalage a toujours été problématique pour ce type de programme.
Revenir en haut Aller en bas
JL35



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

MessageSujet: Re: Tentative de surlignage   Ven 3 Oct 2014 - 0:49

Tu as raison, si on voulait faire quelque chose de vraiment exploitable il faudrait vraiment résoudre ce problème de scroll, ou alors (je parle dans le cas d'un dump comme ici) ne pas faire de scroll mais faire défiler les pages par programme, c'est à dire n'afficher dans le list que ce qui y tient, pas plus, en fonction de clics sur des flèches avant ou arrière, comme j'ai fait dans un programme de dump, et réafficher les surlignages en conséquence.

Mais bon, c'était une expérience, je ne crois pas que je vais aller plus loin pour le moment.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Tentative de surlignage   

Revenir en haut Aller en bas
 
Tentative de surlignage
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Tentative d'hameçonnage sur mon forum ...
» [BBcode] Ajouter une balise de surlignage du texte
» tentative d'accès a mon forum depuis la chine!
» Nouveau membre et problème ou tentative d'amorçage...
» Tentative échouée

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC 32 bits :: Présentation et bavardage-
Sauter vers: