Hello !!

J'ai un soucis, c'est que j'ai créé un composant multifonction en delphi7 pour mon tuteur qui devait l'intégrer a son soft, celui-ci fonctionne presque parfaitement mais au moment de l'installer dans son programme (qui est en delphi X3)... celui-ci ne fonctionne plus. Il reçoit à l'execution des messages d'erreurs qui disent que certaines propriétés n'existent pas... sachant qu'elles fonctionnent très bien avant l'execution et qu'elle fonctionne même après sur mon programme en delphi7.


Si quelqu'un pouvait trouver d'où vien le soucis ça me rendrais un grand service !!

je vous met le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
unit flow_Step;
interface
uses
  SysUtils, Classes,Windows, Controls, Graphics,Messages,
  ExtCtrls,StdCtrls,JvComponent, ImgList,Dialogs,JvEdit;
type
 
  TDetail =class(TPersistent)
  private
    { Déclarations privées }
      Edit1:Tedit;
      FComboEdit : boolean;
      FEditMsg : string;
      //ma combobox
      chx: TComboBox;
      FModifChx : boolean;
      FLargeurChx : integer;
      ImgLargeurPanel : Timage;
 
  protected
    { Déclarations protégées }
  public
    { Déclarations publiques }
     //choisir entre combobox ou edit
     Procedure SetChoixComboEdit (choix : boolean);
 
     //remplir le text de l'edit
     Procedure SetEditMessage (mess : string);
 
     Procedure SetModifChx (value : boolean);
 
     procedure SetLargeurChx (value : integer);
 
     procedure RedimDetail ();
 
  published
 
    //combobox
    property ChxItems : TCombobox read chx write Chx;
 
    //On met une combobox ou un edit
    Property ChxVisible : boolean read FComboEdit write SetChoixComboEdit;
 
    //message dans l'edit
    property EditTxt : string read FEditMsg write SetEditMessage;
 
    property ModifChx : boolean read FModifChx write SetModifChx;
 
    property LargeurChx : integer read FlargeurChx write SetLargeurChx;
 
 
  end;
 
 
  TEntete =class(TPersistent)
  private
     //titre
  //mon label
    Label1: Tlabel;
    FLabelTitre: string;
    FLabelCouleur : Tcolor;
    SharpCouleur : Tcolor;
    FTitreCentrer : TAlignment;
    FTitrePolice : Tcolor;
    //fond gris
    Shape1: TShape;
    //indice pour changer la couleur de la led
    FLedCoul: integer;
    //led visible ou non
    FLEDBoolVisible:boolean;
    //Ma liste d'image
    FImgList: TImageList;
    FImgDessin:integer;
    //Mon emplacement d'image
     Img: TImage;
     ImgNb : integer;
     //controle pour savoir si il faut recentrer le titre
     ImgExist : boolean;
    //ma led
     shapeLED: Tshape;
 
  protected
    { Déclarations protégées }
       procedure RedimLabel(value : integer);
  public
    { Déclarations publiques }
 
    //couleur du shape
     Procedure SharpsetCouleur (SColor:Tcolor);
 
    //La couleur de fond ne fonctionne pus sans cette propriété(?)
     property Titre2FondCouleur : Tcolor read SharpCouleur write SharpsetCouleur;
 
     //On choisi comment est-ce qu'on centre le titre
     procedure SetTitreAlignment (value : Talignment);
 
     //Couleur de police du titre
     Procedure SetTitrePolice (couleur:Tcolor);
 
     //On met le titre de notre composant en changeant le caption du label
     procedure SetLabelTitre(value : string);
 
     //couleur du label
     Procedure SetLabelCouleur (LColor:Tcolor);
 
       //changement d'indice pour l'image
     procedure SetImgChange(valIndex:integer);
     //permet de récupérer une liste d'image
     procedure SetImgList(ImgNewList: TImageList);
 
 
     //On défini si la led doit être visible ou non
     procedure SetLedVisible (LEDvisu : Boolean);
     //défini la couleur de la led
     procedure SetLedCouleur (Coul : integer);
 
 
 
  published
     //centrage du titre
    property Titre_Align : Talignment read FTitreCentrer write SetTitreAlignment;
 
    Property Titre_CoulTxt : Tcolor read FTitrePolice write SetTitrePolice;
 
    //couleur sharp
    Property Titre_CoulFond :Tcolor read FLabelCouleur write SetLabelCouleur ;
 
    //change l'édit
    property Titre : string read FLabelTitre write SetLabelTitre;
 
    //change la couleur de la led (-1 gris, 0rouge et 1bleu)
    property LedCouLeur : integer read FLedCoul write SetLedCouleur;
 
    //led visible ou non
    property LedVisible : boolean read FLEDBoolVisible write SetLedVisible;
 
    //crée la liste d'images
    property Images: TImageList read FImgList write SetImgList;
 
    //on dessine
    property ImgIndex : integer read FImgDessin  write SetImgChange default -1;
 
  end;
 
  type
  FlowStep4 = class(TCustomPanel)
  private
     {Déclarations privées}
     //FNum : integer;
     Ftitre : TEntete;
     Fdetail : TDetail;
     procedure SetTitre(const Value: TEntete);
     procedure SetDetail (const Value: TDetail);
 
  protected
    { Déclarations protégées }
    procedure Resize; override;
 
  public
    { Déclarations publiques }
 
    Ftaille : integer;
    Fhauteur : integer;
    //On construit le composant
     constructor Create(AOwner: TComponent); override;
     //on détruit le composant
     Destructor  Destroy; override;
     //fixer un numero a notre composant
    // procedure setNum (nb : integer);
 
  published
 ////////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////////
    property Anchors         ; //
    property Autosize        ; //
    property BevelWidth      ; //
    property BiDiMode        ; //
    property BorderStyle     ; //
    property BorderWidth     ; //
    property Caption         ; //
    property Color           ; //
    property Constraints     ; //
    property Ctl3D           ; //
    property Cursor          ; //
    property DockSite        ; //
    property DragCursor      ; //
    property DragKind        ; //
    property DragMode        ; //     Propriétés d'un panel classique
    property Enabled         ; //
    property Font            ; //
    property FullRepaint     ; //
    property Height          ; //
    property HelpContext     ; //
    property HelpType        ; //
    property Left            ; //
    property Locked          ; //
    property Name            ; //
    property ParentBackground; //
    property ParentColor     ; //
    property ParentCtl3D     ; //
    property ParentFont      ; //
    property ParentShowHint  ; //
    property Showhint        ; //
    property TabOrder        ; //
    property Visible         ; //
    property OnClick         ; //
    property OnContextPopup  ; //
    property OnDblClick      ; //
    property OnDockDrop;       //
    property OnDockOver;       //
    property OnDragDrop;       //
    property OnDragOver;       //
    property OnEndDock;        //
    property OnEndDrag;        //
    property OnEnter;          //
    property OnKeyDown;        //
    property OnKeyPress;       //
    property OnKeyUp;          //
    property OnMouseDown;      //
    property OnMouseMove;      //
    property OnMouseUp;        //
    property OnResize  ;       //
    property OnStartDock;      //
    property OnStartDrag;      //
    property OnUnDock;         //
 /////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////
 
 
    //fixer un numero sur notre composant
    //property Cust_Numero : integer read FNum write SetNum;
 
 
    Property entete :TEntete read Ftitre write SetTitre;
 
    Property detail :TDetail read Fdetail write SetDetail;
 
  end;
 
