TGraphicControl avec ou sans canvas? [Résolu]

Signaler
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
-
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
-
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?


Merci
A voir également:

3 réponses

Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
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;

 
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
13
Bonjour,

Quel message d'erreur te renvoie Delphi, pour ton deuxième cas ?

Simon
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
16
Merci beaucoup pour l'astuce.