Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Un Post-it sur le bureau | |
| | |
Auteur | Message |
---|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Un Post-it sur le bureau Mar 13 Juil 2010 - 18:44 | |
| Exact, je viens de voir ton post de l'époque (je ne l'avais pas lu avant ), donc j'ai réinventé l'eau chaude. Mais je trouve que c'est pas mal, peut-être pas pour un petit programme avec une dizaine d'objets, mais quand il y en a des centaines, on a beau faire des séries 1 à 100 pour les form, 101 à 200 pour les boutons etc, il faut prévoir large pour se garder de la marge, alors qu'on peut leur attribuer des noms parlants et ne pas se soucier des numéros. Et après ce qu'a dit Jack: si on nomme un objet 10000 il réserve 10000 emplacements... bon, vous me direz on s'en fiche, on a de la mémoire... vous vous n'avez pas connu les restrictions... Disons que ce qu'il y a de bien en programmation c'est qu'il y a toujours plusieurs manières de faire la même chose, à chacun ses préférences et ses méthodes, l'essentiel est d'obtenir le résultat au bout. Voilà que je me mets à philosopher... ça devient grave. | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Mar 13 Juil 2010 - 18:51 | |
| C'est l'eau tiède qu'on réinvente, pas l'eau chaude. et le fait de philosopher n'est quand même pas le gâtisme ! | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Un Post-it sur le bureau Mar 13 Juil 2010 - 18:54 | |
| - Citation :
- Et après ce qu'a dit Jack: si on nomme un objet 10000 il réserve 10000 emplacements...
çà c'est pas confirmé sauf erreur de ma part. | |
| | | Invité Invité
| Sujet: Re: Un Post-it sur le bureau Mar 13 Juil 2010 - 22:24 | |
| Je peux rappeler ce sujet: https://panoramic.1fr1.net/vos-sources-vos-utilitaires-a-partager-f2/parametrer-les-numeros-d-objets-t364.htmCertain auraient souhaité avoir des noms d'objet pour programmer (curieusement pas de réponses / mais j'ai fais mon deuil). Peut-être a-t-on pas compris le principe, je remets le programme (remis à jour avec les fonctions du presse papier) : - Code:
-
' programme nommant les objets
dim a$ ,c$ ,i% ,j% ,d$, r% dim t$(100)
width 0,1200:height 0,600 memo 1 :left 1,50:width 1,1130 :height 1,550:font_size 1,14:font_name 1,"Locida Console"
rem les noms des datas sont des exemples. Vous faitez votre propre liste. rem terminez la liste par $$$ rem " METTRE ICI LES NOMS CHOISIS " data boite_de_saisie,camembert%,image1 data voiture,bagnole,velo,carafe,soupe,verre, $$$
c$="" :a$="dim ":i%=1 repeat read c$:print c$ if c$<>"$$$" a$=a$+c$+"," : t$(i%)=c$:i%=i%+1 if len(a$)>70 then item_add 1,left$( a$ , len(a$) -1 ):a$="dim " end_if until c$="$$$"
item_add 1,left$( a$ , len(a$) -1 ) item_add 1,""
item_add 1,"rem variables définissant les objets" ' ******************************************************************* r%=0 :rem "variable donnant le dernier objet, pour mettre à la suite " ' * ' ******************************************************************* for j%=1 to i%-1 d$=d$+t$(j%)+"="+ str$(j%+r%) if len(d$)>70 item_add 1,d$:d$="" else d$=d$+" : " end_if next j% a$="" for i%=1 to count(1):a$=a$+item_read$(1,i%)+chr$(10):next i% : clipboard_string_copy a$ item_add 1,"' coller dans un onglets le mémo qui est chargé dans le presse-papier" ce qui donne: - Citation :
- dim boite_de_saisie,camembert%,image1,voiture,bagnole,velo,carafe,soupe
dim verre
rem variables définissant les objets boite_de_saisie=1 : camembert%=2 : image1=3 : voiture=4 : bagnole=5 : velo=6
il reste plus qu'à programmer: (exemple) - Code:
-
dim boite_de_saisie,camembert%,image1,voiture,bagnole,velo,carafe,soupe dim verre
rem variables définissant les objets boite_de_saisie=1 : camembert%=2 : image1=3 : voiture=4 : bagnole=5 : velo=6 ' démarrage du programme memo boite_de_saisie picture image1:left image1,200 Peut-être n'est-ce plus au gout du jour. J'ai hésité à remettre ce truc, le tortue et la tumeur (le tord tue) |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Un Post-it sur le bureau Mer 14 Juil 2010 - 1:04 | |
| @Nardo26: comme on te l'a déjà dit, on ne peut pas jouer avec les polices, tailles et couleurs de texte dans un objet list. Cela agit globalement. Mais il y a un moyen de contourner cela, avec un picture. Dans un picture, tu peux faire des print avec des couleurs, polices etc différents. Bien sûr, tu as un autre inconvénient: il n'y a pas les ascenseurs. Il faut les gérer soi-même avec un scroll_bar, track_bar ou progress_bar. Tu peux faire une dlist (une liste cachée, en mémoire uniquement), et afficher son contenu dans un picture. Tu utilises ensuite ta scroll_bar pour faire "défiler" l'affichage de la liste en réaffichant la picture en fonction de la position de la scroll_bar. Voici un petit bout de code qui permet de voir le principe d'affichage dans un picture. J'ai défini 2 modes graphiques spéciaux: mode 1 = texte en rouge, mode 2 = texte en bleu et en gras. - Code:
-
label attrib_on, attrib_off, print_line
dim i%, s$, n%, code%
dlist 10 item_add 10,"aaaaaaaaaa" item_add 10,"1|bbbbb [rouge] bbbbb" item_add 10,"2|ccccc [bleu gras] cccc" item_add 10,"1111111111"
picture 20 print_target_is 20 width 20,400 height 20,150
for i%=1 to 4 s$ = item_read$(10,i%) n% = instr(s$,"|") code% = 0 if n%>0 then code% = val(left$(s$,n%-1)) gosub print_line next i%
end
print_line: s$ = right$(s$,len(s$)-n%) n% = instr(s$,"[") if n%=0 gosub attrib_on print s$ gosub attrib_off return end_if if n%>1 print left$(s$,n%-1); s$ = right$(s$,len(s$)-n%) gosub attrib_on n% = instr(s$,"]") print left$(s$,n%-1); gosub attrib_off if n%<len(s$) then print right$(s$,len(s$)-n%-1); end_if print return attrib_on: select code% case 1 font_color 20,255,0,0 case 2 font_color 20,0,0,255 font_bold 20 end_select return
attrib_off: font_color 20,0,0,0 font_bold_off 20 return | |
| | | Invité Invité
| Sujet: Re: Un Post-it sur le bureau Mer 14 Juil 2010 - 6:31 | |
| Eh bien Klaus, tu n'as pas dansé cette nuit (à c'est vrai tu es Allemand). Pas de feu d'artifice? @ jl35 - Citation :
- Sinon, tu ne m'as pas dit, qu'est-ce que tu penses de ma numérotation dynamique des objets ?
J'ai remis le code en rapport avec ceci. Personnellement je préfère utiliser une variable avec la présentation de l'incrémentation. exemple: objet%=10 memo objet% picture objet%+1 spin objet%+2 : min objet%+2,10 etc... Pourquoi? le problème est que objet%=objet%+1 ne permet pas de connaitre les numéros. Si on doit changer un attribut comme HIDE INACTIVE COLOR.etc, il n'y a plus de rapport entre la déclaration d'objet et la variable losqu'on arrive en fin de list. Si on doit modifier le numéro de départ, le reste est en rapport avec le reste du programme. C'est vrai que dans ton programme cela n'est pas une gène, et que moi-même au début j'ai utilisé ce principe. Pour le programme que j'ai mis plus haut, c'est différent (je ne l'utilise pas ou rarement), les noms sont en rapport avec l'objet. Si on veut rajouter un objet ou modifier l'ordre, il suffit de reprendre l'utilitaire sauvegardé qui nomme les objets, de modifier les datas et de remplacé les lignes du programme par les nouvelles. Le reste ne change pas et s'adapte. Si je ne me sers pas de ce programme est que je manque d'idée pour mettre un nom à un objet. Une chose: faire une ligne de DIM spécifique pour les objets. la modification est plus simple. Je m'arrête, je vais être en pétard, et certains ont des allumettes. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Un Post-it sur le bureau Mer 14 Juil 2010 - 9:10 | |
| @Nardo26: Et voici la version avec un ascenseur simulé par une scroll_bar ! Cela donne vraiment l'impression d'une liste avec des attributs visuels, et on peut le faire par ligne ou même par portion de ligne comme dans cet exemple ! Il n'y a plus qu'à définit d'autres attributs et les rajouter dans la boucle de traitement ! Essaie-le, c'est bluffant ! - Code:
-
label attrib_on, attrib_off, print_line, change_21
dim i%, s$, n%, code%, nr%
dlist 10 item_add 10,"aaaaaaaaaa" item_add 10,"1|bbbbb [rouge] bbbbb" item_add 10,"2|ccccc [bleu gras] cccc" item_add 10,"a 1111111111" item_add 10,"b 1111111111" item_add 10,"c 1111111111" item_add 10,"d 1111111111" item_add 10,"e 1111111111" item_add 10,"f 1111111111" item_add 10,"g 1111111111" item_add 10,"h 1111111111" item_add 10,"i 1111111111" item_add 10,"j 1111111111" item_add 10,"k 1111111111" item_add 10,"l 1111111111" item_add 10,"m 1111111111" item_add 10,"n 1111111111" item_add 10,"o 1111111111" item_add 10,"p 1111111111" item_add 10,"q 1111111111"
picture 20 print_target_is 20 width 20,400 height 20,150
' 11 lignes visibles ' 20 lignes chargées ' donc, la première ligne du picture varie de la ligne 1 à la ligne 10 de la dlist (20-11+1) scroll_bar 21 vertical 21 left 21,404 height 21,150 min 21,1 max 21,10 on_change 21,change_21
for i%=1 to 14 s$ = item_read$(10,i%) gosub print_line next i%
end
print_line: n% = instr(s$,"|") code% = 0 if n%>0 then code% = val(left$(s$,n%-1)) s$ = right$(s$,len(s$)-n%) n% = instr(s$,"[") if n%=0 gosub attrib_on print s$ gosub attrib_off return end_if if n%>1 print left$(s$,n%-1); s$ = right$(s$,len(s$)-n%) gosub attrib_on n% = instr(s$,"]") print left$(s$,n%-1); gosub attrib_off if n%<len(s$) then print right$(s$,len(s$)-n%-1); end_if print return attrib_on: select code% case 1 font_color 20,255,0,0 case 2 font_color 20,0,0,255 font_bold 20 end_select return
attrib_off: font_color 20,0,0,0 font_bold_off 20 return change_21: print_target_is 0 delete 20 picture 20 print_target_is 20 width 20,400 height 20,150 print_target_is 20 print_locate 0,0 nr% = position(21) for i%=1 to 11 s$ = item_read$(10,nr%+i%-1) gosub print_line next i% return
Dernière édition par Klaus le Mer 14 Juil 2010 - 14:13, édité 1 fois | |
| | | Invité Invité
| Sujet: Re: Un Post-it sur le bureau Mer 14 Juil 2010 - 10:34 | |
| J'essais ton programme par respect. Je pense que la ligne 101 (tien c'est le même numéro), tu as voulu mettre item_add 10,... Je ne comprends pas comment il marche, les ascenseurs ok, mais quand je clic sur une ligne, rien ne se passe???
Aurais-je un ordi qui marche pas comme les autres. A ce propos, je crois que je vais lancer une souscription pour m'en payer un autre. Si j'avais un marteau il n'y en aurait plus. Hier soir, il fallait entre 5 mn à 1/4 heures pour afficher une page. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Un Post-it sur le bureau Mer 14 Juil 2010 - 14:19 | |
| Tu as raison: la ligne 101 est un résidu d'une trace de debug, je l'ai supprimée dans le source chez moi et celui posté ci-dessus.
Il est normal qu'il ne se passe rien en cliquant dans une ligne. En fait, je simule une liste avec des attributs graphiques (ce qui techniquement est impossible) par un dlist et un picture servant pour l'affichage. Il faudrait mintenant prendre en compte l'évènement on_click et utiliser les fonctions mouse_xxx pour déterminer la ligne cliquée. Je suis en train de m'en occuper. Je suis aussi en train de généraliser le dimensionnement d'affichage et le rapport avec le nombre de lignes présentes dans la liste. Pour la démonstration, j'ai mis 20 lignes dont 11 sont affichées. Cela viendra prochainement. | |
| | | Invité Invité
| Sujet: Re: Un Post-it sur le bureau Mer 14 Juil 2010 - 14:35 | |
| Ok j'ai compris. C'est pas grave, je pensais que cela était fait, et je ne comprenais pas que cela ne marchait pas. Par contre pour en avoir fait l'expérience avec mon programme à cellules, j'ai du renoncer avec un picture pour retrouver une ligne. Tant qu'on est dans l'écran le calcul est simple, mais si on descend l'ascenseur, il n'y a plus de référence. La position Y de mouse n'a pas de correspondance. Vérifie bien tous les cas de figures. et je pense que tu arrivera à la même conclusion. Si tu réussi tous les testes, explique moi bien, je pourrais peut-être réécrire la procédure.
Merci (j'ai pas ton expérience ni ta connaissance) |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Un Post-it sur le bureau Mer 14 Juil 2010 - 15:03 | |
| Voici une version "exploitable". Elle est bien commentée, paramétrable en hauteur et largeur d'affichage, et retourne le numéro de la ligne cliquée, et ce non pas par rapport à l'écran, mais par rapport à la liste en tenant compte des parties non visibles: - Code:
-
label attrib_on, attrib_off, print_line, change_21, fin2, click_liste, create_picture, change_21a
dim nombre_dans_liste%, hauteur_affichage%, lignes_affichage%, largeur_affichage%, ligne_choisie% dim i%, s$, n%, code%, nr%, xx%, yy% dlist 10
' ************** la ligne suivante est à configurer lignes_affichage% = 8 : ' une ligne prend 14 pixels largeur_affichage% = 400 : ' largeur de la partie affichage de la liste item_add 10,"aaaaaaaaaa" item_add 10,"1|bbbbb [rouge] bbbbb" item_add 10,"2|ccccc [bleu gras] cccc" item_add 10,"a 1111111111" item_add 10,"b 1111111111" item_add 10,"c 1111111111" item_add 10,"d 1111111111" item_add 10,"e 1111111111" item_add 10,"f 1111111111" item_add 10,"g 1111111111" item_add 10,"h 1111111111" item_add 10,"i 1111111111" item_add 10,"j 1111111111" item_add 10,"k 1111111111" item_add 10,"l 1111111111" item_add 10,"m 1111111111" item_add 10,"n 1111111111" item_add 10,"o 1111111111" item_add 10,"p 1111111111" item_add 10,"q 1111111111" nombre_dans_liste% = 20 : ' cette variable est à charger selon le contenu de la dlist ' ************** fin de la zone configurable
' ************** paramètres calculés hauteur_affichage% = lignes_affichage%*14 : ' hauteur de l'affichage du picture et de la scroll_bar
' ************** constructions des éléments simulant une liste gosub create_picture ' donc, la première ligne du picture varie de la ligne 1 à la ligne lignes_affichage de la dlist scroll_bar 21 vertical 21 left 21,largeur_affichage% + 4 height 21,hauteur_affichage% min 21,1 max 21,10 on_change 21,change_21
nr% = 1 : gosub change_21a : ' affichage initial ' on_error_goto fin1 ' for i%=1 to lignes_affichage% ' s$ = item_read$(10,i%) ' gosub print_line ' next i% ' fin1: ' off_error_goto end
create_picture: picture 20 print_target_is 20 width 20,largeur_affichage% height 20,hauteur_affichage% on_click 20,click_liste return
print_line: n% = instr(s$,"|") code% = 0 if n%>0 then code% = val(left$(s$,n%-1)) s$ = right$(s$,len(s$)-n%) n% = instr(s$,"[") if n%=0 gosub attrib_on print s$ gosub attrib_off return end_if if n%>1 print left$(s$,n%-1); s$ = right$(s$,len(s$)-n%) gosub attrib_on n% = instr(s$,"]") print left$(s$,n%-1); gosub attrib_off if n%<len(s$) then print right$(s$,len(s$)-n%-1); end_if print return attrib_on: select code% case 1 font_color 20,255,0,0 case 2 font_color 20,0,0,255 font_bold 20 end_select return
' annuler tous les attributs ' ************* annuler ici tous les nouveaux attributs créés attrib_off: font_color 20,0,0,0 font_bold_off 20 return
' gestion de la scroll_bar change_21: nr% = position(21) if nr%>(nombre_dans_liste%-lignes_affichage%) position 21,nombre_dans_liste%-lignes_affichage%+1 return end_if print_target_is 0 delete 20 gosub create_picture print_target_is 20 change_21a: print_locate 0,0 on_error_goto fin2 for i%=1 to lignes_affichage% s$ = item_read$(10,nr%+i%-1) gosub print_line next i% fin2: off_error_goto return click_liste: xx% = mouse_x_left_down(20) yy% = mouse_y_left_down(20) ligne_choisie% = nr% + int((yy%+13)/14) - 1 ' *********** ici, ajouter le traitement pour la sélection d'une ligne ! message "ligne "+str$(ligne_choisie%) return | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Un Post-it sur le bureau Mer 14 Juil 2010 - 15:24 | |
| Je remarque tout d'abord que la discussion en cours n'a plus aucun rapport avec le sujet: le post-it. Mais bon.
@cosmos, je ne vois pas très bien ce que tu veux dire au sujet de la numérotation des objets par séquence continue. Si tu regardes bien le programme, chaque objet qui est susceptible d'être référencé par la suite porte bien un nom (ou pas si c'est inutile, c'est à dire si on ne l'appelle pas par la suite), sous forme d'une constante, LS% pour le LIST, AL1% pour le 1er ALPHA, AL2% pour le 2ème, BQ% pour le bouton quitter, BV% pour le bouton valide, etc. Et je ne vois pas la différence qu'il y a à écrire par la suite FILE_LOAD LS%, f$ plutôt que FILE_LOAD 23, f$, sauf qu'à mon avis LS% est plus parlant que 23. Et que si un jour tu veux changer ce numéro pour une raison ou pour une autre (insérer un autre objet par exemple) il faudra le faire dans tout le programme, au risque d'en oublier, alors que dans mon exemple il n'y a aucun problème, tout est automatiquement mis à jour. Mais bon, c'est une idée comme une autre.
| |
| | | Invité Invité
| Sujet: Re: Un Post-it sur le bureau Mer 14 Juil 2010 - 16:26 | |
| Tu as raison. 3 sujets différents pour le même post. J'ai eu du mal hier de retrouver pourquoi, Klaus était parti sur item avec picture, j'ai cherché ailleurs pensant que c'était la suite d'un autre post, et finalement: - Citation :
- Je n'ai pas trouvé dans la doc des commandes permettant de changer des attribut sur un item. Existe t-il un moyen de faire en sorte que l'item n°x de la liste y soit en rouge,gras,etc... (pour marquer une priorité par ex.)?
On aurait du ouvrir un nouveau sujet à partir de là, et quand j'ai répondu, je pensais juste à une parenthèse du post. Pour ce qui est de ton programme, j'avoue que je ne l'ai pas analysé, ni regardé de près, mais répondu par rapport à la question: - Citation :
- Sinon, tu ne m'as pas dit, qu'est-ce que tu penses de ma numérotation dynamique des objets ?
Mais comme tu as mis des noms pour les objets, celà revient en partie au programme que j'ai mis pour nommer les objets. Comme tu peux le voir, c'est la même méthode sauf qu'il est fait par un autre programme, dont les noms sont mis en data. Si comme tu l'a fais, les objets sont nommés en même temps, je n'ai rien à redire (surtout que j'utilise de temps en temps ce procédé), mais je n'avais répondu que par rapport à ta question. Quant à Klaus, aujourd'hui c'est 14 juillet, il y a une calèche qui passe devant chez moi, avec des poneys, je regarderais ton programme plus tard, mais si on continu, il serait bon pour éviter la susceptibilité du papy d'ouvrir un nouveau post. Boum!!! |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Un Post-it sur le bureau Mer 14 Juil 2010 - 17:47 | |
| OK, tu as raison pour le mélange des sujets. Je vais immédiatement poster ce programme dans la rubrique "Vos sources, vos utilitaires à partager", avec uné féférence à l'instigateur de ce (sous)sujet. | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Un Post-it sur le bureau Jeu 15 Juil 2010 - 9:18 | |
| Bonjour à tous !
Ben je vois qu'ils y en a qui ne sont pas beaucoup sortis de chez eux hier.... L'idée de l'utilisation de Picture pour simuler une liste est sympa....
Ce n'était pas vraiment un hors sujet vu que j'avais posé la question dans l'optique de modifier le programme afin de pouvoir marquer certains post-it... Mais c'est vrai que cela mérite un nouveau sujet : c'est plus facile à (re)trouver par la suite dans le forum.
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Un Post-it sur le bureau Jeu 15 Juil 2010 - 9:37 | |
| | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Un Post-it sur le bureau Dim 25 Juil 2010 - 22:46 | |
| Légère mise à jour de Post-it en page 1, correction de bugs mineurs. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Un Post-it sur le bureau Dim 25 Juil 2010 - 23:16 | |
| Où ça, celui sur la première page ? | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Un Post-it sur le bureau Dim 25 Juil 2010 - 23:33 | |
| Eh bien oui, sur la page 1 de ce sujet post-it... (petit bug entre autres, dans certains cas quand un texte était terminé par un espace). Cette fois, bonne nuit Klaus, puisque tu sembles être le seul survivant | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Un Post-it sur le bureau Dim 25 Juil 2010 - 23:43 | |
| Merci, JL35, je le prends ! | |
| | | Contenu sponsorisé
| Sujet: Re: Un Post-it sur le bureau | |
| |
| | | | Un Post-it sur le bureau | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |