Voilà, j'ai tenté de faire un Tlabel façon delphi pour caché au maximum l'actionscript... Peut-être que cette voie permettrait de voir venir davantage de personnes sur ce forum...
ci-joint mon code :
La gestion de la font
le label :
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 unit UFont; interface uses Flash8; type // TFontStyle =(fsBold,fsItalic,fsUnderline); le type énuméré ne fonctionne pas. // TStyle = set of TFontStyle; TFont=class private //FStyle:TStyle; procedure SetName(value:string); procedure SetSize(value:number); procedure Setcolor(value:number); //procedure SetStyle(value:TStyle); procedure SetBold(value:boolean); procedure SetItalic(value:boolean); procedure SetUnderline(value:boolean); procedure SetBullet(value:boolean); procedure Setalign(value:String); public FTextformat:TextFormat; constructor Create; property name:string read FTextFormat write SetName; property size:number read FTextFormat write SetSize; //property style:Tstyle read FStyle write SetStyle; property Bold:Boolean read FTextFormat write SetBold; property Italic:Boolean read FTextFormat write SetItalic; property Underline:Boolean read FTextFormat write SetUnderline; property Color:number read FTextFormat write Setcolor; property Align:String read FTextFormat write SetAlign; property Bullet:boolean read FTextFormat write SetBullet; //point equivalent à un tiret end; implementation Constructor TFont.Create; begin FTextFormat:=TextFormat.Create('MS Sans Serif',8,0,false,false,false); end; procedure TFont.SetName(value:string); begin FTextFormat.font:=value; end; procedure TFont.Setsize(value:number); begin FTextFormat.size:=value; end; {procedure TFont.SetStyle(value:TStyle); begin if [fsBold]*value=[fsBold] then FTextFormat.bold:=true; if [fsItalic]*value=[fsItalic] then FTextFormat.italic:=true; if [fsUnderline]*value=[fsUnderline] then FTextFormat.underline:=true; end;} procedure TFont.SetBold(value:boolean); begin FTextFormat.bold:=value; end; procedure TFont.SetItalic(value:boolean); begin FTextFormat.italic:=value; end; procedure TFont.SetUnderline(value:boolean); begin FTextFormat.underline:=value; end; procedure TFont.Setcolor(value:number); begin FTextFormat.color:=value; end; procedure TFont.Setalign(value:String); begin FTextFormat.align:=value; end; procedure TFont.SetBullet(value:boolean); begin FTextFormat.Bullet:=value; end; end.
l'essai :
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 unit ULabel; interface uses Flash8,UFont; type TLabel=Class Private FBorder,FwordWrap,Fautosize,FBackground,FBackgroundcolor,Fmultiline,first:Boolean; FLeft,FTop,FWidth,FHeight,FBordercolor,Frotation:number; FCaption:string; FTextfield:TextField; procedure SetLeft(value:number); procedure SetTop(value:number); procedure SetWidth(value:number); procedure SetHeight(value:number); procedure SetBorder(value:boolean); procedure SetborderColor(value: Number); procedure SetwordWrap(value:boolean); procedure SetAutosize(value:boolean); procedure SetBackground(value:Boolean); procedure SetBackgroundColor(value:number); procedure Setmultiline(value: Boolean); procedure Setrotation(value: Number); procedure SetCaption(value:string); Public Font:Tfont; constructor Create(parent:movieclip); property Left:number read FLeft write SetLeft; property Top:number read FTop write SetTop; property width:number read FWidth write SetWidth; property height:number read FHeight write SetHeight; property Border:Boolean read FBorder write SetBorder; property BorderColor:number read FBordercolor write SetBordercolor; property wordWrap:boolean read FwordWrap write SetwordWrap; property autosize:boolean read Fautosize write Setautosize; property Background:boolean read FBackground write SetBackground; property Backgroundcolor:number read FBackgroundcolor write SetBackgroundcolor; property multiline:boolean read Fmultiline write Setmultiline; property rotation:number read Frotation write Setrotation; property caption:string read FCaption write setCaption; end; implementation Constructor TLabel.Create(parent:movieclip); begin FTextfield:=TextField.Create(Parent,'',parent.getNextHighestDepth(),0,0,100,100); Font:=TFont.Create; first:=true; end; procedure TLabel.Setleft(value:number); begin FTextfield._x:=value; end; procedure TLabel.SetTop(value:number); begin FTextfield._y:=value; end; procedure TLabel.SetWidth(value:number); begin FTextfield._width:=value; end; procedure TLabel.SetHeight(value:number); begin FTextfield._height:=value; end; procedure TLabel.SetBorder(value:boolean); begin FTextfield.border:=value; end; procedure TLabel.SetBordercolor(value:number); begin FTextfield.bordercolor:=value; end; procedure TLabel.SetwordWrap(value:Boolean); begin FTextfield.wordWrap:=value; end; procedure TLabel.Setautosize(value:boolean); begin if value then FTextfield.autosize:='center'; end; procedure TLabel.SetBackground(value:Boolean); begin FTextfield.background:=value; end; procedure TLabel.SetBackgroundcolor(value:number); begin FTextfield.backgroundcolor:=value; end; procedure TLabel.Setmultiline(value:Boolean); begin FTextfield.multiline:=value; end; procedure TLabel.Setrotation(value:number); begin FTextfield._rotation:=value; end; procedure TLabel.SetCaption(value:string); begin if first then begin FTextfield.setNewTextFormat(Font.FTextFormat); first:=false; end; FTextfield.text:=value; end; end.
Ma question : le code mis en commentaire ne fonctionne pas.
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 program Project1; {$FRAME_WIDTH 550} {$FRAME_HEIGHT 400} {$FRAME_RATE 12} {$BACKGROUND $FFFFFF} uses Flash8,ULabel; var label1:Tlabel; begin label1:=TLabel.create(_root); with label1 do begin border:=true; font.name:='arial'; font.size:=40; // font.style:=[fsBold,fsUnderline]; font.bold:=true; font.color:=clred; font.underline:=true; caption:="ça marche"; autosize:=true; left:=170; top:=100; end; end.
la syntaxe : montype = (.....,.....,.....) ne passe pas.
Dommage, au lieu de créer des propriétés séparées pour bold, italic, underline, le Fontstyle était bien pratique et conforme à la notation delphi.
Le type variant peut sans doute me dépanner sur ce coup là ?
Anthony
Partager