Pb Dessin sur Image [Résolu]

cs_Jean_Jean 639 Messages postés dimanche 13 août 2006Date d'inscription 5 mai 2016 Dernière intervention - 12 oct. 2006 à 23:33 - Dernière réponse : f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention
- 15 oct. 2006 à 17:32
Bonsoir,
[javascript:Insert_Emoticon('/imgs2/smile_approve.gif'); ] J'ai l'impression que je ne place pas le code où il faut. L'évènement on click de radiobutton ne provoque  pas le dessin sur  l'image, alors que la procédure fonctionne lors de la création de  la fiche. un coup de OnPaint, mais je n'ai pas réussi.
Je vous ai mis un extrait de code pour plus de lisibilité! moi qui voulait faire un tuto rapidos pour CS, [javascript:Insert_Emoticon('/imgs2/smile_dead.gif'); ]c'est rapé. j'ai l'impression de ne plus rien savoir faire.
Lumières de CS qui avez réponse à tout!

[javascript:Insert_Emoticon('/imgs2/smile.gif'); ]1. Dans un tutorial que je prépare pour CS, j'ai une image de fond sur laquelle, je dessine par défaut dans la méthode create de la fiche. Je n'ai pas trouvé de solution. En gérant sur OnPaint de la fiche, ça ne marche pas non plus.
  with Image2 do
  begin
    With Canvas do
    begin
      textOut(270,32,'Question');
      TheRect := Rect(51,top + 485,133,top +567);
      FrameRect(TheRect);
      BitMap1 := TBitMap.Create;
      try
        FicImage := RepExe+'BmpListe1.bmp';
        BitMap1.LoadFromFile(FicImage);
        Canvas.Draw(52,top+ 486,BitMap1);
      finally
        BitMap1.Free;
      end;
      Encadre(Image2,48,top+482); fonctionne!
...
end;
[javascript:Insert_Emoticon('/imgs2/smile_dissapprove.gif'); ]2. Sur l'image sont posés des radiobutton qui en fonction du choix dessine un cadre autour d'une zone ou l'efface : [javascript:Insert_Emoticon('/imgs2/smile_angry.gif'); ]MArche pas!!!
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
  Encadre(Image2,48,top+482); fonctionne pas!
end;
procedure TForm1.RadioButton2Click(Sender: TObject);
begin
  RazCadre(Image2,48,top+482);fonctionne pas!
end;
3. La procedure RazCadre fait la même chose que Encadre mais avec les couleurs du fond. La fonction Encadre fonctionne seulement dans l'appel de create.
Procedure TForm1.Encadre(Image : TImage;X,Y : Word);fonctionne!
var
   TheRect : TRect;
begin
  With Image do
    with canvas do
    begin
      Brush.Color : = ClWhite;
      TheRect := Rect(48,top + 482,136,top +570);
      TheRect := Rect(X,Y,X+88,Y+88);
      FrameRect(TheRect);
      Update;
  end
end;
Merci à vous
Jean_Jean
 
Afficher la suite 

Votre réponse

12 réponses

Meilleure réponse
Utilisateur anonyme - 13 oct. 2006 à 13:29
3
Merci
Je n'ai pas Delphi sous les yeux pour pouvoir t'en dire plus, mais en général on utilise le radiobutton ainsi :

procedure TForm1.Button1Click(Sender: TObject);
begin
If Radiobutton1.Checked=true then Encadre(Image2,48,top+482)
end;

Merci Utilisateur anonyme 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
Meilleure réponse
cs_Jean_Jean 639 Messages postés dimanche 13 août 2006Date d'inscription 5 mai 2016 Dernière intervention - 13 oct. 2006 à 17:13
3
Merci
[javascript:Insert_Emoticon('/imgs2/smile_dissapprove.gif');

]
Je viens de faire le test simplement avec l'image posée sur la Fiche
principale.

Le pb est le même et l'image saute.





La séquence se fait dans l’ordre suivant :




<li>




Procédure Create Form


</li>




      1.     

chargement de l’image
de fond
2.     

tracé graphique




<!--[endif]-->



<li>


Procédure On Paint appelée 2 fois de suite


</li>
<li>


Clic sur Radio Button


</li>
<li>


Procédure On Paint appelée 1 fois par appel de la procedure Encadre.




</li>


[javascript:Insert_Emoticon('/imgs2/smile.gif');

]
Donc ici, je sais pourquoi, l’image saute. C’est parce que j’avais
plusieurs appels succésifs de la procédure RazCadre. Facile à résoudre avec un
seul appel de la  procédure d’effacement.





[javascript:Insert_Emoticon('/imgs2/smile_question.gif');

]
Pour le RadioButton, je ne trouve pas !

Jean_Jean

Merci cs_Jean_Jean 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cs_Jean_Jean
Meilleure réponse
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 14 oct. 2006 à 08:07
3
Merci
tu sais que pour un with tu peu faire :

with Image.Canvas do begin

au lieu de

with Image do with Canvas do

ensuite, quand tu as deja With Image.Canvas do
ça sert a rien de refaire : Canvas.Draw()

