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

C++Builder Discussion :

Afficher une image dns un TImage & Inter operabilité des evenement OnMouseDown [Débutant(e)]


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2004
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2004
    Messages : 150
    Par défaut Afficher une image dns un TImage & Inter operabilité des evenement OnMouseDown
    Bonjour à tous,

    Programmeur sur C++ Borland, je suis quasi débutant en C++ (je ne fait pratiquement que des programmes en C, pour exécution sous console msdos). Et cela fait bien longtemps que je n'ai pas fait de programmes avec des fenêtres. Alors, quand je m'y remets...

    Alors mon problème, dans une application fenêtrée, est que j'ai une unité principale avec une image qui contient une séquence de code à exécuter en réaction à l'événement "OnMouseDown", laquelle appelle "Form2->ShowModal()" Ma foi, cela a bien l'air de s'exécuter si ce n'est que l'image, que par ailleurs j'ai créée dans Form2, n'apparaît pas.

    Est-ce interdit d'avoir des images dans une fenêtre appelée par showmodal ?

    Dans la foulée, lorsque vos réponses m'auront décoincé, je compte à nouveau réagir à un événement "onclick" ou "Onmousedown" sur l'image de Form2. Est-ce possible ? N'y aura-t-il pas conflit avec le même événement "onmousedown" déjà existant sur Form1->Image1 ?

    Merci de votre aide !

  2. #2
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par défaut
    Citation Envoyé par ceugniet Voir le message
    Est-ce interdit d'avoir des images dans une fenêtre appelée par showmodal ?
    Non, pas d'interdiction !
    Citation Envoyé par ceugniet Voir le message
    Dans la foulée, lorsque vos réponses m'auront décoincé, je compte à nouveau réagir à un événement "onclick" ou "Onmousedown" sur l'image de Form2. Est-ce possible ?
    Oui... L'image contenue dans Form2 est créée dynamiquement, ou bien c'est un TImage simplement posé sur le Form ?
    Citation Envoyé par ceugniet Voir le message
    N'y aura-t-il pas conflit avec le même événement "onmousedown" déjà existant sur Form1->Image1 ?
    Tu as un événement OnClick défini sur Form1, un autre défini sur Form2, chacun exécutant son propre code... A moins de tomber dans un cas très scabreux, pas de conflit à prévoir...
    Bon courage !

  3. #3
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2004
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2004
    Messages : 150
    Par défaut
    Merci pour ta réponse rapide !

    Citation Envoyé par totoche76 Voir le message
    L'image contenue dans Form2 est créée dynamiquement, ou bien c'est un TImage simplement posé sur le Form ?
    Je ne sais même pas comment créer une image dynamiquement ! C'est effectivement un TImage posé sur le Form. Dans TForm2::FormCreate, j'ai placé du code qui définit l'image, ses dimensions, sa position, j'ai donné un petit coup de peinture Rouge, histoire de la voir bien, et j'ai placé un commentaire sur un memo qui atteste que tout cela a bien été fait. Mais je ne vois toujours pas l'image, alors que je vois bien Form2 apparaître.

    Maintenant que j'y pense, je me demande si ce n'est pas à cause de certains changements que j'ai faits dans la définition de Form2. Comme je ne voulais pas d'entête (le nom de la fenêtre, les trois commandes système...), j'ai choisi dans BorderIcons false pour les 4 variables biSystemMenu, biMinimize, biMaximize et biHelp, Borderstyle est "none", Borderwidth est 0, FormStyle est fsMDIForm. Mais je ne comprends pas grand-chose à tous ces paramètres...

    Merci d'avance de ton aide !

  4. #4
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par défaut
    Les propriétés que tu as modifiées sur TForm2 ne devraient pas gêner (même si je parie que tu aurais pu laisser FormStyle sur fsNormal...)
    Le pépin doit être dans ton FormCreate... Il ressemble à quoi ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2004
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2004
    Messages : 150
    Par défaut
    Citation Envoyé par totoche76 Voir le message
    Le pépin doit être dans ton FormCreate... Il ressemble à quoi ?
    Ben le voilà !

    (h1,h2,wt,h0 et message[100] sont des variables globales définies dans unit2)

    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
    void __fastcall TForm2::FormCreate(TObject *Sender)
    {
       h1=1;
       h2=3;
       wt=300;
       h0=(wt-2*h2-2*h1)/3;
       wt=2*h2+2*h1+3*h0;
       Height=wt+200;
       Width=wt+200;
       int del=Height-ClientHeight;
       Height=wt+del+Button1->Height+20;
       del=Width-ClientWidth;
       Width=wt+del;
       Button2->Left=Width/4-Button2->Width/2;
       Button1->Left=Width*3/4-Button1->Width/2;
       Button2->Top=Height-Button2->Height-10;
       Button1->Top=Height-Button1->Height-10;
       Image1->Top=0;
       Image1->Left=0;
       Form2->Image1->Width=ClientWidth;
       Form2->Image1->Height=ClientHeight;
       sprintf(message,"image width=%d height=%d mise en couleur",Image1->Width,Image1->Height);
       Form1->Memo1->Lines->Add(AnsiString(message));
       sprintf(message,"Image top et left %d  %d",Image1->Top,Image1->Left);
       Form1->Memo1->Lines->Add(AnsiString(message));
       Form2->Image1->Canvas->Brush->Color=clRed;
       Form2->Image1->Canvas->FillRect(Rect(0,0,Image1->Width,Image1->Height));
    }

  6. #6
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par défaut
    L'image s'affiche, enfin plus exactement le fond rouge que tu utilises pour "écraser" ton image s'affiche...
    Tu voudrais avoir l'image par dessus le fond rouge ?

  7. #7
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 351
    Par défaut
    Citation Envoyé par ceugniet Voir le message
    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
    void __fastcall TForm2::FormCreate(TObject *Sender)
    {
       h1=1;
       h2=3;
       wt=300;
       h0=(wt-2*h2-2*h1)/3;
       wt=2*h2+2*h1+3*h0;
       Height=wt+200;
       Width=wt+200;
       int del=Height-ClientHeight;
       Height=wt+del+Button1->Height+20;
       del=Width-ClientWidth;
       Width=wt+del;
       Button2->Left=Width/4-Button2->Width/2;
       Button1->Left=Width*3/4-Button1->Width/2;
       Button2->Top=Height-Button2->Height-10;
       Button1->Top=Height-Button1->Height-10;
       Image1->Top=0;
       Image1->Left=0;
       Form2->Image1->Width=ClientWidth;
       Form2->Image1->Height=ClientHeight;
       sprintf(message,"image width=%d height=%d mise en couleur",Image1->Width,Image1->Height);
       Form1->Memo1->Lines->Add(AnsiString(message));
       sprintf(message,"Image top et left %d  %d",Image1->Top,Image1->Left);
       Form1->Memo1->Lines->Add(AnsiString(message));
       Form2->Image1->Canvas->Brush->Color=clRed;
      Form2->Image1->Canvas->FillRect(Rect(0,0,Image1->Width,Image1->Height));
    }
    C'est un peu bizarre parce que tu modifies la taille de ton image en utilisant la variable "Form2" alors que tu es dans le OnCreate d'une instance ^de TForm2 qui est peut-être différente (voire égale à zéro)...

    Essaye de remplacer le "Form2" dans ton code ci-dessus par "this".

    Si tu ne vois toujours rien, je te propose d'essayer de démarrer ta fiche sans modifier la taille de l'image, ou alors de la mettre sa propriété "Align" à "alClient" pour qu'elle s'adapte toute seule pour occuper tout l'espace disponible.

Discussions similaires

  1. Afficher une image d'un TWebBrowser dans un Timage !
    Par cincap dans le forum Débuter
    Réponses: 1
    Dernier message: 26/08/2013, 12h48
  2. Afficher une image JPG qui se trouve dans une bdd
    Par Harry dans le forum Bases de données
    Réponses: 6
    Dernier message: 27/02/2004, 10h51
  3. Charger et afficher une image jpg avec les mfc
    Par glop - pas glop dans le forum MFC
    Réponses: 3
    Dernier message: 11/02/2004, 18h59
  4. Réponses: 2
    Dernier message: 04/02/2004, 22h32
  5. Afficher une image sans passer par les textures
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/05/2003, 19h13

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