cs_Jean_Jean
Messages postés615Date d'inscriptiondimanche 13 août 2006StatutMembreDernière intervention13 décembre 2018
-
12 oct. 2006 à 23:33
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 2022
-
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
]
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.
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 15 oct. 2006 à 12:28
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" />
Vous n’avez pas trouvé la réponse que vous recherchez ?
[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
]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
cs_Jean_Jean
Messages postés615Date d'inscriptiondimanche 13 août 2006StatutMembreDernière intervention13 décembre 20183 13 oct. 2006 à 19:20
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
cs_Jean_Jean
Messages postés615Date d'inscriptiondimanche 13 août 2006StatutMembreDernière intervention13 décembre 20183 14 oct. 2006 à 08:45
[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