<hr size="2" width="100%" />Croc (click me)

Merci f0xi 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de f0xi
Meilleure réponse
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 15 oct. 2006 à 12:28
3
Merci
Salut,

juste au passage
procedure TForm1.Button1Click(Sender: TObject);
begin
  If Radiobutton1.Checked= True Then Encadre(Image2,48,top+482)
end;
True n'est pas utile dans une évaluation ... True est implicitement déclaré

pour tester une condition  "True"
If Radiobutton1.Checked Then Encadre(Image2,48,top+482)

pour tester une condition  "False"
If Not Radiobutton1.Checked Then Encadre(Image2,48,top+482)
 
@+
Cirec

<hr size ="2" />

Merci Cirec 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de Cirec
Meilleure réponse
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 15 oct. 2006 à 13:25
3
Merci
à propos de :

"tu sais que pour un with tu peu faire :

with Image.Canvas do begin

au lieu de

with Image do with Canvas do"

Et si tu as besoin d'Image et de Canvas tu peux aussi faire :

With Image, Canvas Do

 
@+
Cirec

<hr size="2" />

Merci Cirec 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de Cirec
Utilisateur anonyme - 13 oct. 2006 à 08:58
0
Merci
Salut,

Déjà tu ne parles pas de l'état checké ou non du radiobutton

procedure TForm1.RadioButton1Click(Sender: TObject);
begin
If Radiobutton1.checked then Encadre(Image2,48,top+482);
end;
Commenter la réponse de Utilisateur anonyme
cs_Jean_Jean 639 Messages postés dimanche 13 août 2006Date d'inscription 5 mai 2016 Dernière intervention - 13 oct. 2006 à 10:54
0
Merci
Bj Francky23012301,

[javascript:Insert_Emoticon('/imgs2/smile.gif'); ]Merci d'avoir répondu!

[javascript:Insert_Emoticon('/imgs2/smile_shy.gif'); ]Effectivement, je ne fais pas letest. En réalité j'avais mis une ligne en plus.
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
  Radiobutton1.Checked:=true;

  Encadre(Image2,48,top+482);fonctionne pas!
end;

Je ne pensais qu'elle soit nécessaire car par simplification j'ai supposé que l'évènement onclick du bouton met à 1 le check, ce qui est le cas ici.
[javascript:Insert_Emoticon('/imgs2/smile_dissapprove.gif'); ]Le test que tu propose ne résoud pas le problème.
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
  If Radiobutton1.checked then Encadre(Image2,48,top+482);
end;
Jean_Jean
Commenter la réponse de cs_Jean_Jean
cs_Jean_Jean 639 Messages postés dimanche 13 août 2006Date d'inscription 5 mai 2016 Dernière intervention - 13 oct. 2006 à 16:35
0
Merci
[javascript:Insert_Emoticon('/imgs2/smile_approve.gif');

]C'est ce que je croyais aussi!
L'image est sur un Tabsheet. Je dessine sur l'image et les radiobuttons sont posés également sur l'image.
Lorsque je change de radiobutton, l'image saute! Cela veut dire que la fiche est redessinée. Le problème vient peut être du fait que l'image est posé sur un
tabsheet. je vais faire  un test sans tabsheet pour voir.
Jean_Jean
Commenter la réponse de cs_Jean_Jean
cs_Jean_Jean 639 Messages postés dimanche 13 août 2006Date d'inscription 5 mai 2016 Dernière intervention - 13 oct. 2006 à 19:20
0
Merci
Autant pour moi.
On va chercher compliqué alors qu'il s'agissait d'un oubli d'effacement d'une ligne qui annuler l'effet et également une erreur de position top +482 sortait du graphique.
Mes excuses francky.
Jean_jean
Commenter la réponse de cs_Jean_Jean
cs_Jean_Jean 639 Messages postés dimanche 13 août 2006Date d'inscription 5 mai 2016 Dernière intervention - 14 oct. 2006 à 08:45
0
Merci
[javascript:Insert_Emoticon('/imgs2/smile.gif');

]Merci Foxi pour ton attention.
OK, pour canvas.Draw()!
with Image.Canvas : Oui, en effet, simplement, j'avais extrait ce code d'une procédure plus importante ou j'avais besoin de me référer à des propriétés de image non accessible par le canvas.
Merci bien!
[javascript:Insert_Emoticon('/imgs2/smile.gif'); ]jean_jean
Commenter la réponse de cs_Jean_Jean
cs_Jean_Jean 639 Messages postés dimanche 13 août 2006Date d'inscription 5 mai 2016 Dernière intervention - 15 oct. 2006 à 14:05
0
Merci
Oui merci Cirec,
je l'avait constaté,logique en fait!..
jean_jean
Commenter la réponse de cs_Jean_Jean
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 15 oct. 2006 à 17:32
0
Merci
tout a fait cirec pour le with ... on oublis parfois de preciser ce qui nous semble couller de source :)

lol pour Francky qui fait des if ... = true then ...
il devait etre fatigué ... d'habitude il le fait pas.

<hr size="2" width="100%" />Croc (click me)
Commenter la réponse de f0xi

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.