Accueil > Forum > > > > Classe non trouvée dans un composant
Classe non trouvée dans un composant
mercredi 10 juin 2009 à 13:24:11 |
Classe non trouvée dans un composant

Francky23012301
|
Salut à tous  , J'ai un ptit soucis avec un composant de mon cru. Ce dernier fonctionne très bien quant je l'utilise : il n'y a pas de beugs apparents. Cependant quant je souhaite écrire ou ouvrir ce dernier dans un flux, j'ai droit à un magnifique plantage avec comme alerte "Classe TBrowserTitle non trouvée". Fonctions utilisées pour l'écriture et la lecture
{>>Procédure pour sauvegarder un projet} procedure Save_Project(DestFile:String;Components:Array Of TComponent); Var FS:TFileStream; IndexElmt:Integer; Begin //On crée FS en mode création FS:=TFileStream.Create(DestFile,fmCreate); //On essaye Try //Pour tout les éléments du tableau For IndexElmt:=Low(Components) To High(Components) Do //D'enregistrer le composant correspondant FS.WriteComponent(Components[IndexElmt]); //Finalement Finally //On libere FS FS.Free; End; End;
{>>Procédure pour ouvrir un projet} procedure Open_Project(SourceFile:String;Components:Array Of TComponent); Var FS:TFileStream; IndexElmt:Integer; Begin //On crée FS en mode lecture FS:=TFileStream.Create(SourceFile,fmOpenRead); //On essaye Try //Pour tout les éléments du tableau For IndexElmt:=Low(Components) To High(Components) Do //De lire le flux dans le composant correspondant FS.ReadComponent(Components[IndexElmt]); //Finalement Finally //On libere FS FS.Free; End; End;
Structure du composant :
Type
{>>TITLE} TBrowserTitle = class(TCustomControl) private fColorTitle:TColor; fColorSubTitle:TColor; fColorRectTitle:TColor; fTitle:String; fSubTitle:String; Procedure setColorTitle(Value:TColor); Procedure setColorSubTitle(Value:TColor); Procedure setColorRectTitle(Value:TColor); Procedure SetTitle(Value:String); Procedure SetSubTitle(Value:String); protected procedure Paint; override; procedure Resize; override; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; published Property ColorTitle:TColor Read fColorTitle Write SetColorTitle; Property ColorSubTitle:TColor Read fColorSubTitle Write SetColorSubTitle; Property ColorRectTitle:TColor Read fColorRectTitle Write SetColorRectTitle; Property Title:String Read fTitle Write SetTitle; Property SubTitle:String Read fSubTitle Write SetSubTitle; end;
{>>TSoundFont} TSoundFont = class(TCollectionItem) private fFileName: string; fName: string; fBank: integer; fOnChange: TNotifyEvent; protected procedure AssignTo(Dest : TPersistent); override; procedure Change; virtual; public constructor Create(ACollection: TCollection); override; destructor Destroy; override; procedure Assign(Source : TPersistent); override; published Property Bank:Integer Read fBank Write fBank; Property FileName:String Read fFileName Write fFileName; Property Name:String Read fName Write fName; property OnChange :TNotifyEvent read fOnChange write fOnChange; end;
{>>TSoundFontCnt} TSoundFontCnt = class(TOwnedCollection) protected function GetItem(Index: integer): TSoundFont; procedure SetItem(Index: integer; Value: TSoundFont); public constructor Create(AOwner: TPersistent); function Add: TSoundFont; property Items[Index: integer]: TSoundFont Read GetItem Write SetItem; end; TSndFntClick_Event=TNotifyEvent; TInstrClick_Event=TNotifyEvent;
{>>TBrowserMidi} TBrowserMidi = class(TCustomControl) private fSoundFont:TSoundFontCnt; fBrowserTitle:TBrowserTitle; fColorCategories:TColor; fColorSndFont:TColor; fColorInstrType:TColor; fColorInstr:TColor; fColorSelected:TColor; SndFontShowed:Boolean; InstrShowed:Integer; fOnInstrClick_Event:TInstrClick_Event; fOnSndFntClick_Event:TSndFntClick_Event; Procedure Set_ColorCategories(Value:TColor); Procedure Set_ColorSndFont(Value:TColor); Procedure Set_ColorInstrType(Value:TColor); Procedure Set_ColorInstr(Value:TColor); Procedure Set_ColorSelected(Value:TColor); Procedure Draw_Panel(Caption:String; ATop:Integer;AColor:TColor); protected procedure Paint; override; procedure Resize; override; procedure MouseDown(Button: TMouseButton;Shift: TShiftState; X, Y: Integer); override; public SoundFontSelected:Integer; InstrumentSelected:Integer; Function InstrToString(Instrument:Byte):String; constructor Create(AOwner: TComponent); override; destructor Destroy; override; published Property Color; Property ColorCategories:TColor Read fColorCategories Write Set_ColorCategories; Property ColorSndFont:TColor Read fColorSndFont Write Set_ColorSndFont; Property ColorInstr:TColor Read fColorInstr Write Set_ColorInstr; Property ColorInstrType:TColor Read fColorInstrType Write Set_ColorInstrType; Property ColorSelected:TColor Read fColorSelected Write Set_ColorSelected; Property SoundFont:TSoundFontCnt Read fSoundFont Write fSoundFont; Property BrowserTitle:TBrowserTitle Read fBrowserTitle Write fBrowserTitle; property OnSndFntClick_Event:TSndFntClick_Event Read fOnSndFntClick_Event Write fOnSndFntClick_Event; Property OnInstrClick_Event:TInstrClick_Event Read fOnInstrClick_Event Write fOnInstrClick_Event; property OnClick; property OnDblClick; property OnMouseDown; property OnMouseMove; property OnMouseUp; end;
Oncreate du composant
{>>TBrowserMidi} constructor TBrowserMidi.Create(AOwner: TComponent); begin inherited Create(AOwner); DoubleBuffered:=True; fSoundFont:=TSoundFontCnt.Create(Self); fBrowserTitle:=TBrowserTitle.Create(Self); With fBrowserTitle Do Begin Name:='BrowserTitle'; SetSubComponent(True); Parent:=Self; Top:=0; Left:=0; Height:=49; End; InstrShowed:=-1; SoundFontSelected:=-1; InstrumentSelected:=-1; SndFontShowed:=False; Color:=$00757575; fColorCategories:=$00A3A3A3; fColorSndFont:=$00CCCCD7; fColorInstr:=$00CCCCD7; fColorInstrType:=$00A3A3B6; fColorSelected:=$00CAEBF9; end;Les procédures d'écriture/lecture fonctionnent sans problèmes avec d'autres composants. Le problème vient donc du composant mais j'ai beau chercher ce qui ne va pas, je sèche sur le problème (Je pense que c'est un truc tout con mais parfois on passe devant l'évidence  ). J'en appelle donc à votre aide  . Merci d'avance 
|
|
mercredi 10 juin 2009 à 14:00:04 |
Re : Classe non trouvée dans un composant

