TGraphicControl avec ou sans canvas?

Résolu
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 - 16 févr. 2009 à 23:55
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 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?


Merci

3 réponses

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

 
3
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
17 févr. 2009 à 08:56
Bonjour,

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

Simon
0
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
17 févr. 2009 à 13:52
Merci beaucoup pour l'astuce. 
0
Rejoignez-nous