TGraphicControl avec ou sans canvas? [Résolu]

Messages postés
2684
Date d'inscription
jeudi 15 janvier 2004
Dernière intervention
26 juillet 2018
- - Dernière réponse : Caribensila
Messages postés
2684
Date d'inscription
jeudi 15 janvier 2004
Dernière intervention
26 juillet 2018
- 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
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
1015
Date d'inscription
samedi 25 octobre 2003
Dernière intervention
29 août 2013
3
Merci
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;

 

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de Guillemouze
Messages postés
1293
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
0
Merci
Bonjour,

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

Simon
Commenter la réponse de sp40
Messages postés
2684
Date d'inscription
jeudi 15 janvier 2004
Dernière intervention
26 juillet 2018
0
Merci
Merci beaucoup pour l'astuce. 
Commenter la réponse de Caribensila

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.