source: 2.19_branch/Sibyl/Addon/GLYPHBTN.PAS@ 376

Last change on this file since 376 was 7, checked in by RBRi, 19 years ago

+ sibyl staff

  • Property svn:eol-style set to native
File size: 9.3 KB
Line 
1UNIT GlyphBtn;
2
3INTERFACE
4
5{$R GlyphBtn}
6
7USES Classes,Forms,Graphics,Buttons;
8
9TYPE TGlyphButton=CLASS(TSpeedButton)
10 PRIVATE
11 FGlyphOn:TBitmap;
12 FCaptionOn:^STRING;
13 FAllowDrawDown:BOOLEAN;
14 FAllowDrawFrame:BOOLEAN;
15 PRIVATE
16 FUNCTION GetGlyphOff:TBitmap;
17 PROCEDURE SetGlyphOff(NewValue:TBitmap);
18 FUNCTION GetCaptionOff:STRING;
19 PROCEDURE SetCaptionOff(CONST NewValue:STRING);
20 FUNCTION GetCaptionOn:STRING;
21 PROCEDURE SetCaptionOn(CONST NewValue:STRING);
22 PROCEDURE SetAllowDrawDown(NewValue:BOOLEAN);
23 FUNCTION GetGlyphOn:TBitmap;
24 PROCEDURE SetGlyphOn(NewBitmap:TBitmap);
25 PROCEDURE SetAllowDrawFrame(NewValue:BOOLEAN);
26 PRIVATE
27 PROPERTY Glyph;
28 PROPERTY Kind;
29 PROPERTY Caption;
30 PROTECTED
31 PROCEDURE DrawFrame(Down:BOOLEAN);OVERRIDE;
32 PROCEDURE DrawText(CONST Caption:STRING;Down:BOOLEAN);OVERRIDE;
33 PROCEDURE DrawBitmap(Bitmap:TBitmap;Mask:TBitmap;Down:BOOLEAN);OVERRIDE;
34 PROCEDURE ReadSCUResource(CONST ResName:TResourceName;VAR Data;DataLen:LONGINT);OVERRIDE;
35 FUNCTION WriteSCUResource(Stream:TResourceStream):BOOLEAN;OVERRIDE;
36 PUBLIC
37 PROCEDURE SetupComponent;OVERRIDE;
38 PUBLISHED
39 PROPERTY Align;
40 PROPERTY Color;
41 PROPERTY DragCursor;
42 PROPERTY DragMode;
43 PROPERTY Enabled;
44 PROPERTY Font;
45 PROPERTY ParentColor;
46 PROPERTY ParentPenColor;
47 PROPERTY ParentFont;
48 PROPERTY ParentShowHint;
49 PROPERTY PenColor;
50 PROPERTY PopupMenu;
51 PROPERTY ShowHint;
52 PROPERTY TabOrder;
53 PROPERTY TabStop;
54 PROPERTY Visible;
55 PROPERTY ZOrder;
56
57 PROPERTY OnCanDrag;
58 PROPERTY OnClick:TNotifyEvent Read FOnClick Write FOnClick;
59 PROPERTY OnCommand;
60 PROPERTY OnDblClick;
61 PROPERTY OnDragDrop;
62 PROPERTY OnDragOver;
63 PROPERTY OnEndDrag;
64 PROPERTY OnEnter;
65 PROPERTY OnExit;
66 PROPERTY OnFontChange;
67 PROPERTY OnMouseClick;
68 PROPERTY OnMouseDblClick;
69 PROPERTY OnMouseDown;
70 PROPERTY OnMouseMove;
71 PROPERTY OnMouseUp;
72 PROPERTY OnResize;
73 PROPERTY OnSetupShow;
74 PROPERTY OnStartDrag;
75 PROPERTY GlyphOff:TBitmap read GetGlyphOff write SetGlyphOff;
76 PROPERTY GlyphOn:TBitmap read GetGlyphOn write SetGlyphOn;
77 PROPERTY CaptionOff:STRING read GetCaptionOff write SetCaptionOff;
78 PROPERTY CaptionOn:STRING read GetCaptionOn write SetCaptionOn;
79 PROPERTY AllowDrawDown:BOOLEAN read FAllowDrawDown write SetAllowDrawDown;
80 PROPERTY AllowDrawFrame:BOOLEAN read FAllowDrawFrame write SetAllowDrawFrame;
81 END;
82
83 TOnOffSwitch=CLASS(TGlyphButton)
84 PRIVATE
85 PROPERTY GlyphOn;
86 PROPERTY GlyphOff;
87 PROPERTY AllowDrawDown;
88 PROTECTED
89 PROCEDURE ReadSCUResource(CONST ResName:TResourceName;VAR Data;DataLen:LONGINT);OVERRIDE;
90 FUNCTION WriteSCUResource(Stream:TResourceStream):BOOLEAN;OVERRIDE;
91 PUBLIC
92 PROCEDURE SetupComponent;OVERRIDE;
93 END;
94
95IMPLEMENTATION
96
97{
98ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
99º º
100º Speed-Pascal/2 Version 2.0 º
101º º
102º Speed-Pascal Component Classes (SPCC) º
103º º
104º This section: TGlyphButton Class implementation º
105º º
106º Last modified: October 1996 º
107º º
108º (C) 1995 SpeedSoft. All rights reserved. Disclosure probibited ! º
109º º
110ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍŒ
111}
112
113PROCEDURE TGlyphButton.SetupComponent;
114BEGIN
115 Inherited SetupComponent;
116 Name:='GlyphButton';
117 Kind:=bkCustom;
118 GroupIndex:=1;
119 AllowAllUp:=TRUE;
120 AllowDrawDown:=TRUE;
121 FAllowDrawFrame:=TRUE;
122END;
123
124PROCEDURE TGlyphButton.DrawFrame(Down:BOOLEAN);
125BEGIN
126 IF not FAllowDrawFrame THEN exit;
127 IF not FAllowDrawDown THEN Down:=FALSE;
128 Inherited DrawFrame(Down);
129END;
130
131PROCEDURE TGlyphButton.DrawText(CONST Caption:STRING;Down:BOOLEAN);
132VAR s:STRING;
133BEGIN
134 IF Down THEN s:=CaptionOn
135 ELSE s:=CaptionOff;
136 IF not FAllowDrawDown THEN Down:=FALSE;
137 Inherited DrawText(s,Down);
138END;
139
140PROCEDURE TGlyphButton.DrawBitmap(Bitmap:TBitmap;Mask:TBitmap;Down:BOOLEAN);
141VAR FBitmap:TBitmap;
142BEGIN
143 IF Down THEN FBitmap:=GlyphOn
144 ELSE FBitmap:=GlyphOff;
145 IF not FAllowDrawDown THEN Down:=FALSE;
146 Inherited DrawBitmap(FBitmap,nil,Down);
147END;
148
149FUNCTION TGlyphButton.GetGlyphOff:TBitmap;
150BEGIN
151 result:=Glyph;
152END;
153
154PROCEDURE TGlyphButton.SetGlyphOff(NewValue:TBitmap);
155BEGIN
156 Glyph:=NewValue;
157END;
158
159FUNCTION TGlyphButton.GetCaptionOff:STRING;
160BEGIN
161 result:=Caption;
162END;
163
164PROCEDURE TGlyphButton.SetCaptionOff(CONST NewValue:STRING);
165BEGIN
166 Caption:=NewValue;
167END;
168
169FUNCTION TGlyphButton.GetCaptionOn:STRING;
170BEGIN
171 IF FCaptionOn=NIL THEN result:=''
172 ELSE result:=FCaptionOn^;
173END;
174
175PROCEDURE TGlyphButton.SetCaptionOn(CONST NewValue:STRING);
176BEGIN
177 IF FCaptionOn<>NIL THEN FreeMem(FCaptionOn,length(FCaptionOn^)+1);
178 GetMem(FCaptionOn,length(NewValue)+1);
179 FCaptionOn^:=NewValue;
180 Refresh;
181END;
182
183PROCEDURE TGlyphButton.SetAllowDrawDown(NewValue:BOOLEAN);
184BEGIN
185 FAllowDrawDown:=NewValue;
186 Refresh;
187END;
188
189FUNCTION TGlyphButton.GetGlyphOn:TBitmap;
190BEGIN
191 IF FGlyphOn = NIL THEN FGlyphOn.Create;
192 Result := FGlyphOn;
193END;
194
195PROCEDURE TGlyphButton.SetGlyphOn(NewBitmap:TBitmap);
196VAR OldBitmap:TBitmap;
197BEGIN
198 OldBitmap := FGlyphOn;
199
200 {create internal copy}
201 IF NewBitmap <> NIL THEN FGlyphOn := NewBitmap.Copy
202 ELSE FGlyphOn := NIL;
203
204 IF FGlyphOn <> NIL THEN Include(FGlyphOn.ComponentState, csDetail);
205
206 IF OldBitmap <> NIL THEN IF OldBitmap<>NewBitmap THEN OldBitmap.Destroy;
207
208 Arrange;
209 Refresh;
210END;
211
212PROCEDURE TGlyphButton.SetAllowDrawFrame(NewValue:BOOLEAN);
213BEGIN
214 FAllowDrawFrame:=NewValue;
215 Refresh;
216END;
217
218PROCEDURE TGlyphButton.ReadSCUResource(CONST ResName:TResourceName;VAR Data;DataLen:LONGINT);
219BEGIN
220 IF ResName <> 'rnGlyphOn' THEN
221 BEGIN
222 Inherited ReadSCUResource(ResName,Data,DataLen);
223 exit;
224 END
225 ELSE
226 BEGIN
227 IF FGlyphOn = NIL THEN FGlyphOn.Create;
228 FGlyphOn.ReadSCUResource(rnBitmap,Data,DataLen);
229 END;
230END;
231
232
233FUNCTION TGlyphButton.WriteSCUResource(Stream:TResourceStream):BOOLEAN;
234BEGIN
235 Result := Inherited WriteSCUResource(Stream);
236 IF not Result THEN exit;
237
238 IF (FGlyphOn <> NIL) AND (ComponentState * [csDetail] = [])
239 THEN Result := FGlyphOn.WriteSCUResourceName(Stream,'rnGlyphOn')
240 ELSE Result := TRUE;
241END;
242
243
244{
245ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
246º º
247º Speed-Pascal/2 Version 2.0 º
248º º
249º Speed-Pascal Component Classes (SPCC) º
250º º
251º This section: TOnOffSwitch Class implementation º
252º º
253º Last modified: October 1996 º
254º º
255º (C) 1995 SpeedSoft. All rights reserved. Disclosure probibited ! º
256º º
257ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍŒ
258}
259
260PROCEDURE TOnOffSwitch.SetupComponent;
261VAR FBitmap:TBitmap;
262BEGIN
263 Inherited SetupComponent;
264 Name:='OnOffSwitch';
265 AllowDrawDown:=FALSE;
266 FBitmap.Create;
267 FBitmap.LoadFromResourceName('TOnOffSwitch_On');
268 GlyphOn:=FBitmap;
269 FBitmap.LoadFromResourceName('TOnOffSwitch_Off');
270 GlyphOff:=FBitmap;
271 FBitmap.Destroy;
272 Width:=30;
273 Height:=42;
274END;
275
276PROCEDURE TOnOffSwitch.ReadSCUResource(CONST ResName:TResourceName;VAR Data;DataLen:LONGINT);
277BEGIN
278 IF ResName<>rnBitmap THEN Inherited ReadSCUResource(ResName,Data,DataLen);
279END;
280
281FUNCTION TOnOffSwitch.WriteSCUResource(Stream:TResourceStream):BOOLEAN;
282BEGIN
283 //don't write our Bitmaps here !
284 result:=TButton.WriteSCUResource(Stream);
285END;
286
287BEGIN
288 RegisterClasses([TGlyphButton,TOnOffSwitch]);
289END.
290
Note: See TracBrowser for help on using the repository browser.