Guillemouze
|
Réponse acceptée !
essaye RegisterClass (unité classes)
|
|
mercredi 10 juin 2009 à 14:34:21 |
Re : Classe non trouvée dans un composant

Francky23012301
|
Salut Guillemouze : je connaissais RegisterClass et cela fonctionne. Ceci dit, j'aimerai comprendre le pourquoi : en effet ici, cela devrait fonctionner sans.
|
|
mercredi 10 juin 2009 à 17:38:31 |
Re : Classe non trouvée dans un composant

Guillemouze
|
peut etre a cause de ca :
{>>TSoundFontCnt} TSoundFontCnt = class(TOwnedCollection) protected function GetItem(Index: integer): TSoundFont; procedure SetItem(Index: integer; Value: TSoundFont); public constructor Create(AOwner: TPersistent); override; function Add: TSoundFont; property Items[Index: integer]: TSoundFont Read GetItem Write SetItem; end;
|
|
mercredi 10 juin 2009 à 19:48:14 |
Re : Classe non trouvée dans un composant
|
jeudi 11 juin 2009 à 10:02:38 |
Re : Classe non trouvée dans un composant
|
jeudi 11 juin 2009 à 12:43:51 |
Re : Classe non trouvée dans un composant
|
jeudi 11 juin 2009 à 12:50:07 |
Re : Classe non trouvée dans un composant
|
jeudi 11 juin 2009 à 23:18:40 |
Re : Classe non trouvée dans un composant
|
jeudi 11 juin 2009 à 23:41:43 |
Re : Classe non trouvée dans un composant