procedure Register;
 
implementation
 
procedure TDetail.RedimDetail ();
begin
  if ImgLargeurPanel.width<>0 then
  begin
    Edit1.left:=(ImgLargeurPanel.Width-Edit1.width) div 2;
    chx.left:=(ImgLargeurPanel.Width-chx.width) div 2;
  end;
end;
 
 
Procedure TDetail.SetModifChx (value : boolean);
begin
  if value <> FModifChx then
  begin
    FModifChx:=value;
    if FmodifChx=false then
    begin
      Edit1.Width:= ImgLargeurPanel.Width-8;
      chx.Width:=ImgLargeurPanel.Width-8;
      Edit1.Left:=4;
      Chx.left:=4;
    end;
  end;
end;
 
 
procedure TDetail.SetLargeurChx (value : integer);
begin
   if value <> FLargeurChx then
    begin
     FLargeurChx:=value;
     if FModifChx then
     begin
       chx.Width:=FLargeurChx;
       Edit1.Width:=FlargeurChx;
       RedimDetail;
     end;
   end;
end;
 
procedure FlowStep4.Resize;
begin
  inherited Resize; // < This fires the OnResize event
  Ftaille := Width;
  detail.ImgLargeurPanel.Width:=Ftaille;
  if detail.FModifChx=false then
  begin
    detail.chx.Width:=Ftaille-4;
    detail.Edit1.Width:=Ftaille-4;
  end;
  detail.RedimDetail;
  Fhauteur:=Height;
  entete.Shape1.Width:=Ftaille;
  entete.shapeLED.left:=Ftaille-15;
  entete.RedimLabel(Ftaille);
  detail.FLargeurChx:=Ftaille;
  detail.chx.Top:=Fhauteur-17-(Fhauteur-16)div 2+ detail.chx.Height div 2;
  detail.Edit1.Top:=Fhauteur-17-(Fhauteur-16)div 2 +detail.Edit1.Height div 2;
