Yannick
Nombre de messages : 8627 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: Editeur d étiquette avec QR évolutif Dim 15 Sep 2024 - 17:08 | |
| Chers amis Panoramiciens. Voilà un petit moment que je me tiens à l'écart du forum. Non pas que je sois en colère contre quoi que ce soit ni qui que ce soit mais par manque de temps. Depuis longtemps sans emploi suite à des problèmes de santé, je me suis investi en tant que PPDE bénévole avec l'antenne locale de TZCLD (Territoire Zéro Chômeur Longue Durée) et devinez quelle y est mon occupation.... Et oui je fais parti avec quelques autres de "l'atelier informatique". Personnellement, je préfère :" Atelier de reconditionnement des appareils informatiques", le titre est plus long mais plus près de nos activité. Nous récupérons des ordinateurs en déchetterie et par un grand organisme breton, nous les remettons en état de fonctionnement et ils sont donnés à des personnes en difficulté. Nous nous efforçons à réduire la fracture numérique à notre petite échelle. Pour la bonne gestion de cet atelier et palier aux écritures de médecin, j' essais de créer quelques petits outils. En ce moment, j'essaie de faire un éditeur d'étiquettes avec code QR pour référencer nos appareils et remplir de façon lisible (scan douchette) un formulaire de don. La plupart des éditeur d'étiquettes propose un compteur numérique mais pas un code QR associé. Le code QR, lorsqu'il est proposé, sera le même pour toute les étiquettes. Et quand l'éditeur fait le Job, il est hors de prix. J'essaie actuellement de m'appuyer sur une création de JL35 pour arriver à mes fins mais je patine dans le décodage du source. Je suis parti de 3 objets "Picture" ( P1 pour le fond avec les dimensions de l'étiquette, P2 pour le logo, P3 pour le QR) et un texte visualisé par la fonction de KGF ("WriteTextOverPicture"). J'arrive à la création de la planche A4 avec ses 65 étiquettes de texte et QR différent. Créer les QR, "finger in the noises" avec KGF mais c'est le reste qui patine et où JL35 m'a perdu . Je vais mettre d'ici quelques minute le code source en cours et un lien vers un zip. Le source est fait pour être pris en compte par le compilateur. A tous ceux qui en prendront le temps, Bonne lecture. ETIQUETTES_YG.zip- code:
- Code:
-
' Application : Editeur d'étiquettes QR code ' Version : 24.09.1 ' Auteur : Yannick GERONIMI ' Langage : Panoramic ' Dll : KGF.dll ' ============================================================================== ' ! DECLARATION DES VARIABLES ' ============================================================================== ' Incrémentation des numéros d'objet dim x% dim no% ' Retour de message dim RetMess% ' Nbre d'étiquettes dim NbEtq% ' Texte du Qr dim TxtQr$ ' Position des objets ' Logo dim PosLogoX% dim PosLogoY% ' Texte dim PosTxtX% dim PosTxtY% ' QR dim PosQrX% dim PosQrY% ' Valeur du selecteur de déplacement dim PosChxObjet% ' Fichier dispo étiquette chargé dim FicDispoLoad$ ' - ' ============================================================================== ' ! DECLARATION DES CONSTANTES SYSTEME ' ============================================================================== ' Dossiers dim Path$ dim Img$ dim Fic$ dim Tps$ ' Fichiers dim Ini$ dim Ico$ dim Dll$ dim deco$(4) dim PictIco$(9) dim FondEtq$ dim LogoEtq$ ' - ' ============================================================================== ' ! DECLARATION DES CONSTANTES D APPLICATION ' ============================================================================== ' Dimensions de l'étiquettes dim EtqMmH,EtqMmW dim EtqPxH%,EtqPxW% ' Dimensions de l'image 1 dim Img1PxH%,Img1PxW% ' Dimensions du QR Code dim QrPxH%,QrPxW% ' Marges et Espacements dim MargMmH%,MargPxH% dim MargMmG%,MargPxG% dim EspMmH%,EspPxH% dim EspMmV%,EspPxV% ' Attributs du texte dim TxtFtname$ dim TxtFtSize% dim TxtFtColor% dim TxtFtAttrib% dim TxtAngle% ' - ' ============================================================================== ' ! DECLARATION DES CONSTANTES OBJETS ' ============================================================================== dim ObjPanel% dim ObjAlpha%(10) dim ObjPict%(3) dim ObjCombo% dim ObjSpin% dim ObjCont%(3) dim ObjPictEtq% dim ObjPictLogo% dim ObjPictQr% dim ObjBtPict%(9) dim ObjCopt% dim ObjOpt%(3) dim ObjDlist% dim ObjDlistEtq% dim ObjFormPv% dim ObjODial% ' - ' ============================================================================== ' ! DECLARATION DES SOUS PROGRAMMES ' ============================================================================== label ClicCombo label ClicDirButton label ClicButton label ClicDispoEtq label Close0 label ChangeSpin ' - ' ============================================================================== ' ! AFFECTATIONS DES VALEURS AUX CONSTANTES SYSTEMES ' ============================================================================== ' Dossiers Path$ = "C:\Users\ygero\OneDrive\Bureau\GestAtelier\ETIQUETTES_YG\" : ' <== A adapter ' file_extract_path$(param_value$(0)) : < Pour version compilé Img$ = Path$+"img\" Fic$ = Path$+"fic\" Tps$ = Path$+"tps\" ' Fichiers Ini$ = Path$+"TAppareils.ini" Ico$ = Path$+"logo.ico" Dll$ = Path$+"KGF.dll" deco$(0) = Img$+"deco0.bmp" deco$(1) = Img$+"deco1.bmp" deco$(2) = Img$+"deco2.bmp" for x%=0 to 9 : PictIco$(x%) = Img$+"BtIco_"+str$(x%)+".bmp" : next x% FondEtq$ = Img$+"FdEtiquette.bmp" LogoEtq$ = Img$+"Logo.bmp" ' - ' ============================================================================== ' ! AFFECTATIONS DES VALEURS AUX CONSTANTES D APPLICATION ' ============================================================================== ' Dimensions de l'étiquettes EtqMmH = 21.20 EtqMmW = 38.00 EtqPxH% = int(EtqMmH*3.7) EtqPxW% = int(EtqMmW*3.7) ' Dimensions du logo Img1PxH% = 62 Img1PxW% = 62 ' Dimensions du QR Code QrPxH% = 55 QrPxW% = 55 ' Marges et Espacements MargMmH% = 11 MargPxH% = int(MargMmH%*3.7) MargMmG% = 10 MargPxG% = int(MargMmG%*3.7) EspMmH% = 0 EspPxH% = 0 EspMmV% = 0 EspPxV% = 0 ' Nombre d'étiquettes NbEtq% = NombreEtiquettes%(EtqPxH%,EtqPxW%,MargPxH%,MargPxG%) ' Position du logo PosLogoX% = 0 PosLogoY% = 5 ' Position du texte PosTxtX% = 68 PosTxtY% = 2 ' Attribut de texte TxtFtname$ = "Courier New" TxtFtSize% = 8 TxtFtColor% = 0 TxtFtAttrib%= 1 TxtAngle% = 0 ' Position du QR Code PosQrX% = 78 PosQrY% = 22 ' - ' ============================================================================== ' ! AFFECTATIONS DES VALEURS AUX CONSTANTES OBJETS ' ============================================================================== no%=no%+1 : ObjPanel%=no% for x%=1 to 10 : no%=no%+1 : ObjAlpha%(x%)=no% : next x% for x%=1 to 3 : no%=no%+1 : ObjPict%(x%)=no% : next x% no%=no%+1 : ObjCombo%=no% no%=no%+1 : ObjSpin% =no% for x%=1 to 3 : no%=no%+1 : ObjCont%(x%)=no% : next x% no%=no%+1 : ObjPictEtq% =no% no%=no%+1 : ObjPictLogo%=no% no%=no%+1 : ObjPictQr% =no% for x%=0 to 9 : no%=no%+1 : ObjBtPict%(x%)=no% : next x% no%=no%+1 : ObjCopt% = no% for x%=1 to 3 : no%=no%+1 : ObjOpt%(x%)=no% : next x% no%=no%+1 : ObjDlist% =no% no%=no%+1 : ObjDlistEtq%=no% no%=no%+1 : ObjFormPv%=no% no%=no%+1 : ObjODial%=no% ' - ' ============================================================================== ' ! ACTIVATION DES DLLs ' ============================================================================== dll_on Dll$ ' - ' ============================================================================== ' ! INTERFACE UTILISATEUR ' ============================================================================== BUILD_FORM0(300,450,0,0,"GTAI Etiquettes") SET_TEXT_ATTRIBUT(0,"Carlito",10,"0000",49,74,74) color 0,115,170,200 BUILD_OBJECT("PANEL",ObjPanel%,0,height_client(0)-10,width_client(0)-10,5,5,"")
' DEFINITION DU TYPE D APPAREIL BUILD_OBJECT("ALPHA",ObjAlpha%(1),ObjPanel%,0,0,10,5,"Type Appareil") BUILD_OBJECT("PICTURE",ObjPict%(1),ObjPanel%,22,22,28,5,"") if file_exists(deco$(1))=1 : file_load ObjPict%(1),deco$(1) : end_if BUILD_OBJECT("COMBO",ObjCombo%,ObjPanel%,22,120,27,27,"") on_click ObjCombo%,ClicCombo cursor_point ObjCombo%
' DEFINITION DU NUMERO DE DEPART BUILD_OBJECT("ALPHA",ObjAlpha%(2),ObjPanel%,0,0,10,165,"N° de départ") BUILD_OBJECT("PICTURE",ObjPict%(2),ObjPanel%,22,22,28,165,"") if file_exists(deco$(2))=1 : file_load ObjPict%(2),deco$(2) : end_if BUILD_OBJECT("SPIN",ObjSpin%,ObjPanel%,22,90,27,189,"") min ObjSpin%,0 : max ObjSpin%,9999
' CONSTRUCTION D UNE ETIQUETTE BUILD_OBJECT("CONTAINER",ObjCont%(1),ObjPanel%,height(ObjPanel%)-95,width(ObjPanel%)-150,50,5,"") BUILD_OBJECT("PICTURE",ObjPictEtq%,ObjCont%(1),EtqPxH%,EtqPxW%,int((height(ObjCont%(1))-EtqPxH%)/2),int((width(ObjCont%(1))-EtqPxW%)/2),"") if file_exists(FondEtq$)=1 : file_load ObjPictEtq%,FondEtq$ : end_if BUILD_OBJECT("PICTURE",ObjPictLogo%,ObjCont%(1),Img1PxH%,Img1PxW%,top(ObjPictEtq%)+PosLogoY%,left(ObjPictEtq%)+PosLogoX%,"") if file_exists(LogoEtq$)=1 : file_load ObjPictLogo%,LogoEtq$ : end_if BUILD_OBJECT("PICTURE",ObjPictQr%,ObjCont%(1),QrPxH%,QrPxW%,top(ObjPictEtq%)+PosQrY%,left(ObjPictEtq%)+PosQrX%,"") color ObjPictQr%,0,0,0 AffichTxtSurPicture(ObjPictEtq%,PosTxtX%,PosTxtY%,TxtFtName$,TxtFtSize%,TxtFtAttrib%,TxtFtColor%,TxtAngle%)
' DEPLACEMENTS DES OBJETS BUILD_OBJECT("CONTAINER",ObjCont%(2),ObjPanel%,height(ObjPanel%)-95,140,50,width(ObjPanel%)-145,"") BUILD_OBJECT("BUTTON_PICTURE",ObjBtPict%(4),ObjCont%(2),24,24,10,int((width(ObjCont%(2))-24)/2),"") button_picture_target_is_picture height ObjBtPict%(4),20 : width ObjBtPict%(4),20 if file_exists(PictIco$(4))=1 : file_load ObjBtPict%(4),PictIco$(4) : end_if cursor_point ObjBtPict%(4) on_click ObjBtPict%(4),ClicDirButton hint ObjBtPict%(4),"N"
BUILD_OBJECT("BUTTON_PICTURE",ObjBtPict%(5),ObjCont%(2),24,24,34,left(ObjBtPict%(4))+24,"") button_picture_target_is_picture height ObjBtPict%(5),20 : width ObjBtPict%(5),20 if file_exists(PictIco$(5))=1 : file_load ObjBtPict%(5),PictIco$(5) : end_if cursor_point ObjBtPict%(5) on_click ObjBtPict%(5),ClicDirButton hint ObjBtPict%(5),"E"
BUILD_OBJECT("BUTTON_PICTURE",ObjBtPict%(6),ObjCont%(2),24,24,58,int((width(ObjCont%(2))-24)/2),"") button_picture_target_is_picture height ObjBtPict%(6),20 : width ObjBtPict%(6),20 if file_exists(PictIco$(6))=1 : file_load ObjBtPict%(6),PictIco$(6) : end_if cursor_point ObjBtPict%(6) on_click ObjBtPict%(6),ClicDirButton hint ObjBtPict%(6),"S"
BUILD_OBJECT("BUTTON_PICTURE",ObjBtPict%(7),ObjCont%(2),24,24,34,left(ObjBtPict%(4))-24,"") button_picture_target_is_picture height ObjBtPict%(7),20 : width ObjBtPict%(7),20 if file_exists(PictIco$(7))=1 : file_load ObjBtPict%(7),PictIco$(7) : end_if cursor_point ObjBtPict%(7) on_click ObjBtPict%(7),ClicDirButton hint ObjBtPict%(7),"W"
' SELECTION DE L OBJET A DEPLACER BUILD_OBJECT("CONTAINER_OPTION",ObjCopt%,ObjCont%(2),70,95,82,5,"") BUILD_OBJECT("OPTION",ObjOpt%(1),ObjCopt%,20,80,10,5,"Logo") on_click ObjOpt%(1),ClicDirButton cursor_point ObjOpt%(1) BUILD_OBJECT("OPTION",ObjOpt%(2),ObjCopt%,20,80,27,5,"Texte") on_click ObjOpt%(2),ClicDirButton cursor_point ObjOpt%(2) BUILD_OBJECT("OPTION",ObjOpt%(3),ObjCopt%,20,80,44,5,"QR Code") on_click ObjOpt%(3),ClicDirButton cursor_point ObjOpt%(3)
' CHARGEMENT DES VALEURS DES EMPLACEMENTS DEPUIS UNE SAUVEGARDE BUILD_OBJECT("BUTTON_PICTURE",ObjBtPict%(8),ObjCont%(2),24,24,top(ObjCopt%)+5,width(ObjCont%(2))-34,"") button_picture_target_is_picture height ObjBtPict%(8),20 : width ObjBtPict%(8),20 if file_exists(PictIco$(8))=1 : file_load ObjBtPict%(8),PictIco$(8) : end_if cursor_point ObjBtPict%(8) on_click ObjBtPict%(8),ClicDispoEtq hint ObjBtPict%(8),"Charger une disposition enregistré" ' SAUVEGARDE DES VALEURS DES EMPLACEMENTS DANS UN FICHIER BUILD_OBJECT("BUTTON_PICTURE",ObjBtPict%(9),ObjCont%(2),24,24,top(ObjCopt%)+29,width(ObjCont%(2))-34,"") button_picture_target_is_picture height ObjBtPict%(9),20 : width ObjBtPict%(9),20 if file_exists(PictIco$(9))=1 : file_load ObjBtPict%(9),PictIco$(9) : end_if cursor_point ObjBtPict%(9) on_click ObjBtPict%(9),ClicDispoEtq hint ObjBtPict%(9),"Enregistrer la disposition"
' BOUTONS DE MENU BUILD_OBJECT("CONTAINER",ObjCont%(3),ObjPanel%,40,width(ObjPanel%)-10,height(ObjPanel%)-45,5,"") BUILD_OBJECT("BUTTON_PICTURE",ObjBtPict%(0),ObjCont%(3),30,30,7,width(ObjPanel%)-148,"") button_picture_target_is_picture height ObjBtPict%(0),24 : width ObjBtPict%(0),24 if file_exists(PictIco$(0))=1 : file_load ObjBtPict%(0),PictIco$(0) : end_if cursor_point ObjBtPict%(0) on_click ObjBtPict%(0),ClicButton hint ObjBtPict%(0),"Aide"
BUILD_OBJECT("BUTTON_PICTURE",ObjBtPict%(1),ObjCont%(3),30,30,7,width(ObjPanel%)-113,"") button_picture_target_is_picture height ObjBtPict%(1),24 : width ObjBtPict%(1),24 if file_exists(PictIco$(1))=1 : file_load ObjBtPict%(1),PictIco$(1) : end_if cursor_point ObjBtPict%(1) on_click ObjBtPict%(1),ClicButton hint ObjBtPict%(1),"Aperçu" BUILD_OBJECT("BUTTON_PICTURE",ObjBtPict%(2),ObjCont%(3),30,30,7,width(ObjPanel%)-78,"") button_picture_target_is_picture height ObjBtPict%(2),24 : width ObjBtPict%(2),24 if file_exists(PictIco$(2))=1 : file_load ObjBtPict%(2),PictIco$(2) : end_if cursor_point ObjBtPict%(2) on_click ObjBtPict%(2),ClicButton hint ObjBtPict%(2),"Imprimer" BUILD_OBJECT("BUTTON_PICTURE",ObjBtPict%(3),ObjCont%(3),30,30,7,width(ObjPanel%)-43,"") button_picture_target_is_picture height ObjBtPict%(3),24 : width ObjBtPict%(3),24 if file_exists(PictIco$(3))=1 : file_load ObjBtPict%(3),PictIco$(3) : end_if cursor_point ObjBtPict%(3) on_click ObjBtPict%(3),ClicButton hint ObjBtPict%(3),"Quitter"
' OBJET CACHE MEMOIRE TAMPON DES DERNIERS NUMEROS DES ETIQUETTES / APPAREIL BUILD_OBJECT("DLIST",ObjDlist%,0,0,0,0,0,"") ' OBJET CACHE MEMOIRE TAMPON DES VALEURS DE CONSTRUCTION D UNE ETIQUETTE BUILD_OBJECT("DLIST",ObjDlistEtq%,0,0,0,0,0,"") ' INITIALISATION DE LA LISTE DES APPAREILS InitListeAppareils() ' SELECTION DE L OBJET DEPLACABLE mark_on ObjOpt%(1) END ' - ' ============================================================================== ' ! PROCEDURE DES FENETRES ANNEXES D INTERFACE ' ============================================================================== SUB FenPreview() if object_exists(ObjFormPv%)=1 show ObjFormPv% else BUILD_OBJECT("FORM",ObjFormPv%,0,1125,778,10,10,"Preview") border_hide ObjFormPv% end_if END_SUB ' - ' ============================================================================== ' ! SOUS PROGRAMMES ' ============================================================================== ' Choix du type d'appareil ClicCombo: SelectTypeAppareil() return ' ------------------------------------------------------------------------------ ClicDirButton: if number_click = ObjOpt%(1) or number_click = ObjOpt%(2) or number_click = ObjOpt%(3) PosChxObjet% = ObjToMove%() end_if if number_click = ObjBtPict%(4) MoveToTop(PosChxObjet%) end_if if number_click = ObjBtPict%(5) MoveToRight(PosChxObjet%) end_if if number_click = ObjBtPict%(6) MoveToDown(PosChxObjet%) end_if if number_click = ObjBtPict%(7) MoveToLeft(PosChxObjet%) end_if return ' ------------------------------------------------------------------------------ ClicDispoEtq: ' Chargement d'une disposition d'étiquette if number_click = ObjBtPict%(8) FicDispoLoad$ = LoadFileDispo$() if FicDispoLoad$<>"_" file_load ObjDlistEtq%,FicDispoLoad$ PosLogoX% = val(item_read$(ObjDlistEtq%,1)) PosLogoY% = val(item_read$(ObjDlistEtq%,2)) top ObjPictLogo%,PosLogoY% : left ObjPictLogo%,PosLogoX% PosTxtX% = val(item_read$(ObjDlistEtq%,3)) PosTxtY% = val(item_read$(ObjDlistEtq%,4)) AffichTxtSurPicture(ObjPictEtq%,PosTxtX%,PosTxtY%,TxtFtName$,TxtFtSize%,TxtFtAttrib%,TxtFtColor%,TxtAngle%) PosQrX% = val(item_read$(ObjDlistEtq%,5)) PosQrY% = val(item_read$(ObjDlistEtq%,6)) top ObjPictQr%,PosQrY% : left ObjPictQr%,PosQrX% end_if end_if ' Enregistrement d'une disposition d'étiquette if number_click = ObjBtPict%(9) end_if return ' ------------------------------------------------------------------------------ ClicButton: ' Aide if number_click = ObjBtPict%(0) RetMess% = Message_information_ok("Work in progress...") end_if ' Prévisualisation de la feuille d'étiquettes if number_click = ObjBtPict%(1) if Object_exists(ObjFormPv%)=1 if show(ObjFormPv%)=1 hide ObjFormPv% else FenPreview() end_if else FenPreview() end_if end_if ' Création des QR if number_click = ObjBtPict%(2) if item_index(ObjCombo%)>1 CreationQRcodeImg(ObjPictQr%,ObjSpin%,ObjDlist%,trim$(text$(ObjCombo%)),Position(ObjSpin%),NbEtq%,QrPxH%,QrPxW%) else RetMess% = message_warning_ok("Type d'appareil incorrect !") end_if end_if ' Fermeture de l'application if number_click = ObjBtPict%(3) Dll_off Terminate end_if return ' ------------------------------------------------------------------------------ ' Fermeture par la croix Close0: Dll_off Terminate return ' ------------------------------------------------------------------------------ ' Changement de numéro de départ ChangeSpin: return ' - ' ============================================================================== ' ! PROCEDURES ' ============================================================================== ' Initialisation des objets SUB InitListeAppareils() dim_local t$,i% if file_exists(Ini$)=1 file_load ObjDlist%,Ini$ for i%=1 to count(ObjDlist%) item_add ObjCombo%,trim$(left$(item_read$(ObjDlist%,i%),30)) next i% else t$ = string$(10,"-")+string$(20,chr$(32))+"0" item_add ObjDlist%,t$ item_add ObjCombo%,string$(10,"-") end_if item_select ObjCombo%,1 position ObjSpin%,0 END_SUB ' ------------------------------------------------------------------------------ ' Déplacement vers le haut SUB MoveToTop(Nobj%) select Nobj% case 1 if PosLogoY% > 0 PosLogoY% = PosLogoY%-1 top ObjPictLogo%,top(ObjPictEtq%)+PosLogoY% else RetMess% = message_warning_ok("Opération impossible !"+chr$(13)+"L'objet sort du cadre") end_if case 2 if PosTxtY% > 0 PosTxtY% = PosTxtY%-1 AffichTxtSurPicture(ObjPictEtq%,PosTxtX%,PosTxtY%,TxtFtName$,TxtFtSize%,TxtFtAttrib%,TxtFtColor%,TxtAngle%) else RetMess% = message_warning_ok("Opération impossible !"+chr$(13)+"L'objet sort du cadre") end_if case 3 if PosQrY% > 0 PosQrY% = PosQrY%-1 top ObjPictQr%,top(ObjPictEtq%)+PosQrY% else RetMess% = message_warning_ok("Opération impossible !"+chr$(13)+"L'objet sort du cadre") end_if end_select END_SUB ' ------------------------------------------------------------------------------ ' Déplacement vers la droite SUB MoveToRight(Nobj%) select Nobj% case 1 if PosLogoX%<(width(ObjPictEtq%)-width(ObjPictLogo%)) PosLogoX%=PosLogoX%+1 left ObjPictLogo%,left(ObjPictEtq%)+PosLogoX% else RetMess% = message_warning_ok("Opération impossible !"+chr$(13)+"L'objet sort du cadre") end_if case 2 PosTxtX%=PosTxtX%+1 AffichTxtSurPicture(ObjPictEtq%,PosTxtX%,PosTxtY%,TxtFtName$,TxtFtSize%,TxtFtAttrib%,TxtFtColor%,TxtAngle%) case 3 if PosQrX%<(width(ObjPictEtq%)-width(ObjPictQr%)) PosQrX%=PosQrX%+1 left ObjPictQr%,left(ObjPictEtq%)+PosQrX% else RetMess% = message_warning_ok("Opération impossible !"+chr$(13)+"L'objet sort du cadre") end_if end_select END_SUB ' ------------------------------------------------------------------------------ ' Déplacement vers le bas SUB MoveToDown(Nobj%) select Nobj% case 1 if PosLogoY%<(height(ObjPictEtq%)-height(ObjPictLogo%)) PosLogoY% = PosLogoY%+1 top ObjPictLogo%,top(ObjPictEtq%)+PosLogoY% else RetMess% = message_warning_ok("Opération impossible !"+chr$(13)+"L'objet sort du cadre") end_if case 2 PosTxtY% = PosTxtY%+1 AffichTxtSurPicture(ObjPictEtq%,PosTxtX%,PosTxtY%,TxtFtName$,TxtFtSize%,TxtFtAttrib%,TxtFtColor%,TxtAngle%) case 3 if PosQrY%<(height(ObjPictEtq%)-height(ObjPictQr%)) PosQrY% = PosQrY%+1 top ObjPictQr%,top(ObjPictEtq%)+PosQrY% else RetMess% = message_warning_ok("Opération impossible !"+chr$(13)+"L'objet sort du cadre") end_if end_select END_SUB ' ------------------------------------------------------------------------------ ' Déplacement vers la gauche SUB MoveToLeft(Nobj%) select Nobj% case 1 if PosLogoX% > 0 PosLogoX%=PosLogoX%-1 left ObjPictLogo%,left(ObjPictEtq%)+PosLogoX% else RetMess% = message_warning_ok("Opération impossible !"+chr$(13)+"L'objet sort du cadre") end_if case 2 if PosTxtX% > 0 PosTxtX% = PosTxtX%-1 AffichTxtSurPicture(ObjPictEtq%,PosTxtX%,PosTxtY%,TxtFtName$,TxtFtSize%,TxtFtAttrib%,TxtFtColor%,TxtAngle%) else RetMess% = message_warning_ok("Opération impossible !"+chr$(13)+"L'objet sort du cadre") end_if case 3 if PosQrX% > 0 PosQrX%=PosQrX%-1 left ObjPictQr%,left(ObjPictEtq%)+PosQrX% else RetMess% = message_warning_ok("Opération impossible !"+chr$(13)+"L'objet sort du cadre") end_if end_select END_SUB ' ------------------------------------------------------------------------------ ' Sélection du type d'appareil SUB SelectTypeAppareil() dim_local t$,v% t$ = item_read$(ObjDlist%,item_index(ObjCombo%)) t$ = right$(t$,len(t$)-30) v% = val(t$) position ObjSpin%,v% END_SUB ' ------------------------------------------------------------------------------ ' Affichage du texte de l'étiquette SUB AffichTxtSurPicture(Obj%,Px%,Py%,fnt$,sz%,attr%,coul%,ang%) dim_local hnd%,pos%,res% 2d_target_is Obj% : cls TxtQr$ = "X-00000" attr% = attr% + sz%*24 + ang%*65536 hide Obj% hnd% = handle_canvas(Obj%) pos% = Px%+65536*Py% res% = DLL_CALL6("WriteTextOverPicture",hnd%,pos%,ADR(TxtQr$),ADR(fnt$),attr%,coul%) show Obj% END_SUB ' ------------------------------------------------------------------------------ ' Création des QR codes SUB CreationQRcodeImg(Obj1%,Obj2%,Obj3%,Te$,Cpte%,Ne%,h%,w%) dim_local i%,txt$,rdll%,it%,ncar% ' Création des 65 étiquettes for i%=1 to Ne% ncar%= len(str$(Cpte%+i%)) TxtQr$ = left$(Te$,1)+" - "+string$(5-ncar%,"0")+str$(Cpte%+i%) rdll% = dll_call1("SelectQRCodeType",1) rdll% = dll_call3("GenerateQRCode",w%,h%,adr(TxtQr$)) clipboard_paste Obj1% display file_save Obj1%,Tps$+"Qr"+str$(i%)+".bmp" position Obj2%,Position(Obj2%)+1 next i% ' Modification du fichier ini it% = item_index(ObjCombo%) item_delete Obj3%,it% item_insert Obj3%,it%,Te$+string$(30-len(Te$),chr$(32))+str$(Position(Obj2%)) file_save Obj3%,Ini$ END_SUB ' - ' =================================================================================== ' ! PROCEDURES DE CONSTRUCTION DES OBJETS ' =================================================================================== ' BUILD_OBJECT(Object$,Obj%,Par%,H%,W%,T%,L%,Lib$) ' BUILD_FORM0(H%,W%,T%,L%,Lib$) ' SET_TEXT_ATTRIBUT(Obj%,FtName$,FtSize%,FtStyle$,FtColR%,FtColG%,FtColB%) ' =================================================================================== ' Construction d'objets SUB BUILD_OBJECT(Object$,Obj%,Par%,H%,W%,T%,L%,Lib$) dim_local i%,ListObject$,ObjName$,Type%,Fen%,capt% ListObject$ ="SCENE3D BUTTON EDIT MEMO COMBO ALPHA FORM LIST PICTURE CHECK OPTION"+chr$(32) ListObject$ = ListObject$ + "MAIN_MENU SUB_MENU SOUND MOVIE TRACK_BAR OPEN_DIALOG SAVE_DIALOG"+chr$(32) ListObject$ = ListObject$ + "SCROLL_BAR PROGRESS_BAR SPIN GRID CONTAINER MEMO_RICH BUTTON_PICTURE DLIST SCENE2D TIMER"+chr$(32) ListObject$ = ListObject$ + "PANEL - MAIN_MENU_POP CONTAINER_OPTION OPEN_DIALOG_PIC SAVE_DIALOG_PIC SHAPE HVIEWER SERIAL LED1 DIGIT1"+chr$(32) ListObject$ = ListObject$ + "SWITCH1 IMAGE CONTAINER_TAB TAB - - SYNEDIT CHART"+chr$(32) for i%=1 to 47 ObjName$ = left$(ListObject$,instr(ListObject$,chr$(32))-1) ListObject$ = right$(ListObject$,len(ListObject$)-instr(ListObject$,chr$(32))) if ObjName$ = Object$ Type% = i% exit_for end_if next i% select Type% case 1 : Fen% = 1 : SCENE3D Obj% case 2 : Fen% = 1 : capt% = 1 : BUTTON Obj% case 3 : Fen% = 1 : EDIT Obj% case 4 : Fen% = 1 : MEMO Obj% case 5 : Fen% = 1 : COMBO Obj% case 6 : Fen% = 1 : capt% = 1 : ALPHA Obj% case 7 : Fen% = 1 : capt% = 1 : FORM Obj% case 8 : Fen% = 1 : LIST Obj% case 9 : Fen% = 1 : PICTURE Obj% case 10 : Fen% = 1 : capt% = 1 : CHECK Obj% case 11 : Fen% = 1 : capt% = 1 : OPTION Obj% case 12 : Fen% = 0 : MAIN_MENU Obj% case 13 : Fen% = 0 : capt% = 1 : SUB_MENU Obj% case 14 : Fen% = 0 : SOUND Obj% case 15 : Fen% = 0 : MOVIE Obj% case 16 : Fen% = 1 : TRACK_BAR Obj% case 17 : Fen% = 0 : OPEN_DIALOG Obj% case 18 : Fen% = 0 : SAVE_DIALOG Obj% case 19 : Fen% = 1 : SCROLL_BAR Obj% case 20 : Fen% = 1 : PROGRESS_BAR Obj% case 21 : Fen% = 1 : capt% = 1 : SPIN Obj% case 22 : Fen% = 1 : GRID Obj% case 23 : Fen% = 1 : capt% = 1 : CONTAINER Obj% case 24 : Fen% = 1 : MEMO_RICH Obj% case 25 : Fen% = 1 : capt% = 1 : BUTTON_PICTURE Obj% : button_picture_target_is_object case 26 : Fen% = 0 : DLIST Obj% case 27 : Fen% = 1 : SCENE2D Obj% case 28 : Fen% = 0 : TIMER Obj% case 29 : Fen% = 1 : capt% = 1 : PANEL Obj% case 30 case 31 : Fen% = 0 : MAIN_MENU_POP Obj% case 32 : Fen% = 1 : capt% = 1 : CONTAINER_OPTION Obj% case 33 : Fen% = 0 : OPEN_DIALOG_PIC Obj% case 34 : Fen% = 0 : SAVE_DIALOG_PIC Obj% case 35 : Fen% = 1 : SHAPE Obj% case 36 : Fen% = 1 : HVIEWER Obj% case 37 : Fen% = 0 : SERIAL Obj% case 38 : Fen% = 1 : LED1 Obj% case 39 : Fen% = 1 : capt% = 1 : DIGIT1 Obj% case 40 : Fen% = 1 : capt% = 1 : SWITCH1 Obj% case 41 : Fen% = 0 : IMAGE Obj% case 42 : Fen% = 1 : capt% = 1 : CONTAINER_TAB Obj% case 43 : Fen% = 0 : capt% = 1 : TAB Obj% case 44 case 45 case 46 : Fen% = 1 : SYNEDIT Obj% case 47 : Fen% = 1 : CHART Obj% end_select if Par%>0 parent Obj%,Par% end_if if Fen% = 1 height Obj%,H% width Obj%,W% top Obj%,T% left Obj%,L% end_if if Lib$<>"" and capt% = 1 caption Obj%,Lib$ end_if END_SUB ' ----------------------------------------------------------------------------------- ' paramètres graphiques du form 0 SUB BUILD_FORM0(H%,W%,T%,L%,Lib$) height 0,H% width 0,W% if T%=0 : top 0,(screen_y-height(0))/2 : else : top 0,T% : end_if if L%=0 : left 0,(screen_x-width(0))/2 : else : left 0,L% : end_if if Lib$<>"" : caption 0,Lib$ : end_if END_SUB ' ----------------------------------------------------------------------------------- ' Attributs du texte d'un objet SUB SET_TEXT_ATTRIBUT(Obj%,FtName$,FtSize%,FtStyle$,FtColR%,FtColG%,FtColB%) font_name Obj%,FtName$ font_size Obj%,FtSize% if mid$(FtStyle$,1,1)="1" : font_bold Obj% : else : font_bold_off Obj% : end_if if mid$(FtStyle$,2,1)="1" : font_italic Obj% : else : font_italic_off Obj% : end_if if mid$(FtStyle$,3,1)="1" : font_underline Obj% : else : font_underline_off Obj%: end_if if mid$(FtStyle$,4,1)="1" : font_strike Obj% : else : font_strike_off Obj% : end_if font_color Obj%,FtColR%,FtColG%,FtColB% END_SUB ' - ' =================================================================================== ' ! FONCTIONS ' =================================================================================== FNC NombreEtiquettes%(PHpx%,PWpx%,MHpx%,MGpx%) dim_local FHmm,FWmm,FHpx%,FWpx%,NbR%,NbC%
FHmm = 297 : FHpx% = int(FHmm*3.7)-(MHpx%*2) FWmm = 210 : FWpx% = int(FWmm*3.7)-(MGpx%*2) NbR% = int(FHpx%/PHpx%) NbC% = int(FWpx%/PWpx%) result NbC%*NbR% END_FNC ' - ' ------------------------------------------------------------------------------ ' Sélection de l'objet à déplacer sur l'étiquette FNC ObjToMove%() dim_local i% for i%=1 to 3 if checked(ObjOpt%(i%))=1 result i% exit_for end_if next i% END_FNC ' ------------------------------------------------------------------------------ FNC LoadFileDispo$() BUILD_OBJECT("OPEN_DIALOG",ObjODial%,0,0,0,0,0,"") Dir_dialog ObjODial%,Path$ Filter ObjODial%,"*.inf|*.inf" result file_name$(ObjODial%) delete ObjODial% END_FNC
| |
|