Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: MULTICOPIES - un presse papier multiple Sam 2 Déc 2017 - 12:23 | |
| Bonjour à tous ! Je fais suite à l'intervention de Jean Claude il y a quelques jours concernant les touches de fonction et l'usage du presse papier. J'avais dans mes tiroirs, un programme permettant l'usage de plusieurs presse papiers virtuels. Mais je ne l'avais jamais terminé ! J'ai donc repris mon code et je l'ai enfin rendu utilisable. Il n'y a rien d’exceptionnel dans le code hormis peut être quels astuces sur le déplacement de la fenêtre et les clics gauches et droits et encore... Enfin à vous de voir... - Spoiler:
- Code:
-
' MULTICOPIES - Version 1.02 ' par MiNiBuG - le 03.12.2017
DIM copie$(10) , n% , m% , s% , t$ , x% , y% DIM for% , obj% , alp%(3) , lum%(11) , bou%(11) , opt%(5) , mem%
LABEL menu , deplace
BORDER_HIDE obj% : LEFT obj%,10 : TOP obj%,10 : WIDTH obj%,470 : HEIGHT obj%,300 : COLOR obj%,0,0,0 : for%=obj% : obj%=obj%+1
PICTURE obj% : LEFT obj%,2 : TOP obj%,2 : WIDTH obj%,466 : HEIGHT obj%,22 : COLOR obj%,0,100,255 : obj%=obj%+1 ALPHA obj% : PARENT obj%,for% : LEFT obj%,2 : TOP obj%,4 : CAPTION obj%," MULTICOPIES - Version 1.02 du 03.12.2017" : FONT_NAME obj%,"Arial" : FONT_BOLD obj% FONT_COLOR obj%,255,255,255 : COLOR obj%,0,100,255 : FONT_SIZE obj%,12 : ON_MOUSE_DOWN obj%,deplace : alp%(1)=obj% : obj%=obj%+1 ALPHA obj% : PARENT obj%,for% : LEFT obj%,445 : TOP obj%,2 : CAPTION obj%," X" : FONT_COLOR obj%,255,255,255 : COLOR obj%,0,100,255 FONT_NAME obj%,"Arial" : FONT_BOLD obj% : FONT_SIZE obj%,14 : ON_MOUSE_DOWN obj%,menu : alp%(2)=obj% : obj%=obj%+1
FOR n%=1 to 10 PICTURE obj% : PARENT obj%,for% : TOP obj%,28 : LEFT obj%,n%*27-24 : WIDTH obj%,26 : HEIGHT obj%,10 : COLOR obj%,180,180,180 : lum%(n%)=obj% : obj%=obj%+1 BUTTON obj% : PARENT obj%,for% : TOP obj%,40 : LEFT obj%,n%*27-23 : WIDTH obj%,25 : HEIGHT obj%,28 : CAPTION obj%,str$(n%) : ON_MOUSE_DOWN obj%,menu : bou%(n%)=obj% : obj%=obj%+1 NEXT n%
BUTTON obj% : PARENT obj%,for% : TOP obj%,28 : LEFT obj%,275 : WIDTH obj%,84 : HEIGHT obj%,20 : CAPTION obj%,"Effacer Mémo" : ON_MOUSE_DOWN obj%,menu : opt%(1)=obj% : obj%=obj%+1 BUTTON obj% : PARENT obj%,for% : TOP obj%,48 : LEFT obj%,275 : WIDTH obj%,84 : HEIGHT obj%,20 : CAPTION obj%,"Effacer tout" : ON_MOUSE_DOWN obj%,menu : opt%(2)=obj% : obj%=obj%+1 BUTTON obj% : PARENT obj%,for% : TOP obj%,28 : LEFT obj%,360 : WIDTH obj%,84 : HEIGHT obj%,20 : CAPTION obj%,"Charger" : ON_MOUSE_DOWN obj%,menu : opt%(3)=obj% : obj%=obj%+1 BUTTON obj% : PARENT obj%,for% : TOP obj%,48 : LEFT obj%,360 : WIDTH obj%,84 : HEIGHT obj%,20 : CAPTION obj%,"Sauvegarder" : ON_MOUSE_DOWN obj%,menu : opt%(4)=obj% : obj%=obj%+1 BUTTON obj% : PARENT obj%,for% : TOP obj%,28 : LEFT obj%,445 : WIDTH obj%,23 : HEIGHT obj%,40 : CAPTION obj%,"?" : ON_MOUSE_DOWN obj%,menu : opt%(5)=obj% : obj%=obj%+1
MEMO obj% : LEFT obj%,3 : TOP obj%,70 : WIDTH obj%,464 : HEIGHT obj%,202 : FONT_NAME obj%,"Courier New" : BAR_BOTH obj% : mem%=obj% : obj%=obj%+1
PICTURE obj% : LEFT obj%,2 : TOP obj%,275 : WIDTH obj%,466 : HEIGHT obj%,22 : COLOR obj%,240,240,240 : obj%=obj%+1 ALPHA obj% : PARENT obj%,for% : LEFT obj%,2 : TOP obj%,278 : CAPTION obj%," Initialisation Ok" FONT_COLOR obj%,0,0,0 : COLOR obj%,240,240,240 : FONT_NAME obj%,"Arial" : FONT_SIZE obj%,10 : alp%(3)=obj% : obj%=obj%+1
OPEN_DIALOG 70 : filter 70,"fichiers presse papier|*.fpp" : SAVE_DIALOG 71 : filter 71,"fichiers presse papier|*.fpp"
END
menu: ' quitter IF MOUSE_LEFT_DOWN(alp%(2))=1 THEN TERMINATE FOR n%=1 TO 10 ' supprimer IF MOUSE_RIGHT_DOWN(bou%(n%))=1 IF s%<>0 THEN COLOR lum%(s%),0,255,0 : s%=0 COLOR lum%(n%),180,180,180 : CLEAR mem% : copie$(n%)="" CAPTION alp%(3)," Suppression du contenu du socket "+STR$(n%) END_IF IF MOUSE_LEFT_DOWN(bou%(n%))=1 ' inserer IF COLOR_PIXEL_GREEN(lum%(n%),5,5)=180 AND COLOR_PIXEL_BLUE(lum%(n%),5,5)=180 IF CLIPBOARD_STRING_PASTE$<>"" COLOR lum%(n%),0,0,255 : CLEAR mem% : CLIPBOARD_PASTE mem% : IF s%<>0 THEN COLOR lum%(s%),0,255,0 copie$(n%)=CLIPBOARD_STRING_PASTE$ : s%=n% : CAPTION alp%(3)," Insertion du contenu du presse papier dans le socket "+STR$(n%) ELSE CAPTION alp%(3)," Aucune insertion possible dans le socket "+STR$(n%)+". Le Presse papier est vide !" END_IF ELSE ' selectionner IF COLOR_PIXEL_GREEN(lum%(n%),5,5)=255 CLEAR mem% : CLIPBOARD_STRING_COPY copie$(n%) : CLIPBOARD_PASTE mem% IF s%<>0 THEN COLOR lum%(s%),0,255,0 s%=n% : COLOR lum%(n%),0,0,255 CAPTION alp%(3)," Chargement du contenu du socket "+STR$(n%)+" dans le presse papier" END_IF END_IF END_IF NEXT n% ' effacer mémo IF MOUSE_LEFT_DOWN(opt%(1))=1 THEN CLEAR mem% : CAPTION alp%(3)," Effacement du mémo": IF s%<>0 THEN COLOR lum%(s%),0,255,0 : s%=0 ' effacer tout IF MOUSE_LEFT_DOWN(opt%(2))=1 FOR n%=1 TO 10 : copie$(n%)="" : COLOR lum%(n%),180,180,180 : NEXT n% CLIPBOARD_STRING_COPY "" : CLEAR mem% : s%=0 CAPTION alp%(3)," Effacement complet de tous les contenus des sockets" END_IF ' charger IF MOUSE_LEFT_DOWN(opt%(3))=1 CAPTION alp%(3)," Ouverture du fichier choisi par l'utilisateur et chargement des sockets" t$=FILE_NAME$(70) IF t$<>"_" AND FILE_EXISTS(t$)=1 t$=LEFT$(t$,LEN(t$)-4) IF DIR_EXISTS(t$)<>1 THEN DIR_MAKE t$ ARCHIVER_ON : ARCHIVER_EXTRACT t$+".fpp",t$ : ARCHIVER_OFF FOR n%=1 TO 10 IF FILE_EXISTS(t$+"\"+RIGHT$("00"+STR$(n%),2)+".fpp")=1 CLEAR mem% : FILE_LOAD mem%,t$+"\"+RIGHT$("00"+STR$(n%),2)+".fpp" CLIPBOARD_COPY mem% : copie$(n%)="" : COLOR lum%(n%),0,255,0 FOR m%=1 TO COUNT(mem%) : copie$(n%)=copie$(n%)+ITEM_READ$(mem%,m%)+CHR$(13)+CHR$(10) : NEXT m% FILE_DELETE t$+"\"+RIGHT$("00"+STR$(n%),2)+".fpp" END_IF NEXT n% CLEAR mem% : DIR_REMOVE t$ ELSE CAPTION alp%(3)," Aucun chargement effectuée. Opération annulée" END_IF END_IF ' enregistrer IF MOUSE_LEFT_DOWN(opt%(4))=1 m%=0 : FOR n%=1 TO 10 : IF copie$(n%)<>"" : m%=m%+1 : END_IF : NEXT n% IF m%<>0 CAPTION alp%(3)," Sauvegarde du contenu des sockets dans un fichier choisi par l'utilisateur" t$=FILE_NAME$(71) IF FILE_EXISTS(t$)=1 THEN FILE_DELETE t$ IF t$<>"_" DIR_MAKE t$ FOR n%=1 TO 10 IF copie$(n%)<>"" THEN CLEAR mem% : CLIPBOARD_STRING_COPY copie$(n%) : CLIPBOARD_PASTE mem% : FILE_SAVE mem%,t$+"\"+RIGHT$("00"+STR$(n%),2)+".fpp" NEXT n% ARCHIVER_ON : ARCHIVER_ADD t$,t$+".fpp" : ARCHIVER_OFF FOR n%=1 TO 10 IF FILE_EXISTS(t$+"\"+RIGHT$("00"+STR$(n%),2)+".fpp")=1 THEN FILE_DELETE t$+"\"+RIGHT$("00"+STR$(n%),2)+".fpp" NEXT n% DIR_REMOVE t$ ELSE CAPTION alp%(3)," Aucune sauvegarde effectuée. Opération annulée" END_IF ELSE CAPTION alp%(3)," Aucun socket à sauvegarder. Opération annulée" END_IF END_IF ' aide IF MOUSE_LEFT_DOWN(opt%(5))=1 CLEAR mem% : IF s%<>0 THEN COLOR lum%(s%),0,255,0 : s%=0 CAPTION alp%(3)," Affichage de l'aide sur MULTICOPIES" RESTORE : REPEAT : READ t$ : IF t$<>"fin" THEN ITEM_ADD mem%,t$ : UNTIL t$="fin" ITEM_SELECT mem%,1 END_IF RETURN
' déplacement de la fenêtre deplace: OFF_MOUSE_DOWN alp%(1) x%=MOUSE_X_POSITION(alp%(1)) : y%=MOUSE_Y_POSITION(alp%(1)) REPEAT LEFT for%,LEFT(for%)+MOUSE_X_POSITION(alp%(1))-x% : TOP for%,TOP(for%)+MOUSE_Y_POSITION(alp%(1))-y% UNTIL MOUSE_LEFT_UP(alp%(1))=1 ON_MOUSE_DOWN alp%(1),deplace RETURN
' données pour affichage aide DATA "AIDE A L'UTILISATION DE MULTICOPIES :" , "------------------" , "" , "1 - INTRODUCTION" , "MULTICOPIES permet de simuler l'utilisation de plusieurs" DATA "presse papier simultanément.Son utilisation est très simple," , "et ne requière que peu de temps pour s'y habituer." , "" , "" DATA "2 - PRESENTATION" , "L'interface de MULTICOPIES se résume au minimum." , "" , "Il y a 10 boutons de sélection qui correspondent aux" DATA "10 presse papier virtuels ainsi que 10 leds au dessus." , "Les leds peuvent prendrent 3 couleurs : gris, bleu ou vert." DATA "Nous y reviendrons un peu plus loin..." , "" , "Vous découvrirez ensuite 3 boutons et en dessous un mémo." , "" DATA "Les 2 premiers boutons permettent l'effacement :" , " - Le bouton EFFACER MEMO permet de vider l'affichage du mémo." DATA " Le mémo est donc totalement libéré." , " - Le bouton EFFACER TOUT permet de vider le mémo et vide" DATA " aussi tous les sockets de mémorisation.","" , "Concernant le bouton d'aide (?), il vous permet l'affichage" DATA "de l'aide que vous consultez actuellement.","" , "Pour terminer, une barre de situation affiche tout en bas" DATA "différentes informations sur l'utilisation de MULTICOPIES.","" , "Maintenant que nous avons détaillés les différents éléments," DATA "voici leurs utilisations." , "" , "3 - MEMORISATION D'UN CONTENU DANS UN SOCKET" , "Le terme de SOCKET correspond à l'espace que vous allez" DATA "utiliser pour sauvegarder chaque presse papier virtuels." , "" , "Pour commencer, nous allons memoriser un contenu dans le" DATA "presse papier de windows par un CTRL-C classique." , "Maintenant, cliquez avec le bouton gauche de la souris" DATA "sur le bouton 1 de MULTICOPIES. Vous allez voir une led bleue" , "s'allumer. Ce qui indique qu'un texte vient d'être mis " DATA "en mémoire dans le socket correspondant." , "Immédiatement le contenu du socket s'affiche dans le mémo." , "" , "Vous pouvez maintenant reproduire cette action sur le socket 2" DATA "avec un nouveau contenu. Vous allez vous apercevoir que la" , "premiere led passe au vert, et la seconde s'allume en bleu." , "" DATA "Une led verte indique qu'un contenu est enregistré." , "Une led bleue correspond au socket sélectionné." , "Vous commencez à comprendre ?" ,"" DATA "Dès qu'un socket est sélectionné, la led passe en bleu" , "et son contenu est affiché dans le mémo." , "Cela vous indique aussi que le contenu du socket correpondant" DATA "est chargé dans le presse papier de windows." , "Il ne vous reste plus qu'a le coller ou vous souhaitez !" , "" , "4 - SUPPRESSION DU CONTENU D'UN SOCKET" DATA "Pour supprimer le contenu d'un socket, il suffit de cliquer" , "avec le bouton droit de la souris." , "Le contenu est immédiatement supprimé et la led passe en gris," DATA "Ce qui indique qu'aucun contenu n'est enregistré sur le socket." , "" , "Voila, vous savez maintenant comment utiliser MULTICOPIES !" , "" DATA "5 - EN RESUME" , "CLICK GAUCHE sur un socket" ,"Permet de charger ou sélectionner un contenu" , "" , "CLICK DROIT sur un socket" DATA "Supprime le contenu du socket sélectionné" , "" , "CLICK GAUCHE MAINTENU SUR LA BARRE DE TITRE" , "Permet le déplacement de la fenêtre" DATA "" , "CLICK GAUCHE SUR LA CROIX EN HAUT A DROITE" , "Fermeture du programme" , "" , "fin"
Dernière mise à jour du code le 03.12.2017 - version 1.02
Dernière édition par Minibug le Dim 3 Déc 2017 - 16:03, édité 6 fois | |
|