end;
 
procedure FlowStep4.SetTitre(const Value: TEntete);
begin
  FTitre := Value;
end;
 
procedure FlowStep4.SetDetail(const Value: TDetail);
begin
  Fdetail := Value;
end;
 
 
Procedure TEntete.SetTitrePolice (couleur:Tcolor);
begin
  if couleur <> FtitrePolice then
  begin
    FtitrePolice := couleur;
    Label1.font.color:=FtitrePolice;
  end;
end;
 
 
Procedure TEntete.SetTitreAlignment(value : Talignment);
begin
  if value <> FTitreCentrer  then
  begin
    RedimLabel(Shape1.Width);
    FTitreCentrer := value;
    Label1.alignment:=FtitreCentrer;
    if Label1.alignment=TaCenter then RedimLabel(Shape1.Width);
  end;
end;
 
//fixe un numero
{procedure TTest2.setNum(nb:integer);
begin
  if FNum<>nb then Fnum:=nb;
end;}
 
//On change le message dans l'eddit
procedure TDetail.SetEditMessage(mess : string);
begin
  if (FEditMsg<>mess) then
  begin
    FEditMsg:=mess;
    Edit1.Text:=FEditMsg;
  end;
end;
 
//ON affiche soit une combobox soit un edit
Procedure TDetail.SetChoixComboEdit(choix:boolean);
begin
  if FComboEdit <> choix then
  begin
    FComboEdit:=choix;
    if FComboEdit=true then
    begin
      chx.Visible:=true;
      Edit1.Visible:=false;
    end
    else
    begin
      chx.Visible:=false;
      Edit1.visible:=true;
    end;
  end;
end;
 
 
procedure TEntete.SharpsetCouleur(Scolor:tcolor);
begin
  if FLabelCouleur<>Scolor then
  begin
  FLabelCouleur:=Scolor;
  Shape1.Brush.Color:=FLabelCouleur;
  Shape1.Pen.Color:=FLabelCouleur;
  end;
end;
 
Procedure TEntete.SetLabelCouleur (LColor:Tcolor);
begin
  if FLabelCouleur <> Lcolor then
  begin
    FLabelCouleur:=Lcolor;
    Label1.color := FLabelCouleur;
    Shape1.Brush.Color:=FLabelCouleur;
    Shape1.Pen.Color:=FLabelCouleur;
  end;
end;
 
 
//On prend en compte la nouvelle liste d'images
procedure TEntete.SetImgList(ImgNewList: TImageList);
begin
  if  ImgNewList<> FImgList then
  begin
    FImgList:=ImgNewList;
  end;
end;
 
 
 
//On dessine l'image comprise dans l'image liste, à l'intérieur du cadre délimité par l'image
procedure TEntete.SetImgChange(ValIndex:integer);
begin
  if ValIndex <> FImgDessin then
  begin
    ImgExist:=false;
    ImgNb:=FImgList.count;
    FImgDessin := ValIndex;
    Img.Picture.Bitmap := nil;
    if ImgNB>FImgDessin then
    begin
      if FImgDessin>-1 then
      begin
        FImgList.GetBitmap(valIndex, Img.Picture.Bitmap);
        ImgExist:=true;
      end;
    end;
  end;
  RedimLabel(shape1.Width);
end;
 
 
 
//On prend en compte un changement visible ou non
procedure TEntete.SetLedVisible (LEDvisu : boolean);
begin
  if (LEDvisu<>FLEDBoolVisible) then
  begin
    FLEDBoolVisible:=LEDvisu;
    shapeLED.Visible:=FLEDBoolVisible;
  end;
  RedimLabel(shape1.width);
end;
 
