IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Besoin d'aide pour création ACTIVEX (à partir de TCustomControl)


Sujet :

Langage Delphi

  1. #1
    Membre régulier
    Profil pro
    Responsable de service informatique
    Inscrit en
    Mars 2003
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2003
    Messages : 99
    Points : 108
    Points
    108
    Par défaut Besoin d'aide pour création ACTIVEX (à partir de TCustomControl)
    Je ne vois nulle part une doc qui m'aiderait à comprendre la particularité d’implémentation d'un activeX, et pourtant c'est un peu comme le jour et la nuit. Quelqu'un aurait-il un bon tuto, même en anglais ?

    Je ne comprends pas comment je dois m'y prendre pour passer d'un objet vcl customisé vers un composant activeX.

    merci de votre aide.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    c'est la suite de Creer un composant visuel activex pour formulaire et rapport access ?

    je n'ai pas envie de créer une form/fenêtre
    Pour ma part, pour ajouter un TTreeView dans Navision en 2005 en D7, avec BorderStyle = bsNone, la fenêtre conteneur ne se voit pas !

    A cote, un objet hérité de TAutoObject et implémentant IConnectionPointContainer étant le vériable objet exposant les méthodes encapsulant le TTreeView
    Ce TAutoObject instanciant la fenêtre via CreateParented

    Sinon, tu pourrais créer un composant VCL version ActiveX, c'est documenté : Création d'un contrôle ActiveX : Pour créer un nouveau contrôle ActiveX (autre qu'une fiche active)
    Génération d'un contrôle ActiveX à partir d'un contrôle VCL
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre régulier
    Profil pro
    Responsable de service informatique
    Inscrit en
    Mars 2003
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2003
    Messages : 99
    Points : 108
    Points
    108
    Par défaut
    Oui déjà vu, et je suis coincé là :

    • Concevez ou créez (ou bien obtenez le contrôle VCL personnalisé qui doit former la base de votre contrôle ActiveX.
    • Utilisez l'expert Contrôle ActiveX pour créer un contrôle ActiveX à partir du contrôle VCL créé à l'étape 1. <----ici
    • (Facultatif) Utilisez l'expert Page de propriétés ActiveX pour créer une ou plusieurs pages de propriétés pour le contrôle.
    • (Facultatif) Associez une page de propriétés à un contrôle ActiveX.
    • Recensez votre contrôle ActiveX.
    • Testez votre contrôle ActiveX avec toutes les applications cible possibles.


    Mon composant se voit parfaitement bien dans la liste des composants utilisables par l'expert, mais...il me demande le fichier symbole de l'unité. Premierement , je ne vois pas de quoi il parle, et deuxiemement quel-que-soit le dossier ciblé pas moyen de trouver ce qu'il cherche...

    J'ai donc reprit depuis le départ avec un Tcustomcontrol, (besoin du canva), mais je ne sais absolument pas par ou commencé. un exemple de projet d'un composant(vcl) et du projet active x associé (contrôle visuel ocx) me serait d'une grande aide... pour comprendre.

    merci d'avance,

  4. #4
    Membre régulier
    Profil pro
    Responsable de service informatique
    Inscrit en
    Mars 2003
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2003
    Messages : 99
    Points : 108
    Points
    108
    Par défaut
    J'ai donc prit des renseignements sur les fichiers de symboles.
    sous XE2, ils se trouvent sous: C:\Users\Public\Documents\RAD Studio\9.0\Bpl (*.rsm)

    Malheureusement, l'expert cherche des DCUs... et mes DCUs ne lui conviennent pas....

    Et oui, c'est la suite de l'autre thread; mais comme le titre c'est faire un composant VCL, le thread a aboutit. du coup j'en ai lancé un autre.

    ...

    ...

    et apres deux ou trois tours dans l'aide embarcadero, et deux jours complets de grattage cerebrale..... TADDAAAAAAA! enfin ca marche... pfiou...
    il me manquait donc:
    - la génération des fichiers symboles
    - le paramétrage du chemin de recherche des fichiers symboles
    - Et...suspens..... l’unité originale du vcl... a ajouter dans le projet bien sur...

  5. #5
    Membre régulier
    Profil pro
    Responsable de service informatique
    Inscrit en
    Mars 2003
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2003
    Messages : 99
    Points : 108
    Points
    108
    Par défaut Et donc voici un activx qui fonctionne sous access..
    en pièce jointe trouvez le projet a compiler pour obtenir l’activeX.

    Je n'ai pas encore reussi a le faire pleinement fonctionner avec Access... en fait un autre logiciel payant que j'avais testé ma pollué la vue, et j'ai cru avoir réussi..lol

    ...

    apres quelques temps, j'ai finalement compris qu'il fallait simplement enregistrer les ocx en administrateur... le dll ca passe mais pas l'ocx.
    Bref donc access trouve bien le composant et le pose parfaitement bien sur la form. Et les informations par defaut s'affichent bien dans le controle QRCODE.

    Nom : access.jpg
Affichages : 8370
Taille : 229,7 Ko

    Mais aucune des propriétés ne sont visible, ni modifiables... que faut il faire ?
    Fichiers attachés Fichiers attachés

  6. #6
    Membre régulier
    Profil pro
    Responsable de service informatique
    Inscrit en
    Mars 2003
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2003
    Messages : 99
    Points : 108
    Points
    108
    Par défaut
    J'ai donc trouvé pourquoi ca n'affiche rien, j'imagine que l'impossibilité de mettre a jour les donnée via access, et vba est du même ordre. mais je n'ai pas encore trouvé.

    en effet il suffit de créer des propriétés publiés....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     published
        { Déclarations publiées }
        property Donnees: WideString read FData write SetData;
        property Encodage: TQRCodeEncoding read FEncoding write SetEncoding;
        property Margeinterne: Integer read FQuietZone write SetQuietZone;
        property Image: TBitmap read FBitmap;
      end;
    y a t'il moyen de rendre un champs modifiable sous vba et les références de champ sous access ?

    actuellement, je peux changer à la mains,
    mais pas moyen de lui mettre une variable dans le champ via vba, ou un noms de champs.

    des idées ?

  7. #7
    Membre régulier
    Profil pro
    Responsable de service informatique
    Inscrit en
    Mars 2003
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2003
    Messages : 99
    Points : 108
    Points
    108
    Par défaut
    Bon, en fait ça marche... faut juste que je passe moins de temps sur un même problème, ça fini par fatiguer les neurones....

    En clair j'essayai de mettre a jour le champs données, en mode création de formulaire.... je pouvais toujours attendre le rafraichissement...

    un petit bemol cependant, , ca ne fonctionne pas sur un état... ce qui diminue quand même pas mal l'utilité du smilblick.

    Eh bien voilà, manque plus qu'un ptit tuto tout frais. je m'y attelle ce weekend.

    VOICI DONC EN CADEAU BIT EXTRA BONUS, UN ACTIVE X TOTALEMENT GRATUIT FREE LIBRE A TÉLÉCHARGER EN VERSION COMPLETE
    POUR AFFICHER UN QRCODE DANS ACCESS ET AUTRES....
    (cf piece jointe)
    XQRCODE.rar

    merci, quand ça vous a servit ça serais pas de trops je crois...
    n'oubliez pas que la source est sous licence apache 2.0.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2013
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Superbe ton appli

    Le source au message #7 n'est plus dispo j'ai pris celui du #5
    compilé avec les property en published mais pas visible apparement
    j'ai testé sur WINCC 7.0 , mais ça marche parfaitement
    Merci !!!!!

  9. #9
    Membre régulier
    Profil pro
    Responsable de service informatique
    Inscrit en
    Mars 2003
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2003
    Messages : 99
    Points : 108
    Points
    108
    Par défaut procedure pour un usage dans les Etats MS ACCESS
    Use with MSAccess

    The ActiveX can be inserted into your MSAccess forms and reports. If want to retrieve a value from the database before you create the barcode you can do it this way:

    1- Place an invisible text box in the detail band where the barcode resides, and set its Control Source to the appriate field in the database access.
    2- In the detail_format event of the report (or form), place the following code: me!NameOfBarCodeControl.donnees=me!MyTextControlsName

    testé, ca fonctionne parfaitement bien à l’aperçu avant impression.

    je note par contre le format pixel du qrcode trop petit pour être utilisé. je corrigerais ca dès que j'ai quelques heures devant moi.....

  10. #10
    Futur Membre du Club
    Inscrit en
    Juin 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 7
    Points : 9
    Points
    9
    Par défaut Super !!
    Bonjour,

    Super boulot ! Mais malheureusement je n'arrive pas à le mettre en oeuvre, lors de l'installation, l'objet l'OCX n'est pas reconnu. Pourriez vous m'indiquer si cela marche chez quelqu'un d'autre ? D'autre part permet-il une génération de QRCODE sans accès externe ?

    Merci d'avance !


    Citation Envoyé par megs Voir le message
    Bon, en fait ça marche... faut juste que je passe moins de temps sur un même problème, ça fini par fatiguer les neurones....

    En clair j'essayai de mettre a jour le champs données, en mode création de formulaire.... je pouvais toujours attendre le rafraichissement...

    un petit bemol cependant, , ca ne fonctionne pas sur un état... ce qui diminue quand même pas mal l'utilité du smilblick.

    Eh bien voilà, manque plus qu'un ptit tuto tout frais. je m'y attelle ce weekend.

    VOICI DONC EN CADEAU BIT EXTRA BONUS, UN ACTIVE X TOTALEMENT GRATUIT FREE LIBRE A TÉLÉCHARGER EN VERSION COMPLETE
    POUR AFFICHER UN QRCODE DANS ACCESS ET AUTRES....
    (cf piece jointe)
    XQRCODE.rar

    merci, quand ça vous a servit ça serais pas de trops je crois...
    n'oubliez pas que la source est sous licence apache 2.0.

  11. #11
    Membre régulier
    Profil pro
    Responsable de service informatique
    Inscrit en
    Mars 2003
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2003
    Messages : 99
    Points : 108
    Points
    108
    Par défaut
    MAJ de l'ocx, testé sous seven 64. et access 2010 et ptite doc.
    -------------------------------------------------------------
    QRCODE.rar

  12. #12
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Bonjour ,

    S il vous plait j'ai integrer la dll myqrcode et xqrcode (ocx) ca marche tres bien mais le probleme c'est que la taille du qrcode se redimensionne au moment de l'impression !!

    y' a il un moyen de fixer la taille du qrcode meme si le contenu du qrcode est petit !!

    Mercii d'avance

  13. #13
    Futur Membre du Club
    Inscrit en
    Décembre 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 7
    Points : 6
    Points
    6
    Par défaut QRCode
    Bonjour

    Merci pour la creation de cet OCX, il fait (presque) mon bonheur!
    Je créé un petit fichier pour éditer des badges avec un QRCode, qui seront imprimés.
    Mon soucis sur Excel est que:
    -soit j'utilise l'objet dans un userform mais je n'arrive pas à l'imprimer (userform1.printform me renvoyant l'erreur 482)
    -soit je l'insert directement dans un worksheet mais je n'arrive pas à l'actualiser (le QRCode renvoyant alors "Mes Données" en valeur)
    2 jours que je suis dessus et un petit coup de main sera le bienvenue!
    Merci d'avance

  14. #14
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    169
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 169
    Points : 68
    Points
    68
    Par défaut
    J'ai un petit problème de poste. Je réitère.
    Je teste ce composant dans Access. Ça marche nickel dans un formulaire mais le qrcode est trop petit dans un report.
    Avez-vous trouvé une solution ?
    Merci d'avance

  15. #15
    Candidat au Club
    Homme Profil pro
    --------
    Inscrit en
    Avril 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : --------

    Informations forums :
    Inscription : Avril 2017
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Bonjour et merci pour ce travail intéressant.

    Je vous écris car je fais face à un petit soucis. J'ai lu le doc word pour référencer l'ActiveX et je n'y arrive pas. J'obtiens l'erreur suivante :

    Echec du chargement du module "MyQRCODE.ocx".

    Vérifiez que le fichier binaire est stocké à l'emplacement désigné par le chemin d'accès spécifié ou déboguez-le pour rechercher d'éventuels problèmes de fichier .DLL binaires ou dépendants.

    Le module spécifié est introuvable.


    Bon vu le nombre de post indiquant que ça a fonctionné j'ai beaucoup de mal à croire au passage "déboguez-le pour rechercher d'éventuels problèmes de fichier .DLL binaires ou dépendants.".

    Si je récapitule, j'ai créé un dossier QRCODE dans C:\Programmes dans lequel j'ai collé le fichier "MyQRCODE.ocx". Après j'ai fait WIN + R et j'ai collé Regsvr32 MyQRCODE.ocx puis cliqué sur OK et je tombe sur le message précédent. J'ai fait la même action en indiquant l'adresse complète du fichier comme indiqué sur le site suivant :http://assiste.com.free.fr/p/comment...er_dll_ocx.php

    Voilà je ne saisi pas où je commets une erreur, si quelqu'un a une idée je suis preneur. Pour info je suis sous Win10 64 bits.

    Merci d'avance pour l'aide apportée!

    Fackito

  16. #16
    Membre régulier
    Profil pro
    Responsable de service informatique
    Inscrit en
    Mars 2003
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2003
    Messages : 99
    Points : 108
    Points
    108
    Par défaut
    désolé, ca fait tellement longtemps maintenant que j'ai oublié l'intégralité de la procedure de création et d'application. peut être une piste: beaucoup de choses ont été revu avec windows 10.... je ne serais pas surpris que ça vienne de là.
    POur la dimension du qrcode, oui , j'ai réglé ce problème dans une version que je n'ai pas mise e ligne a mon grand damn...vu que j'ai perdu le dossier du projet depuis... Bonne chance rien de mieux que du gratte neurone pour décrasser tout ça.

  17. #17
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2017
    Messages : 2
    Points : 1
    Points
    1
    Par défaut ZERO
    Bonjour,

    Tout d'abord merci pour ce super boulot
    qui fonctionne parfaitement mais...
    le QRCODE obtenu n'affiche pas les zéros aprés lecture!!!

    y'a t'il une raison à cela ou une solution à ce bug plutôt génant
    D'avance merci pour votre réponse même si ce post date un peu.

    amicalement
    Hassen

  18. #18
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Tu t'embête pour rien, utilise "DelphiZXIngQRCode.pas"
    Aucune installation de lib
    Je l'ai utilisé récemment pour justement car l'idée d'utiliser un QRCode pour stocker sur un tout petit code barre (moins de 1cm x 1cm) à la place d'un Code128C (numérique) ou Code168A (alphanumérique)

    Pour l'impression à partir de l'exemple avec une TComboBox en plus
    J'ai testé avec l'URL d'un site, il n'y a pas eu de zéros en plus
    Sache que certains lecteurs ajoutent des zéros parce qu'ils sont configurés ainsi, j'ai des modules qui gère les zéros non significatifs placé au début

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    unit DelphiZXingQRCodeTestAppMainForm;
     
    // Demo app for ZXing QRCode port to Delphi, by Debenu Pty Ltd
    // www.debenu.com
     
    interface
     
    uses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs, DelphiZXingQRCode, Vcl.ExtCtrls,
      Vcl.StdCtrls;
     
    type
      TForm1 = class(TForm)
        edtText: TEdit;
        Label1: TLabel;
        cmbEncoding: TComboBox;
        Label2: TLabel;
        Label3: TLabel;
        edtQuietZone: TEdit;
        Label4: TLabel;
        PaintBox1: TPaintBox;
        ComboBox1: TComboBox;
        procedure FormDestroy(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure PaintBox1Paint(Sender: TObject);
        procedure edtTextChange(Sender: TObject);
        procedure cmbEncodingChange(Sender: TObject);
        procedure edtQuietZoneChange(Sender: TObject);
        procedure PaintBox1DblClick(Sender: TObject);
      private
        QRCodeBitmap: TBitmap;
      public
        procedure Update;
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    uses Vcl.Printers, System.Math;
     
    {$R *.dfm}
     
    procedure TForm1.cmbEncodingChange(Sender: TObject);
    begin
      Update;
    end;
     
    procedure TForm1.edtQuietZoneChange(Sender: TObject);
    begin
      Update;
    end;
     
    procedure TForm1.edtTextChange(Sender: TObject);
    begin
      Update;
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      QRCodeBitmap := TBitmap.Create;
      Update;
     
      ComboBox1.Items.Assign(Printer.Printers);
      ComboBox1.ItemIndex := Printer.PrinterIndex;
    end;
     
    procedure TForm1.FormDestroy(Sender: TObject);
    begin
      QRCodeBitmap.Free;
    end;
     
    procedure TForm1.PaintBox1DblClick(Sender: TObject);
    var
      X, Y, Z, I: Integer;
      Zoom: TBitmap;
    begin
      Printer.PrinterIndex := ComboBox1.ItemIndex;
      Printer.BeginDoc();
     
      edtText.Text := 'Hello world : Delphi is PowerFull for SHINE Adventure - Minimum';
      X := 50;
      Y := 50;
      Printer.Canvas.Draw(X, Y, QRCodeBitmap);
      Inc(Y, QRCodeBitmap.Height);
     
      for I := 1 to 6 do
      begin
        Zoom := TBitmap.Create();
        try
          Z := Trunc(Power(2, I));
          edtText.Text := Format('Hello world : Delphi is PowerFull for SHINE Adventure - Zoom %dx', [Z])
          ;
          Zoom.Width := QRCodeBitmap.Width * Z;
          Zoom.Height := QRCodeBitmap.Height * Z;
          Inc(Y, 50);
          Zoom.Canvas.StretchDraw(Rect(0, 0, Z * QRCodeBitmap.Width, Z * QRCodeBitmap.Height), QRCodeBitmap);
          Printer.Canvas.Draw(X, Y, Zoom);
          Inc(Y, Z * QRCodeBitmap.Height);
        finally
          Zoom.Free();
        end;
      end;
     
      Printer.EndDoc();
    end;
     
    procedure TForm1.PaintBox1Paint(Sender: TObject);
    var
      Scale: Double;
    begin
      PaintBox1.Canvas.Brush.Color := clWhite;
      PaintBox1.Canvas.FillRect(Rect(0, 0, PaintBox1.Width, PaintBox1.Height));
      if ((QRCodeBitmap.Width > 0) and (QRCodeBitmap.Height > 0)) then
      begin
        if (PaintBox1.Width < PaintBox1.Height) then
        begin
          Scale := PaintBox1.Width / QRCodeBitmap.Width;
        end else
        begin
          Scale := PaintBox1.Height / QRCodeBitmap.Height;
        end;
        PaintBox1.Canvas.StretchDraw(Rect(0, 0, Trunc(Scale * QRCodeBitmap.Width), Trunc(Scale * QRCodeBitmap.Height)), QRCodeBitmap);
      end;
    end;
     
    procedure TForm1.Update;
    var
      QRCode: TDelphiZXingQRCode;
      Row, Column: Integer;
    begin
      QRCode := TDelphiZXingQRCode.Create;
      try
        QRCode.Data := edtText.Text;
        QRCode.Encoding := TQRCodeEncoding(cmbEncoding.ItemIndex);
        QRCode.QuietZone := StrToIntDef(edtQuietZone.Text, 4);
        QRCodeBitmap.SetSize(QRCode.Rows, QRCode.Columns);
        for Row := 0 to QRCode.Rows - 1 do
        begin
          for Column := 0 to QRCode.Columns - 1 do
          begin
            if (QRCode.IsBlack[Row, Column]) then
            begin
              QRCodeBitmap.Canvas.Pixels[Column, Row] := clBlack;
            end else
            begin
              QRCodeBitmap.Canvas.Pixels[Column, Row] := clWhite;
            end;
          end;
        end;
      finally
        QRCode.Free;
      end;
      PaintBox1.Repaint;
    end;
     
    end.
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  19. #19
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2017
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Hello,

    Merci pour ta réponse rapide,
    Je me suis mal exprimé mon besoin est pour des états ACCESS!
    ta solution ne convient donc malheureusement pas.

    cdlt
    Hassen


    Citation Envoyé par ShaiLeTroll Voir le message
    Tu t'embête pour rien, utilise "DelphiZXIngQRCode.pas"
    Aucune installation de lib
    Je l'ai utilisé récemment pour justement car l'idée d'utiliser un QRCode pour stocker sur un tout petit code barre (moins de 1cm x 1cm) à la place d'un Code128C (numérique) ou Code168A (alphanumérique)

    Pour l'impression à partir de l'exemple avec une TComboBox en plus
    J'ai testé avec l'URL d'un site, il n'y a pas eu de zéros en plus
    Sache que certains lecteurs ajoutent des zéros parce qu'ils sont configurés ainsi, j'ai des modules qui gère les zéros non significatifs placé au début

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    unit DelphiZXingQRCodeTestAppMainForm;
     
    // Demo app for ZXing QRCode port to Delphi, by Debenu Pty Ltd
    // www.debenu.com
     
    interface
     
    uses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs, DelphiZXingQRCode, Vcl.ExtCtrls,
      Vcl.StdCtrls;
     
    type
      TForm1 = class(TForm)
        edtText: TEdit;
        Label1: TLabel;
        cmbEncoding: TComboBox;
        Label2: TLabel;
        Label3: TLabel;
        edtQuietZone: TEdit;
        Label4: TLabel;
        PaintBox1: TPaintBox;
        ComboBox1: TComboBox;
        procedure FormDestroy(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure PaintBox1Paint(Sender: TObject);
        procedure edtTextChange(Sender: TObject);
        procedure cmbEncodingChange(Sender: TObject);
        procedure edtQuietZoneChange(Sender: TObject);
        procedure PaintBox1DblClick(Sender: TObject);
      private
        QRCodeBitmap: TBitmap;
      public
        procedure Update;
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    uses Vcl.Printers, System.Math;
     
    {$R *.dfm}
     
    procedure TForm1.cmbEncodingChange(Sender: TObject);
    begin
      Update;
    end;
     
    procedure TForm1.edtQuietZoneChange(Sender: TObject);
    begin
      Update;
    end;
     
    procedure TForm1.edtTextChange(Sender: TObject);
    begin
      Update;
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      QRCodeBitmap := TBitmap.Create;
      Update;
     
      ComboBox1.Items.Assign(Printer.Printers);
      ComboBox1.ItemIndex := Printer.PrinterIndex;
    end;
     
    procedure TForm1.FormDestroy(Sender: TObject);
    begin
      QRCodeBitmap.Free;
    end;
     
    procedure TForm1.PaintBox1DblClick(Sender: TObject);
    var
      X, Y, Z, I: Integer;
      Zoom: TBitmap;
    begin
      Printer.PrinterIndex := ComboBox1.ItemIndex;
      Printer.BeginDoc();
     
      edtText.Text := 'Hello world : Delphi is PowerFull for SHINE Adventure - Minimum';
      X := 50;
      Y := 50;
      Printer.Canvas.Draw(X, Y, QRCodeBitmap);
      Inc(Y, QRCodeBitmap.Height);
     
      for I := 1 to 6 do
      begin
        Zoom := TBitmap.Create();
        try
          Z := Trunc(Power(2, I));
          edtText.Text := Format('Hello world : Delphi is PowerFull for SHINE Adventure - Zoom %dx', [Z])
          ;
          Zoom.Width := QRCodeBitmap.Width * Z;
          Zoom.Height := QRCodeBitmap.Height * Z;
          Inc(Y, 50);
          Zoom.Canvas.StretchDraw(Rect(0, 0, Z * QRCodeBitmap.Width, Z * QRCodeBitmap.Height), QRCodeBitmap);
          Printer.Canvas.Draw(X, Y, Zoom);
          Inc(Y, Z * QRCodeBitmap.Height);
        finally
          Zoom.Free();
        end;
      end;
     
      Printer.EndDoc();
    end;
     
    procedure TForm1.PaintBox1Paint(Sender: TObject);
    var
      Scale: Double;
    begin
      PaintBox1.Canvas.Brush.Color := clWhite;
      PaintBox1.Canvas.FillRect(Rect(0, 0, PaintBox1.Width, PaintBox1.Height));
      if ((QRCodeBitmap.Width > 0) and (QRCodeBitmap.Height > 0)) then
      begin
        if (PaintBox1.Width < PaintBox1.Height) then
        begin
          Scale := PaintBox1.Width / QRCodeBitmap.Width;
        end else
        begin
          Scale := PaintBox1.Height / QRCodeBitmap.Height;
        end;
        PaintBox1.Canvas.StretchDraw(Rect(0, 0, Trunc(Scale * QRCodeBitmap.Width), Trunc(Scale * QRCodeBitmap.Height)), QRCodeBitmap);
      end;
    end;
     
    procedure TForm1.Update;
    var
      QRCode: TDelphiZXingQRCode;
      Row, Column: Integer;
    begin
      QRCode := TDelphiZXingQRCode.Create;
      try
        QRCode.Data := edtText.Text;
        QRCode.Encoding := TQRCodeEncoding(cmbEncoding.ItemIndex);
        QRCode.QuietZone := StrToIntDef(edtQuietZone.Text, 4);
        QRCodeBitmap.SetSize(QRCode.Rows, QRCode.Columns);
        for Row := 0 to QRCode.Rows - 1 do
        begin
          for Column := 0 to QRCode.Columns - 1 do
          begin
            if (QRCode.IsBlack[Row, Column]) then
            begin
              QRCodeBitmap.Canvas.Pixels[Column, Row] := clBlack;
            end else
            begin
              QRCodeBitmap.Canvas.Pixels[Column, Row] := clWhite;
            end;
          end;
        end;
      finally
        QRCode.Free;
      end;
      PaintBox1.Repaint;
    end;
     
    end.

  20. #20
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    C'est le problème de répondre à un sujet déjà et dans une mauvaise section (ici c'est DELPHI et non ACCESS)

    Alors je ne te conseille pas d'attendre sur le fait que Megs retrouve ses sources (c'est pas gagné puisque le projet semble ne plus exister)
    je te conseille de chercher un autre composant ActiveX QRCode qui est maintenu par une communauté ou par une société

    Consulte la section dédiée ACCESS en évoquant ce sujet comme première recherche et de laisser les connaisseurs cet outil de bureautique te répondre de façon plus pertinente.
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Besoin d'aide pour création d'un site de paris sportifs
    Par fl00w dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 16/03/2012, 16h33
  2. [XL-2007] Besoin d'aide pour création code VBA
    Par francky62000 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 29/01/2012, 22h51
  3. Réponses: 2
    Dernier message: 22/07/2009, 22h36
  4. Besoin d'aide pour lancement de fonctions à partir des touches du clavier
    Par narcis60floyjo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/03/2008, 00h08
  5. Réponses: 4
    Dernier message: 25/06/2007, 18h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo