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 :

Procedure de colorisation


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 115
    Par défaut Procedure de colorisation
    bonsoir à tous, mon programme colore souvent des zones bien particulieres selon des rexctangles, voila donc pourquoi j'ai créé une procédure, que j'ai directement calqué de l'aide Delphi. mais cette derniere ne veux pas marcher, et je ne comprend pas vraiment pourquoi... donc je vous la présente, je suis certain que ce n'est pas grand chose...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Procedure DessinRectangeCouleur(NomImage:String;x1,x2,y1,y2:integer;Color:TColor);
    var
        MyRgn: HRGN ;
    begin
        MyRgn := CreateRectRgn(x1,x2,y1,y2);
        SelectClipRgn(TImage(NomImage).Canvas.Handle,MyRgn);
        TImage(NomImage).Canvas.Brush.Color := Color;
        TImage(NomImage).Canvas.FillRect(TImage(NomImage).Canvas.ClipRect);
        TImage(NomImage).Invalidate;
        SelectClipRgn(TImage(NomImage).Canvas.Handle,nil);
        DeleteObject(MyRgn);
    end;

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Février 2006
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 624
    Par défaut
    Bonjour

    Si ailleurs dans le code tu a bien un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NomImage := TImage.Create(self);
    puis l'appel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     DessinRectangeCouleur(NomImage, etc...
    cela doit compiler et fonctionner correctement.

  3. #3
    Expert confirmé

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Par défaut
    Tu dois déclarer ce paramètre comme étant un TImage, et non une string
    Le transtypage que tu fais plus loin est totalement abhérent ! Tu essaies de transformer une chaîne de caractère en objet !
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 115
    Par défaut
    Je m'explique, mon application genere dynamiquement des TImages, je dois donc dessiner des rectangles de couleurs sur ces dernieres, mais je dois faire ceci en fonction de leur nom qui est créé dynamiquement.
    Si j'utilise
    dans ce cas puis je utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Form1.FindComponent(NomGenereDynamquement)
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DessinRectangeCouleur(Form1.FindComponent('NomDynamique'),x,x2,y1,y2;Color);
    comme valeur dans l'appel de ma procédure?








    Form1.FindComponent

  5. #5
    Expert confirmé

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Par défaut
    Oui, à la nuance près qu'il te faut transtyper le résultat renvoyé par FindComponent en TImage, puisque cette méthode renvoie un TComponent. Tu as donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TImage(Form1.FindComponent('NomDynamique'))
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 115
    Par défaut
    Voila j'ai modifié ma procédure de cette maniere

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Procedure TForm1.DessinRectangeCouleur(Image:TImage;x1,x2,y1,y2:integer;Color:TColor);
    var
        MyRgn: HRGN ;
    begin
        MyRgn := CreateRectRgn(x1,x2,y1,y2);
        SelectClipRgn(TImage(Image).Canvas.Handle,MyRgn);
        TImage(Image).Canvas.Brush.Color := Color;
        TImage(Image).Canvas.FillRect(TImage(Image).Canvas.ClipRect);
        TImage(Image).Invalidate;
        SelectClipRgn(TImage(Image).Canvas.Handle,nil);
        DeleteObject(MyRgn);
    end;
    et le compilateur refuse la compilation sur cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SelectClipRgn(TImage(Image).Canvas.Handle,nil);
    en me disant "Types incompatible 'HRGN' et 'pointer'" alors qu'il ne me signale aucune erreur pour cette ligne...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SelectClipRgn(TImage(Image).Canvas.Handle,MyRgn);
    Bon je suis désolé, je suis absolument certain que c'est une erreur bete, mais je programme en amateur assez ponctuellement par plaisir donc...

    merci

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

Discussions similaires

  1. Apropos des Transactions au sein d'un Stored Procedure
    Par Sarbacane dans le forum Connexion aux bases de données
    Réponses: 6
    Dernier message: 16/11/2004, 08h21
  2. [VB6] Interrompre toutes procédures
    Par lutin_vert dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 10/09/2002, 11h39
  3. Declaration Type ds une procedure
    Par Qwazerty dans le forum Langage
    Réponses: 6
    Dernier message: 28/08/2002, 09h09
  4. [TP]code asm dans une procedure
    Par M.Dlb dans le forum Turbo Pascal
    Réponses: 3
    Dernier message: 17/08/2002, 20h43
  5. Reprendre une procedure dans une autre ?
    Par Poisson Rouge dans le forum Langage
    Réponses: 3
    Dernier message: 17/07/2002, 22h51

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