WriteProperty Font (sans référence de classe en base de registre, OCX, VB6)

Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 - 29 mars 2010 à 16:57
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 - 30 mars 2010 à 11:14
Bonjour,

Je crée en ce moment un OCX à fin de remplacer le contrôle bouton de VB6 (oui je sait que sa existe déjà mais j'ai d'autre problématique sur ce bouton qu'il n'est pas utile de développé ici).
Mon objectif étant de pourvoir par la suite remplacer le type d'objet directement dans les fichiers VB (xxxx.frm) et ne rien avoir à faire de plus !
Soit remplacé la ligne (d'un fichier frm par exemple):
   Begin VB.CommandButton Command1 

Par la ligne
   Begin MonPrjOcx.MonCtrlBut Command1 

Mon problème se trouve sur la façon dont les polices de caractères sont sauvegardées.
Pour un bouton VB :
La police de caractères utilisé est sauvegardé de la façon suivante :
      BeginProperty Font
         Name            =    "Niagara Engraved"
         Size            =   8.25
         Charset         =   0
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =    0   'False
      EndProperty


Dans mon contrôle :
Quand je sauvegarde la police en utilisant la ligne de code :
PropBag.WriteProperty "Font", TestFont

(La variable "TestFont" étant un objet "StdFont")
Les données sont sauvegardées dans mon fichier de la façon suivante :
      BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851}
         Name             =   "Niagara Engraved"
         Size            =   8.25
         Charset         =   0
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty


Maintenant si je supprime la référence 0BE35... (ou que je copie les valeurs des propriétés du bouton VB) VB m'affiche une erreur (*) au moment du
Set TestFont =  PropBag.ReadProperty("Font", New StdFont)


* L'erreur :
--------
Run-time error '713':

Class not registered.
Looking for object with
CLSID:{00000000-0000-0000-0000-000000000000}
--------

Ma question est donc :
Comment faire pour lire (et écrire) cette donnée de la même façon que le contrôle bouton de VB6 (soit sans référence à une classe enregistré, enfin si j'ai bien compris le message d'erreur)

J'espère avoir été claire sur mon problème

Amicalement
1000 recherches sur Google = 1Km de voiture en CO² (réfuté par Google )
1000 recherches sur Forestle = 100 m² de forêt tropicale sauvé .
Surfez écolo

5 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
29 mars 2010 à 22:05
pourqui vouloir supprimer le clsid ?

tentes en enregistrant un type LogFont ou au pire un IFont et non un StdFont.

voir :

[www.vbfrance.com/codes/TUTORIEL-OCX-BASIQUE_32545.aspx www.vbfrance.com/codes/TUTORIEL-OCX-BASIQUE_32545.aspx]

pour exemple

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
30 mars 2010 à 10:44
Merci de ta réponse Renfield ,

Pourquoi vouloir supprimer le ClsId ?
En faite je voudrais m'éviter de l'ajouter
Mon objectif est de remplacer tout les boutons de certain form par mon bouton (directement dans les fichier frm et non depuis l'interface VB)

Le lient sur ton post ne fonctionne pas

Je n'arrive pas à utilisé Ifont ou LogFont (un bien étrange comportement avec LogFont : quand je déclare une variable sur ce type, VB passe directement le nom de ce type en majuscule, c'est qu'il existe qq part, et au moment de l'exécution je reçois une erreur "User defined type not defined"

Bon bà je pense que je vais abandonné l'idée de ne pas avoir à ajouter le ClsId (je les ajouterais au moment du changement de type dans mes fichier frm )

Amicalement
1000 recherches sur Google = 1Km de voiture en CO² (réfuté par Google )
1000 recherches sur Forestle = 100 m² de forêt tropicale sauvé .
Surfez écolo
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
30 mars 2010 à 10:52
ok...

http://www.vbfrance.com/codes/_32545.aspx

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
30 mars 2010 à 10:55
le progID correspondant à :
{0BE35203-8F91-11CE-9DE3-00AA004BB851}

est bien StdFont, dixit Regedit

(stdole.StdFontClass)

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
30 mars 2010 à 11:14
Ton projet sauvegarde ses polices de la même façon que moi...
Je commence à me dire que c'est pas possible
(oui pour le ClsId j'avais déjà été voir moi aussi )
Merci quand même pour tes recherches

Amicalement
1000 recherches sur Google = 1Km de voiture en CO² (réfuté par Google )
1000 recherches sur Forestle = 100 m² de forêt tropicale sauvé .
Surfez écolo
0
Rejoignez-nous