Guillemouze
|
petite info supplementaire par rapport au code de foxi, tu peux aussi le faire avec un enum, ce qui est plus clair qu'un integer:
type TBMcolor = (sfcCategories, sfcSndFont, sfcInstr, sfcInstrType, sfcSelected);
const DefaultColors: array[TBMcolor] of TColor = ($00A3A3A3, $00CCCCD7, $00CCCCD7, $00A3A3B6, $00CAEBF9);
type TBrowserMidi = class(TCustomControl) private fColors : array[TBMcolor] of TColor; function GetColor(index: TBMcolor): TColor; procedure SetColor(index: TBMcolor; const Value: TColor); public property ColorCategories : TColor index sfcCategories read GetColor write SetColor; ...
|
|
Cette discussion est classée dans : write, property, procedure, read, tcolor
Répondre à ce message
Sujets en rapport avec ce message
Composant : Affectation d'un évènement à un autre [ par Francky23012301 ]
Salut à tous,J'ai un ptit soucis (surement très bète) mais que je n'arrive pas à résoudre :Je vous poste qu'un tout ptit bout du code (ca évitera des
TCollection : changement de stratégie [ par Francky23012301 ]
Salut à tous,Je suis entrain d'utiliser les TCollections : seulement je ne suis pas satisfait du résultat . Je vous colle la partie qui me plait pas :
Utilisation d'une classe de base [ par Francky23012301 ]
Salut à tous,J'ai une petite question à vous soumettre : J'ai fais un composant basé sur ce principe TCustomCollectionItem = class(TCollectionItem)
cast de classes [ par furax13 ]
dans mon application , j'ai une classe COoptimisation qui contient une liste de contraintes (classe COContrainte).Chaque contrainte peut être d'un typ
Problème dans un composant avec Winsock [ par Francky23012301 ]
Salut à tous,Voila un bout de composant,------------------------------unit SMTPClient; interface usesWindows,WinSock,Classes; type TIdentificat
Prob Propriété [ par cricri_forever ]
Voila j'ai un ptit prob pour mon composantpublished { Déclarations publiées } // les 3 propriétés qui sont présentes dans l'inspecteur d'objets
Plantage inspecteur d'objet [ par Oniria ]
Bonjour,Voila un gros probléme que j'ai actuellement et je ne parvients vraiment pas à comprendre. Je suis en train de développer un composant (mon pr
Composant : Propriétés qui n'apparaissent pas dans l'inspecteur d'objects [ par Francky23012301 ]
Salut à tous,Je réalise un composant en ce moment et je ne dois pas avoir les yeux en face des trous (Une ptite baisse de régime ) : TAutoWah=Class P
Composant : référence circulaire AIE !!! [ par lbensch ]
Bonjour j'aimerais savoir si quelqu'un a une idée pour le problème suivant : J'ai créé deux classes qui ont besoin l'une de l'autre tel que :TClass2 =
Problèmes classe dérivée de TPersistent [ par ThWilliam ]
Bonjour à tous.Les variables de type Record ne pouvant pas être publiées, je crée une classe dérivée de TPersistent : TMyClass = class(TPersistent)
Livres en rapport
|
Derniers Blogs
[MIX 2010] - TELECHARGEZ INTERNET EXPLORER 9 EN PREVIEW ![MIX 2010] - TELECHARGEZ INTERNET EXPLORER 9 EN PREVIEW ! par redo
La Preview de Windows Explorer 9 est maintenant disponible à l'adresse suivante : http://ie.microsoft.com/testdrive/ Cette version ne nécessite pas un redémarrage de votre machine pour être exploitée . Cette version est fonctionnelle mais reste cependant ...
Cliquez pour lire la suite de l'article par redo [MIX 2010] - KEYNOTE DAY 2 ONLINE : WINDOWS INTERNET EXPLORER 9, JQUERY, ODATA ET DALLAS CTP2 ![MIX 2010] - KEYNOTE DAY 2 ONLINE : WINDOWS INTERNET EXPLORER 9, JQUERY, ODATA ET DALLAS CTP2 ! par redo
Dans la lignée du premier keynote, retrouvez la vidéo du second keynote en ligne : Visionnez la vidéo à l'url suivante : http://www.microsoft.com/presspass/events/mix/VideoGallery.aspx Vous y retrouverez ainsi les speakers Scott Guthrie, Dean Hachamovitch...
Cliquez pour lire la suite de l'article par redo [MIX 2010] - RETOUR D'EXPéRIENCE DéVELOPPEMENT SEESMIC SUR WINDOWS PHONE 7[MIX 2010] - RETOUR D'EXPéRIENCE DéVELOPPEMENT SEESMIC SUR WINDOWS PHONE 7 par redo
En avant première, Loic le retour d'expérience de Loïc Le Meur du portage de l'application http://seesmic.com/ sur plateforme Windows Phone 7 . c'était d'ailleurs une des rares opportunités de tester, voir toucher le nouveau device . voyez par vous-même :...
Cliquez pour lire la suite de l'article par redo [MIX 2010] - LE KEYNOTE DAY 1 DISPONIBLE ONLINE ![MIX 2010] - LE KEYNOTE DAY 1 DISPONIBLE ONLINE ! par redo
Si tout comme moi, vous avez manqué de peu le premier keynote du Microsoft Mix 2010, je vous invite à prendre deux heure et le consulter ci-dessous . Visionnez le Keynote à l'url suivante : http://www.microsoft.com/Presspass/events/mix/videoGallery.aspx?c...
Cliquez pour lire la suite de l'article par redo VISUAL STUDIO TALK SHOW: EF4VISUAL STUDIO TALK SHOW: EF4 par Matthieu MEZIL
La semaine dernière, j'étais à Montréal pour y animer des conférences sur Entity Framework. J'en ai profité pour enregister un podcast Visual Studio Talk Show que vous pouvez retrouver ici ....(read more) ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL
Forum
RE : SVPRE : SVP par Caribensila
Cliquez pour lire la suite par Caribensila RE : SVPRE : SVP par f0xi
Cliquez pour lire la suite par f0xi
Logiciels
Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
|