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

Delphi Discussion :

Comment ajouter une petite image dans un Trichedit.


Sujet :

Delphi

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 317
    Points : 88
    Points
    88
    Par défaut Comment ajouter une petite image dans un Trichedit.
    Bonjours,
    Je cherche quelque chose de très simple comment mettre une petite image dans un Trichedit en appuyant sur le bouton1. Le format de l'image jusqu'a présent je ne l'est pas encore choisi, par exemple récupérer l'image sur le disque dure et l'insérer par le bouton1 au texte a la cosition du curseur!
    Ce que je ne sais pas comment récuperer l'image pour l'inserer dans le text!
    Merci pour me faire guider, salutation et bonne journée.

  2. #2
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    C'est hyper-compliqué à faire et en plus, une fois fait, tu as l'air fin puisque si tu sauvegarde ton RichEdit, ton image n'est pas sauvegardée. Celà est dû au fait qu'un TRichEdit delphi ne gère que la version 1.1 du RTF (en fait, ça dépend de la dll windows utilisée par le composant).

    Bref, pour le faire, il te faut un composant qui gère le RTF en version 2 ou supérieure (donc qui s'adresse à la bonne dll), dans la JVCL, il y en a un.
    Bidouilleuse Delphi

  3. #3
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Si c'est vraiment "quelque chose de très simple" qui est recherché voiçi une suggestion genre système "D":

    1) Fixer la marge, par exemple de droite, du RicheEdit à une valeur au moins égale à la largeur de la "petite image".

    2) Puis faire en sorte que Click-bouton1 provoque :
    - l'apparition (création dynamique, ou par visible:=true) d'un tImage dans la marge précitée et son positionnement au même niveau que celui du curseur,
    - et le chargement du tImage à partir du fichier image sur le disque dur.

    3) Puisque la sauvegarde du RichEdit ne sauvegarde pas cette image mais qu'elle sauvegarde du texte il est possible d'utiliser la 1ère ou la dernière ligne du texte du RichEdit pour y marquer en vue de sa sauvegarde au moins le nom du chemin d'accès au fichier image (C:\...\image.bmp) de chacune des images. Ces chemins peuvent être écrits avec des caractères dont la couleur est la même que celle de l'arrière-plan du RichEdit si on veut les cacher à l'oeil, mais l'ordi saura les reconnaître ...

    Le texte et ces chemins étant ainsi sauvegardé il est ensuite possible lors d'un re-chargement du fichier *.rtf de retouver le nom des fichiers-image et avec eux de recharger les images automatiquement comme des "pièces-jointes".

    J'ai utilisé cette parade dans une petite appli sauf qu'au lieu de placer mes vignettes dans la marge je les laisse carrément se superposer au texte.

    Si le principe de cette parade vous convient on pourra rentrer dans le détail par la suite.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  4. #4
    Membre régulier Avatar de gregcat
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 155
    Points : 94
    Points
    94
    Par défaut
    tu peux le faire avec le TJvRichEdit de la bibliotheque JEDI-VCL Gratuite, ca à l'air de fonctionner correctement:

    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
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, JvExControls, JvEditorCommon, JvUnicodeEditor, jpeg, ExtCtrls,
      StdCtrls, JvExStdCtrls, JvRichEdit;
     
    type
      TForm1 = class(TForm)
        Button1: TButton;
        Image1: TImage;
        JvRichEdit1: TJvRichEdit;
        procedure Button1Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      JvRichEdit1.InsertGraphic(image1.Picture.Graphic,true);
    end;
     
    end.

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 317
    Points : 88
    Points
    88
    Par défaut
    Bonsoir,

    Avec la VCL TJvRichEdit c'est super, mais jusqu'a présent je n'est pas encore installer de composant sois disant externe. Ce que j'ai en tête c'est que dans 4 ou 5 années est-ce que tout sera est encore compatible avec les nouveaux system d'exploitations! (..être moins d'épandant d'autres...) j'ai peut-être peur des comportements étranges... je ne sais pas mais j'ai plus tendance à rester avec les composants de Delphi ou.., vous me enrichissez dans ce domain, merci pout tout, qui m'a bien élargie l'angle de m'a vision. Donc si je comprends bien DELPHI n'est pas capable de gérer simplement, un éditeur avec des Images. Je suis très preneur avec le composant TJvRichEdit, en voyant la simplicité du code ...mais je suis aussi très intéresser à la propose de Gilbert Geyer, si tu as le temps à m'expliquer un peut plus avec des exemples de programmation que je puisse faire des testes, sinon je pense je serais un peut perdu.

    Merci beaucoup à tous, salutations et bonne soirée.

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Ok pour des exemples de code, mais avant de me lancer sur des fausses pistes j'ai des questions à poser concernant les besoins.

    1) Faut-il pouvoir placer une seule ou plusieurs petite(s) image(s) dans la marge du texte ???

    2) L'utilisation du RichEdit en question est-elle destinée à un usage du type "Catalogue" ou "Notice d'utilisation" c'est à dire que le contenu du RichEdit est figé par le concepteur qui laisse à l'utilisateur uniquement la possibilité de lire sans pouvoir modifier ni le texte ni les images ???

    2bis) Où à l'inverse est-ce que texte+image(s) doivent pouvoir être modifiés par l'utilisateur du logiciel ???. (car dans ce cas il faut gérer autrement le lien qui relie le texte à l'image, dans l'exemple que j'ai donné dans mon msg précédent l'utilisateur risquerait de détruire ce lien marqué dans la même couleur que celle de l'arrière-plan pour le cacher)

    3) Le logiciel doit-il pouvoir gérer toute une collection de fichiers "texte+images" ???
    3.1) En chargeant un seul de ces fichiers à la fois ???
    3.2) Ou en chargeant tous ces fichiers en un seul coup ???

    4) Toute autre info décrivant les besoins en termes fonctionnels d'utilisation seront les bien-venus.

    A la prochaine.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  7. #7
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 317
    Points : 88
    Points
    88
    Par défaut
    Bonsoir, a vrais dire l'utilisateur à uniquement la possibilité de lire sans pouvoir modifier ni le texte ni les images. Les petites images (des symboles) peuvent être n' importe où dans le texte que je place à un endroit bien définit pendant la construction du richedit.
    L'utilisateur ne peut que seulement une fois ouvrir le fichier.
    Merci beaucoup pour les exemples et le temps que tu passe pour me les expliqués.
    Salutations

  8. #8
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Voici un bout de code que j'ai simplifié au max :

    - avec un 1er SpeedButton il "insère" la réduction d'une image de largeur fixée actuellement à 25% de la largeur du RichEdit et ceci dans la marge de droite qui s'élargit en conséquence sur toute sa hauteur. L'image y est insérée à la hauteur y du dernier click-souris pris comme pointeur de positionnement.
    On peut positionner une image sous l'autre dans la marge dans la limite de la hauteur du RichEdit en conséquence de quoi il est préférable que le texte lui aussi ne déborde pas au-delà. En fait l'image n'est pas "insérée dans le texte", elle est simplement posée par-dessus mais ça ne saute pas à l'oeil.

    - avec un 2ème SpeedButton il "Sauve et vide" le contenu du Richedit automatiquement dans un fichier nommé actuellement "TexteImages.rtf" et logé dans le même répertoire que l'Appli. Il faudrait modifier cette partie avec un SaveDialog s'il faut pouvoir créer plusieurs fichiers différents (TexteImages1.rtf, TexteImages2.rtf, ...).

    - et avec un 3ème SpeedButton il "Charge ou re-charge" n'importe quel fichier *.rtf dans le RichEdit et surtout ceux où il est joint une ou des images qu'il remet à leur place sur le RichEdit si elles existent encore à l'emplacemnt indiqué du disque dur. (Si on ouvre un tel fichier *.rtf sous Word on peut remarquer que les 1ères lignes sont codées avec, pour chaque image, un marqueur suivi du nom du fichier-image et suivi de la coordonnée y:=tant).

    Limites : Ce code ne gère pas le cas où un FormResize modifierait les dimensions du RichEdit. Par contre on pourrait faire une modif de sorte que l'on puisse au moins en phase de construction ajuster la position des images dans la marge en les glissant avec la souris.


    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
     
    interface
     
    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      ExtDlgs, StdCtrls, ComCtrls, Buttons, ExtCtrls;
     
    type
      TForm1 = class(TForm)
        Panel1: TPanel;
        bInsererImg: TSpeedButton;
        bSauverViderRichEd: TSpeedButton;
        bReChargerRichEd: TSpeedButton;
        RichEdit1: TRichEdit;
        OpenPictureDialog1: TOpenPictureDialog;
        SaveDialog1: TSaveDialog;
        OpenDialog1: TOpenDialog;
        procedure bInsererImgClick(Sender: TObject);
        procedure RichEdit1MouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure bSauverViderRichEdClick(Sender: TObject);
        procedure bReChargerRichEdClick(Sender: TObject);
      private
        { Déclarations privées }
        procedure InsererImg(nomFichierImg : string; yImg : integer);
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.DFM}
     
    const cls    = #13#10; // pour ligne ou paragraphe suivant dans un sms
          frdImg = '{i';   // Fanion de repérage des données Img parmi les données texte
     
    var   largImg,        // Largeur des images fixée à 25% de celle du RichEdit
          hautImg,        // Hauteur de d'image : calculée pour préserver les proportions
          yImg : integer; // Hauteur de positionnement de l'image dans marge de droite
     
    procedure SMS(unMessage : string); begin Showmessage(unMessage); end;
     
    function  RepAppli : string; { renvoie Rep avec \ terminal }
    begin     RepAppli:=ExtractFilePath(Application.ExeName); end;
    // < Pour simplifier, le contenu du RichEdit sera sauvé dans le répertoire
    // où l'exe de l'Appli est logé
     
    procedure TForm1.RichEdit1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin     // Récupération du y de positionnement de l'image
              yImg:=Y;
    end;
     
    procedure TForm1.InsererImg(nomFichierImg : string; yImg : integer);
    var       plImg : tPanel; img : tImage;
    begin     largImg:=RichEdit1.width div 4; // Largeur de toutes les images
              with RichEdit1 do // Dégagemment de la marge de droite
              begin SelectAll;
                    Paragraph.RightIndent:=largImg;
                    SelLength:=0;
              end;
              // Création dynamique d'un Panel qui supportera l'image
              plImg:=tPanel.create(form1);
              with plImg do // Pré-paramétrage du Panel
              begin parent:=form1;
                    caption:=nomFichierImg; // Pour se souvenir d'où vient le fichier
                    left:=RichEdit1.left+RichEdit1.width-largImg-5;
                    top:=yImg;
                    width:=largImg;
                    height:=25; // Sera corrigée plus bas
                    tag:=8888;  // Pour distinguer par rapport à d'autres Panels
              end;
              // Image : Créa dyna + Chargement et ajustement de l'image
              Img:=tImage.create(plImg);
              with Img do
              begin parent:=plImg;
                    picture.LoadFromFile(nomFichierImg);
                    left:=0; top:=0;
                    width:=LargImg;
                    height:=trunc(largImg*picture.height/picture.width);
                    Stretch:=true;
              end;
              plImg.height:=Img.Height;
    end;
     
    procedure TForm1.bInsererImgClick(Sender: TObject);
    const     filtre = 'Fichiers (*.bmp;*.ico;*.wmf;*.jpg)|*.bmp;*.ico;*.wmf;*.jpg';
    begin     OpenPictureDialog1.Filter := filtre;
              If Not (OpenPictureDialog1.Execute) Then
              begin sms('Format de fichier image non supporté'); EXIT; end;
              // Sinon insertion de l'image à hauteur préalablement pointée par la souris
              InsererImg(OpenPictureDialog1.FileName,yImg);
    end;
     
    procedure TForm1.bSauverViderRichEdClick(Sender: TObject);
    var       i : integer; nomFichierImg,syImg : string;
    begin     i:=0;
              while i<=ComponentCount - 1 do
              begin if   (Components[i] is TPanel)
                    and  ((Components[i] as TPanel).tag=8888) then
                    begin // Récupération des noms des fichiersImg + yImg
                          nomFichierImg:=frdImg+(Components[i] as TPanel).caption;
                          yImg:=(Components[i] as TPanel).top;
                          syImg:=' y:='+intToStr(yImg); // Chaîne souvenir de yImg
                          (Components[i] as TPanel).free;  // : Libération Panel + Img
                          // On sauve les syImg et nomFichierImg au début du RichEdit :
                          RichEdit1.Lines.Insert(0,nomFichierImg+syImg);
                    end else inc(i);
              end;
              // On Sauve le contenu du RichEdit :
              RichEdit1.Lines.SaveToFile(RepAppli+'TexteImages.rtf');
              // On efface le texte du RichEdit
              RichEdit1.Lines.clear;
    end;
     
    procedure TForm1.bReChargerRichEdClick(Sender: TObject);
    var       i,po,code : integer; slDImg : tStringList; st,nomFichierImg,syImg : string;
    begin     OpenDialog1.Filter := 'Fichiers (*.rtf)|*.rtf';
              OpenDialog1.Filename:='TexteImages.rtf';
              if OpenDialog1.execute then
              begin RichEdit1.Lines.LoadFromFile(OpenDialog1.Filename); //'{i'
                    // On recherche si le RichEdit1 contient des données Img
                    // repérables avec la constante frdImg au début du RichEdit1 :
                    slDImg := tStringList.create;
                    with RichEdit1 do
                    begin while pos(frdImg,lines[0])=1 do
                          begin slDImg.Add(lines[0]); // on les récupère dans une liste
                                lines.Delete(0);      // on vire la ligne
                          end
                    end;
                    for i:=0 to slDImg.count-1 do // Traitement des données Img
                    begin st:=slDImg[i];
                          Delete(st,1,length(frdImg)); // nettoyage du début de chaine
                          po:=pos('y:=',st);
                          syImg:=copy(st,po+3,length(st));
                          val(syImg,yImg,code);          // on récupère yImg
                          Delete(st,po,length(st));      // nettoyage fin de chaine
                          nomFichierImg:=trim(st);       // et voici le nomFichierImg
                          InsererImg(nomFichierImg,yImg);// on remet l'image à sa place
                    end;
                    slDImg.free;
              end;
    end;
     
    end.
    Y'aPlusQ'à copier-coller le code vers Delphi. Si ça convient on peut apporter quelques petites améliorations en restant dans les limites de la simplicité.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  9. #9
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Je voudrais appuyer la solution proposée avec la JVCL. EN effet ça permet d'être complétement propre aui niveau de la sauvegarde/restauration. Sur le plan de la pérénité cette bibliothèque est vraiment stable : donc pas d'inquiétude...

  10. #10
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 317
    Points : 88
    Points
    88
    Par défaut
    Merci beaucoup pour le code, je suis en train de étudier tout cela pour comprendre la procedure et le fonctionnement... A plus tard..

  11. #11
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Citation Envoyé par philnext
    Je voudrais appuyer la solution proposée avec la JVCL. EN effet ça permet d'être complétement propre aui niveau de la sauvegarde/restauration. Sur le plan de la pérénité cette bibliothèque est vraiment stable : donc pas d'inquiétude...
    +1
    mais si vous préférez les solutions compliquées, n'utilisez surtout pas la JVCL
    Bidouilleuse Delphi

  12. #12
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Vous me mettez l'eau à la bouche avec ce TJvRichEdit de la bibliotheque JEDI-VCL Gratuite. Mais où donc peut-on trouver soit cette bibliothèque soit ce TJvTichEdit. S.V.P ???
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  13. #13
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Citation Envoyé par Gilbert Geyer
    Vous me mettez l'eau à la bouche avec ce TJvRichEdit de la bibliotheque JEDI-VCL Gratuite. Mais où donc peut-on trouver soit cette bibliothèque soit ce TJvTichEdit. S.V.P ???
    rhoooooooooooooo le vilain !!!!!!!!!
    Waskol --> <--Gilbert

    ne jettes tu pas un oeil de temps en temps à la page Delphi du site ?
    http://delphi.developpez.com/

    ou bien à la rubrique "composants" ?
    http://delphi.developpez.com/freewares/

    En cherchant un peu, elle se trouve ici :
    http://sourceforge.net/project/showf...ease_id=494776

    Télécharge cette version, c'est la dernière en date :
    JVCL331CompleteJCL199-Build2551.zip

    Bon dev
    Bidouilleuse Delphi

  14. #14
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Le plus simple c'est d'aller là : http://sourceforge.net/project/showf...group_id=45786
    en plus elle est toute fraiche !! (elle est fraiche ma JVCL, elle est fraiche !!! )
    Pour info tu installes d'abord la JCL (les composants non visuels) puis la JVCL (les composants visuels).

  15. #15
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Citation Envoyé par philnext
    Le plus simple c'est d'aller là : http://sourceforge.net/project/showf...group_id=45786
    en plus elle est toute fraiche !! (elle est fraiche ma JVCL, elle est fraiche !!! )
    Pour info tu installes d'abord la JCL (les composants non visuels) puis la JVCL (les composants visuels).
    Trop tard, je t'ai devancé
    Bidouilleuse Delphi

  16. #16
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Re-bonjour,

    Merci à tous les deux. J'ai déjà récupré le zip JVCL331CompleteJCL199-Build2551. Bigre : presque 10000 fichiers !!! Mon Delphi 5 va se mettre au goût du jour ou exploser. ?!!? Bon on va déjà voir si j'arrive à installer d'abord JCL ensuite JVCL.

    P.S : avant internet c'était la dèche, avec internet c'est presque trop par instants.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  17. #17
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Normalement il y a des utilitaires d'installation dans la JVCL, voici la procédure à suivre, au cas où (fais attention siu tu as la RX installée : comme elle est intégrée à la JVCL, il faut la désinstaller, je parle un peu plus loin des outils de conversion pour tes programmes qui l'utilisent)

    Il faut d'abord installer la partie JCL,
    puis la partie JVCL.

    D'abord vous fermez Delphi...

    Puis, dans le répertoire ou vous avez dézippé vos fichiers (et qui sert de répertoire d'installation), donc par exemple dans :
    Citation:
    c:\Jedi\
    ... vous devez avoir deux répertoires :
    - c:\Jedi\JCL
    - c:\Jedi\JVCL


    Dans le répertoire JCL, vous cliquez sur Install.bat, et vous suivez les instructions... La JCL devrait s'instaler sans soucis.
    Maintenant que c'est fait, vous allez dans le répertoire JVCL et vous faites pareil (Install.bat).

    Si vous n'avez pas eu de message d'erreurs, vous pouvez ouvrir votre Delphi.

    Pour ce qui est de la RX, elle fait maintenant partie de la JVCL.
    il y a même un utilitaire pour convertir les projets développés avec certaines bibliothèque comme la RX et qui ont maintenant rejoint la JVCL, par contre l'utilitaire ne compile que sous Delphi 6.
    Il se trouve dans le répertoire \jvcl\devtools\JVCLConvert

    Il faudra alors indiquer à ce convertisseur, le fichier dictionnaire qui va bien et qui se trouve dans \jvcl\converter et s'appelle RxToJVCLApp.dat, puis indiquer le(s) fichier(s) du projet à convertir et lancer la conversion.
    Ca marche pas mal...

    voilà, voilà
    Bidouilleuse Delphi

  18. #18
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Citation Envoyé par waskol
    Trop tard, je t'ai devancé
    ça m'apprendra à laisser ouverts des posts et à y répondre une heure après...enfin mieux vaut trop de réponses que pas assez

  19. #19
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Re-bonjour,

    Waskol : Merci pour ces infos complémentaires. J'ai découvert votre dernier message après une tentative d'installation qui a échoué. Comme j'ai téléchargé directement via le lien associé à l'invitation qui précise qu'il s'agit de la "dernière version en date" il me semble utile de signaler que le contenu de ce Zip (JVCL331CompleteJCL199-Build2551.zip) est incomplet pour la raison suivante :

    Le lancement de l'Install.bat du dossier JCL affiche la fenêtre de suivi qui signale comme erreur fatale JediInsytaller.dpr : Fichier non trouvé JediGUIReadme.dcu... etc puis s'achève par Impossible de trouver le fichier JediInstaller.exe.

    En conséquence de quoi il est normal que l'Install.bat du dossier JVCL ait à son tour échoué avec le message d'erreur : "JCL is required but not installed".

    A mon avis il s'agit d'une erreur de jeunesse du Zip.

    J'ai supprimé les deux dossiers pour re-DéZipper le Zip et refaire l'installation et je me suis heurté aux mêmes messages.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  20. #20
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Re-bonjour,

    Ardely : A toutes fins utiles j'avais, ce matin, complété le code par une routine qui permet d'ajuster manuellement (par glisser de souris+touche Ctrl) le positionnement d'une image crée dynamiquement dans la marge d'un RichEdit via le bouton "Insérer".

    A cet effet, il faut :

    1) Ajouter sur la Form un composant Image de taille réduite dont la procedure TForm1.Image1MouseMove() sera utilisé pour traiter les évènements onMouseMove produits par les images qu'on veut faire bouger.

    2) Ajouter vers la fin de la procédure TForm1.InsererImg(nomFichierImg ....); immédiatement après l'instruction "Stretch:=true;" la nouvelle instruction " onMouseMove:=Image1MouseMove;"

    3) Puis ajouter la procédure procedure TForm1.Image1MouseMove() dont voiçi le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    // Déplacement du Panel supportant l'Image : avec appui touche-clavier-Ctrl + Glisser-Bouton-Gauche-Souris
    const     SC_DragMove = $F014;
    var       SenderBis: TObject;
    begin     if (ssCtrl in Shift) and (ssLeft in Shift) then
              begin  SenderBis:=(Sender as tImage).parent;
                     ReleaseCapture;
                     TControl(SenderBis).Perform(WM_SysCommand, SC_DragMove, 0);
              end;
    end;
    Et bonne continuation.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/09/2006, 10h14
  2. [WebForms][1.1] Comment mettre une colonne image dans un datagrid?
    Par totoche9 dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 02/07/2006, 13h49
  3. Réponses: 1
    Dernier message: 26/05/2006, 11h11
  4. Comment positionner une petite boite dans une boite ?
    Par hackrobat dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 25/10/2005, 09h37

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