Caribensila
Messages postés2527Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention16 octobre 2019
-
16 févr. 2009 à 23:55
Caribensila
Messages postés2527Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention16 octobre 2019
-
17 févr. 2009 à 13:52
Bonsoir,
L'Aide Delphi nous dit :
« TGraphicControl fournit une propriété Canvas pour accéder à la surface de dessin du contrôle ».
Mais quand je fais, par exemple :
procedure MaProcedure(Control : TControl);
var DC : HDC;
CV : TCanvas;
begin
if Control is TWinControl
then DC := GetDC((Control as TWinControl).Handle); //-->ça passe.
if Control is TGraphicControl
then CV := (Control as TGraphicControl).Canvas; //--> Delphi a changé d'avis : ça passe pas.
end;
D'où ma question :
Comment savoir si le contrôle passé en paramètre possède un Canvas?
Guillemouze
Messages postés991Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention29 août 20136 17 févr. 2009 à 09:57
ca ne passe pas car canvas est protected sur TGraphicControl
tu peu outrepasser la protection en utilisant l'astuce suivante:
type
TMyGrpCtrl = class(TGraphicControl) end;
procedure MaProcedure(Control : TControl);
var DC : HDC;
CV : TCanvas;
begin
if Control is TWinControl
then DC := GetDC((Control as TWinControl).Handle); //-->ça passe.
if Control is TGraphicControl
then CV := (Control as TMyGrpCtrl ).Canvas;
end;