procedure TEntete.RedimLabel (value:integer);
begin
  if (value=0)then
  begin
    Label1.Width:=80;
    Label1.Left:=22;
  end
  else begin
    Label1.width:=value-40;;
    Label1.left:=22 ;
  end;
  if Label1.alignment=taCenter then
  begin
    if ImgExist=true then
    begin
      Label1.Width:=Label1.width+25 ;
    end;
    if shapeLED.Visible=true then
    begin
      Label1.width:=label1.width-20;
    end;
  end;
end;
 
 
//On défini la couleur de la diode
procedure TEntete.SetLedCouleur (Coul : integer);
begin
  FLedCoul := coul;
  if FLedcoul<2 then
  begin
    if FLedcoul>-2 then
    begin
     case coul of
     -1 : shapeLED.brush.color:= clSilver;
      0 : shapeLED.brush.color:= clRed;
      1 : shapeLED.brush.color := clLime;
      end;
    end;
   end;
end;
 
procedure Register;
begin
  RegisterComponents('Standard', [FlowStep4]);
end;
 
//on défini le teste du edit  et donc le titre de notre composant
procedure TEntete.SetLabelTitre(value : string);
begin
  if (FLabelTitre <> value) then
  begin
    FLabelTitre:=value;
    Label1.Caption:=FLabelTitre;
  end;
end;
 
 
constructor FlowStep4.Create(Aowner:Tcomponent);
//i:integer;
begin
  //on crée le panel
  inherited create(Aowner);
  Entete:=TEntete.create;
  Detail:=TDetail.create;
  Width  := 125;
  Height := 50;
 
  constraints.MinHeight:=45;
  Constraints.MinWidth:=100;
 
  detail.ImgLargeurPanel:=Timage.Create(self);
  detail.ImgLargeurPanel.Parent:=self;
  detail.ImgLargeurPanel.Visible:=true;
  detail.ImgLargeurPanel.height:=1;
 
  //on initialise et on place la combobox
  detail.chx:=TComboBox.create(self);
  detail.chx.parent:=self;
  //detail.chx.setbounds(4,27,117,21);
  detail.chx.style:=csDropDownList;
  detail.chx.Visible := True;
  detail.chx.SetSubComponent(True);
 
 
  detail.Edit1:=TEdit.create(self);
  detail.Edit1.Parent:=self;
  //detail.Edit1.SetBounds(4,27,117,21);
  detail.Edit1.ReadOnly:=true;
 
  //fond gris
  entete.Shape1:=TShape.create(self);
  entete.Shape1.parent:=self;
  entete.Shape1.setBounds(0,0,width,24);
  entete.Titre2FondCouleur:=$BABABA;
 
 
  //On initialise l'imageliste
   entete.FImglist:=TImageList.create(self);
 
      //On itnitialise et on place le cadre de l'image
  entete.Img:=TImage.create(self);
  entete.Img.parent:=self;
  entete.Img.setbounds(4,4,16,16);
  entete.Img.Visible:=true;
  entete.FImgDessin:=-1;
  ///entete.SetImgChange(entete.FImgDessin);
 
 
    //On initialise et on place le label
  entete.Label1:=TLabel.create(self);
  entete.Label1.parent:=Self;
  entete.Label1.setbounds(22,4,80,16);
  entete.Label1.AutoSize:=false;
  entete.Label1.Caption:='titre';
  entete.Label1.Color:=$BABABA;
  entete.Label1.font.Size:=9;
  entete.Label1.Font.Style:=[Graphics.fsBold];
 
  //On initialise la Led
  entete.shapeLED:=Tshape.create(self);
  entete.shapeLED.parent :=self;
  entete.shapeLED.setbounds (Ftaille-15,7,12,12);
  entete.shapeLED.visible:=false; // sinon elle est tjr allumée
  entete.shapeLED.Brush.color:=cllime;
  entete.shapeLED.Pen.color:=clblack;
  entete.shapeLED.Shape:=stCircle;
  entete.Shape1.Pen.Color:=$BABABA;
 
 
  //On ne veut pas que le panel ait de caption
  Caption:=' ';
end;
 
   //on détruit
  destructor FlowStep4.Destroy;
    begin
      inherited destroy;
    end;
end.

Pour info le message d'erreur lui annonce que la propriété "Titre_Align" n'existe pas, celle qui est ligne 121. Si on la place sous les autres propriétés c'est la propriété "Titre_CoulTxt" juste en dessous qui n'existe pas. Le probleme ne doit donc pas se situer dans une seule propriété



Help !!!