TGraphicControl avec ou sans canvas? [Résolu]

Caribensila 2684 Messages postés jeudi 15 janvier 2004Date d'inscription 26 juillet 2018 Dernière intervention - 16 févr. 2009 à 23:55 - Dernière réponse : Caribensila 2684 Messages postés jeudi 15 janvier 2004Date d'inscription 26 juillet 2018 Dernière intervention
- 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
Guillemouze 1015 Messages postés samedi 25 octobre 2003Date d'inscription 29 août 2013 Dernière intervention - 17 févr. 2009 à 09:57
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;

 

Merci Guillemouze 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de Guillemouze
sp40 1293 Messages postés mardi 28 octobre 2003Date d'inscriptionContributeurStatut 3 juillet 2015 Dernière intervention - 17 févr. 2009 à 08:56
0
Merci
Bonjour,

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

Simon
Commenter la réponse de sp40
Caribensila 2684 Messages postés jeudi 15 janvier 2004Date d'inscription 26 juillet 2018 Dernière intervention - 17 févr. 2009 à 13:52
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.