1 | Unit Hints;
|
---|
2 |
|
---|
3 |
|
---|
4 | Interface
|
---|
5 |
|
---|
6 | Uses
|
---|
7 | Classes,Forms;
|
---|
8 |
|
---|
9 | Type
|
---|
10 | {$M+}
|
---|
11 | TShadowStyle=(shsSolid,shsShadowed);
|
---|
12 | {$M-}
|
---|
13 |
|
---|
14 | TCustomHint=Class(TComponent)
|
---|
15 | Private
|
---|
16 | FOutlined:BOOLEAN;
|
---|
17 | FOutlineColor:TColor;
|
---|
18 | FShadowSize:LONGINT;
|
---|
19 | FShadowStyle:TShadowStyle;
|
---|
20 | FShadowColor:TColor;
|
---|
21 | FHintPenColor:TColor;
|
---|
22 | FHintColor:TColor;
|
---|
23 | FMaxWidth:LONGINT;
|
---|
24 | FHintOrigin:THintOrigin;
|
---|
25 | Procedure SetShadowSize(NewValue:LONGINT);
|
---|
26 | Procedure SetHintOrigin(NewValue:THintOrigin);
|
---|
27 | Protected
|
---|
28 | Procedure SetupComponent;Override;
|
---|
29 | Public
|
---|
30 | Destructor Destroy;Override;
|
---|
31 | Published
|
---|
32 | Property Outlined:BOOLEAN read FOutlined write FOutLined;
|
---|
33 | Property OutlineColor:TColor read FOutlineColor write FOutlineColor;
|
---|
34 | Property ShadowSize:LONGINT read FShadowSize write SetShadowSize;
|
---|
35 | Property ShadowStyle:TShadowStyle read FShadowStyle write FShadowStyle;
|
---|
36 | Property ShadowColor:TColor read FShadowColor write FShadowColor;
|
---|
37 | Property HintPenColor:TColor read FHintPenColor write FHintPenColor;
|
---|
38 | Property HintColor:TColor read FHintColor write FHintColor;
|
---|
39 | Property MaxWidth:LONGINT read FMaxWidth write FMaxWidth;
|
---|
40 | Property Origin:THintOrigin read FHintOrigin write SetHintOrigin;
|
---|
41 | End;
|
---|
42 |
|
---|
43 |
|
---|
44 | {$M+}
|
---|
45 | TBalloonShape=(basRectangle,basRounded);
|
---|
46 | {$M-}
|
---|
47 |
|
---|
48 | TBalloonHint=Class(TCustomHint)
|
---|
49 | Private
|
---|
50 | FBalloonShape:TBalloonShape;
|
---|
51 | Property Origin;
|
---|
52 | Protected
|
---|
53 | Procedure SetupComponent;Override;
|
---|
54 | Public
|
---|
55 | Destructor Destroy;Override;
|
---|
56 | Published
|
---|
57 | Property BalloonShape:TBalloonShape read FBalloonShape write FBalloonShape;
|
---|
58 | End;
|
---|
59 |
|
---|
60 |
|
---|
61 | Implementation
|
---|
62 |
|
---|
63 | Const
|
---|
64 | CustomHint:TCustomHint=Nil;
|
---|
65 | BalloonHint:TBalloonHint=Nil;
|
---|
66 |
|
---|
67 | {
|
---|
68 | ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
|
---|
69 | º º
|
---|
70 | º Speed-Pascal/2 Version 2.0 º
|
---|
71 | º º
|
---|
72 | º Speed-Pascal Component Classes (SPCC) º
|
---|
73 | º º
|
---|
74 | º This section: TCustomHintWindow Class implementation º
|
---|
75 | º º
|
---|
76 | º Last modified: September 1995 º
|
---|
77 | º º
|
---|
78 | º (C) 1995 SpeedSoft. All rights reserved. Disclosure probibited ! º
|
---|
79 | º º
|
---|
80 | ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍŒ
|
---|
81 | }
|
---|
82 |
|
---|
83 | Type
|
---|
84 | TCustomHintWindow=Class(THintWindow)
|
---|
85 | Private
|
---|
86 | FCustomHint:TCustomHint;
|
---|
87 | Protected
|
---|
88 | Procedure SplitText(Bubble:String;Ret:TStrings;Var CX,CY:LONGINT);Virtual;
|
---|
89 | Procedure DrawBubbleShape(Const rec:TRect);Virtual;
|
---|
90 | Procedure DrawBubbleText(Const Bubble:String;Const rec:TRect);Virtual;
|
---|
91 | Public
|
---|
92 | Procedure Redraw(Const rec:TRect);Override;
|
---|
93 | Procedure ActivateHint(Rect:TRect; Const AHint:String);Override;
|
---|
94 | End;
|
---|
95 |
|
---|
96 |
|
---|
97 | Procedure TCustomHintWindow.SplitText(Bubble:String;Ret:TStrings;Var CX,CY:LONGINT);
|
---|
98 | Const
|
---|
99 | Separators:Set Of CHAR = [' ','.',',',':',';',')',']','!','?'];
|
---|
100 | Var
|
---|
101 | CX1,CY1:LONGINT;
|
---|
102 | t:LONGINT;
|
---|
103 | s:String;
|
---|
104 | LastFound:LONGINT;
|
---|
105 | Begin
|
---|
106 | CY := 0;
|
---|
107 | CX := 0;
|
---|
108 | While Bubble <> '' Do
|
---|
109 | Begin
|
---|
110 | LastFound := 0;
|
---|
111 | For t := 1 To length(Bubble) Do
|
---|
112 | If Bubble[t] In Separators Then
|
---|
113 | Begin
|
---|
114 | s := Copy(Bubble,1,t);
|
---|
115 | Canvas.GetTextExtent(s,CX1,CY1);
|
---|
116 | If CX1 < CustomHint.FMaxWidth - CustomHint.FShadowSize Then
|
---|
117 | Begin
|
---|
118 | LastFound := t;
|
---|
119 | If CX1 > CX Then CX := CX1;
|
---|
120 | End
|
---|
121 | Else break;
|
---|
122 | End;
|
---|
123 |
|
---|
124 | If LastFound=0 Then //no separator, split at will
|
---|
125 | Begin
|
---|
126 | For t := 1 To length(Bubble) Do
|
---|
127 | Begin
|
---|
128 | s := Copy(Bubble,1,t);
|
---|
129 | Canvas.GetTextExtent(s,CX1,CY1);
|
---|
130 | If CX1 < CustomHint.FMaxWidth - CustomHint.FShadowSize Then
|
---|
131 | Begin
|
---|
132 | LastFound := t;
|
---|
133 | If CX1 > CX Then CX := CX1;
|
---|
134 | End
|
---|
135 | Else break;
|
---|
136 | End;
|
---|
137 | End;
|
---|
138 |
|
---|
139 | If LastFound = 0 Then LastFound := 1;
|
---|
140 |
|
---|
141 | s := Copy(Bubble,1,LastFound);
|
---|
142 | Delete(Bubble,1,LastFound);
|
---|
143 | Ret.Add(s);
|
---|
144 | inc(CY,Canvas.Font.Height);
|
---|
145 | End;
|
---|
146 | End;
|
---|
147 |
|
---|
148 |
|
---|
149 | Procedure TCustomHintWindow.DrawBubbleShape(Const rec:TRect);
|
---|
150 | Begin
|
---|
151 | Canvas.Rectangle(rec);
|
---|
152 | End;
|
---|
153 |
|
---|
154 |
|
---|
155 | Procedure TCustomHintWindow.DrawBubbleText(Const Bubble:String;Const rec:TRect);
|
---|
156 | Var
|
---|
157 | CX,CY:LONGINT;
|
---|
158 | X,Y:LONGINT;
|
---|
159 | Strings:TStringList;
|
---|
160 | t:LONGINT;
|
---|
161 | Begin
|
---|
162 | {Draw Text}
|
---|
163 | Canvas.ClipRect := rec;
|
---|
164 | Canvas.GetTextExtent(Bubble,CX,CY);
|
---|
165 | Canvas.Brush.Mode := bmTransparent;
|
---|
166 |
|
---|
167 | If CX < CustomHint.FMaxWidth - CustomHint.FShadowSize Then
|
---|
168 | Begin
|
---|
169 | //Center text within the rectangle
|
---|
170 | X := rec.Left+((rec.Right-rec.Left-CX) Div 2);
|
---|
171 | If X < rec.Left Then X := rec.Left;
|
---|
172 |
|
---|
173 | Y := rec.Bottom+((rec.Top-rec.Bottom-CY) Div 2);
|
---|
174 | If Y < rec.Bottom Then Y := rec.Bottom;
|
---|
175 | Canvas.TextOut(X,Y,Bubble);
|
---|
176 | End
|
---|
177 | Else //split
|
---|
178 | Begin
|
---|
179 | Strings.Create;
|
---|
180 | SplitText(Bubble,Strings,CX,CY);
|
---|
181 |
|
---|
182 | X := rec.Left+((rec.Right-rec.Left-CX) Div 2);
|
---|
183 | If X < rec.Left Then X := rec.Left;
|
---|
184 | Y := rec.Top-Canvas.Font.Height-((rec.Top-rec.Bottom-CY) Div 2);
|
---|
185 | For t := 0 To Strings.Count-1 Do
|
---|
186 | Begin
|
---|
187 | Canvas.TextOut(X,Y,Strings[t]);
|
---|
188 | dec(Y,Canvas.Font.Height);
|
---|
189 | End;
|
---|
190 |
|
---|
191 | Strings.Destroy;
|
---|
192 | End;
|
---|
193 |
|
---|
194 | Canvas.Brush.Mode := bmOpaque;
|
---|
195 | Canvas.DeleteClipRegion;
|
---|
196 | End;
|
---|
197 |
|
---|
198 |
|
---|
199 | Procedure TCustomHintWindow.ActivateHint(Rect:TRect; Const AHint:String);
|
---|
200 | Var
|
---|
201 | Strings:TStringList;
|
---|
202 | CX:LONGINT;
|
---|
203 | w,h:LONGINT;
|
---|
204 | Begin
|
---|
205 | Canvas.Font := Font;
|
---|
206 |
|
---|
207 | Canvas.GetTextExtent(AHint,w,h);
|
---|
208 |
|
---|
209 | If w >= CustomHint.FMaxWidth - CustomHint.FShadowSize Then
|
---|
210 | Begin
|
---|
211 | //Split
|
---|
212 | w := CustomHint.FMaxWidth - CustomHint.FShadowSize;
|
---|
213 | Strings.Create;
|
---|
214 | SplitText(AHint,Strings,CX,h);
|
---|
215 | w := CX;
|
---|
216 | Strings.Destroy;
|
---|
217 | End;
|
---|
218 |
|
---|
219 | inc(w,CustomHint.FShadowSize+16);
|
---|
220 | inc(h,CustomHint.FShadowSize+10);
|
---|
221 |
|
---|
222 | If Application.HintOrigin = hiTop Then Rect.Bottom := Screen.MousePos.Y
|
---|
223 | Else Rect.Bottom := Screen.MousePos.Y - 15 - h;
|
---|
224 |
|
---|
225 | Rect.Right := Rect.Left + w;
|
---|
226 | Rect.Top := Rect.Bottom + h;
|
---|
227 |
|
---|
228 | Inherited ActivateHint(Rect,AHint);
|
---|
229 | End;
|
---|
230 |
|
---|
231 |
|
---|
232 | Procedure TCustomHintWindow.Redraw(Const rec:TRect);
|
---|
233 | Var
|
---|
234 | Target:TRect;
|
---|
235 | Begin
|
---|
236 | Canvas.Pen.Color := CustomHint.FHintColor;
|
---|
237 | Canvas.Pen.Width := 1;
|
---|
238 | Canvas.Brush.Style := bsSolid;
|
---|
239 |
|
---|
240 | Canvas.ClipRect := rec;
|
---|
241 |
|
---|
242 | Target := ClientRect;
|
---|
243 | dec(Target.Right,4+CustomHint.FShadowSize);
|
---|
244 | dec(Target.Top,4);
|
---|
245 | inc(Target.Bottom,CustomHint.FShadowSize);
|
---|
246 |
|
---|
247 | Canvas.BeginPath;
|
---|
248 | DrawBubbleShape(Target);
|
---|
249 | Canvas.EndPath;
|
---|
250 | Canvas.FillPath;
|
---|
251 |
|
---|
252 | If CustomHint.FOutlined Then
|
---|
253 | Begin
|
---|
254 | Canvas.Pen.Color := CustomHint.FOutlineColor;
|
---|
255 | DrawBubbleShape(Target);
|
---|
256 | End;
|
---|
257 |
|
---|
258 | {Draw shadow}
|
---|
259 | If CustomHint.FShadowSize > 0 Then
|
---|
260 | Begin
|
---|
261 | Canvas.Pen.Color:=CustomHint.FShadowColor;
|
---|
262 |
|
---|
263 | {Create complex clip region}
|
---|
264 | Canvas.BeginPath;
|
---|
265 | DrawBubbleShape(Target);
|
---|
266 | Canvas.EndPath;
|
---|
267 | Canvas.PathToClipRegion(paSubtract);
|
---|
268 |
|
---|
269 | If CustomHint.FShadowStyle = shsShadowed Then
|
---|
270 | Begin
|
---|
271 | Canvas.Pen.Mode := pmMerge;
|
---|
272 | Canvas.Brush.Style := bsDiagCross;
|
---|
273 | Canvas.Pen.Color := clBlack;
|
---|
274 | Canvas.Brush.Color := clBlack;
|
---|
275 | End;
|
---|
276 |
|
---|
277 | Target := rec;
|
---|
278 | dec(Target.Right,4);
|
---|
279 | dec(Target.Top,4+CustomHint.FShadowSize);
|
---|
280 | inc(Target.Left,CustomHint.FShadowSize);
|
---|
281 |
|
---|
282 | Canvas.BeginPath;
|
---|
283 | DrawBubbleShape(Target);
|
---|
284 | Canvas.EndPath;
|
---|
285 | Canvas.FillPath;
|
---|
286 | End;
|
---|
287 |
|
---|
288 | Canvas.Pen.Mode := pmCopy;
|
---|
289 | Canvas.DeleteClipRegion;
|
---|
290 |
|
---|
291 | Target := rec;
|
---|
292 | inc(Target.Bottom,CustomHint.FShadowSize);
|
---|
293 | dec(Target.Right,CustomHint.FShadowSize+3);
|
---|
294 | Canvas.Pen.Color := CustomHint.FHintPenColor;
|
---|
295 | DrawBubbleText(Caption,Target);
|
---|
296 | End;
|
---|
297 |
|
---|
298 |
|
---|
299 | {
|
---|
300 | ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
|
---|
301 | º º
|
---|
302 | º Speed-Pascal/2 Version 2.0 º
|
---|
303 | º º
|
---|
304 | º Speed-Pascal Component Classes (SPCC) º
|
---|
305 | º º
|
---|
306 | º This section: TCustomHint Class implementation º
|
---|
307 | º º
|
---|
308 | º Last modified: September 1995 º
|
---|
309 | º º
|
---|
310 | º (C) 1995 SpeedSoft. All rights reserved. Disclosure probibited ! º
|
---|
311 | º º
|
---|
312 | ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍŒ
|
---|
313 | }
|
---|
314 |
|
---|
315 | Procedure TCustomHint.SetupComponent;
|
---|
316 | Begin
|
---|
317 | Inherited SetupComponent;
|
---|
318 |
|
---|
319 | If Not InDesigner Then
|
---|
320 | Begin
|
---|
321 | HintWindowClass := TCustomHintWindow;
|
---|
322 | CustomHint := Self;
|
---|
323 | End;
|
---|
324 |
|
---|
325 | Name := 'CustomHint';
|
---|
326 | FOutlined := TRUE;
|
---|
327 | FShadowSize := 10;
|
---|
328 | FShadowStyle := shsShadowed;
|
---|
329 | FShadowColor := clBlack;
|
---|
330 | FHintPenColor := Application.HintPenColor;
|
---|
331 | FHintColor := Application.HintColor;
|
---|
332 | FHintOrigin := Application.HintOrigin;
|
---|
333 | FMaxWidth := 200;
|
---|
334 | End;
|
---|
335 |
|
---|
336 |
|
---|
337 | Destructor TCustomHint.Destroy;
|
---|
338 | Begin
|
---|
339 | If CustomHint = Self Then CustomHint := Nil;
|
---|
340 | Inherited Destroy;
|
---|
341 | End;
|
---|
342 |
|
---|
343 |
|
---|
344 | Procedure TCustomHint.SetHintOrigin(NewValue:THintOrigin);
|
---|
345 | Begin
|
---|
346 | If Not InDesigner Then Application.HintOrigin := NewValue;
|
---|
347 | FHintOrigin := NewValue;
|
---|
348 | End;
|
---|
349 |
|
---|
350 |
|
---|
351 | Procedure TCustomHint.SetShadowSize(NewValue:LONGINT);
|
---|
352 | Begin
|
---|
353 | If (NewValue < 0) Or (NewValue > 50) Then exit;
|
---|
354 | FShadowSize := NewValue;
|
---|
355 | End;
|
---|
356 |
|
---|
357 |
|
---|
358 | {
|
---|
359 | ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
|
---|
360 | º º
|
---|
361 | º Speed-Pascal/2 Version 2.0 º
|
---|
362 | º º
|
---|
363 | º Speed-Pascal Component Classes (SPCC) º
|
---|
364 | º º
|
---|
365 | º This section: TBallonHintWindow Class implementation º
|
---|
366 | º º
|
---|
367 | º Last modified: September 1995 º
|
---|
368 | º º
|
---|
369 | º (C) 1995 SpeedSoft. All rights reserved. Disclosure probibited ! º
|
---|
370 | º º
|
---|
371 | ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍŒ
|
---|
372 | }
|
---|
373 |
|
---|
374 | Type
|
---|
375 | TBalloonHintWindow=Class(TCustomHintWindow)
|
---|
376 | Protected
|
---|
377 | Procedure DrawBubbleShape(Const rec:TRect);Override;
|
---|
378 | Procedure DrawBubbleText(Const Bubble:String;Const rec:TRect);Override;
|
---|
379 | Public
|
---|
380 | Procedure ActivateHint(Rect:TRect; Const AHint:String);Override;
|
---|
381 | End;
|
---|
382 |
|
---|
383 |
|
---|
384 | Procedure TBalloonHintWindow.DrawBubbleShape(Const rec:TRect);
|
---|
385 | Begin
|
---|
386 | Canvas.PenPos := Point(rec.Left,rec.Bottom);
|
---|
387 |
|
---|
388 | Canvas.LineTo(rec.Left+20,rec.Bottom+15);
|
---|
389 |
|
---|
390 | If BalloonHint.FBalloonShape = basRectangle Then
|
---|
391 | Begin
|
---|
392 | Canvas.LineTo(rec.Right,rec.Bottom+15);
|
---|
393 | Canvas.LineTo(rec.Right,rec.Top);
|
---|
394 | Canvas.LineTo(rec.Left+5,rec.Top);
|
---|
395 | Canvas.LineTo(rec.Left+5,rec.Bottom+15);
|
---|
396 | Canvas.LineTo(rec.Left+10,rec.Bottom+15);
|
---|
397 | Canvas.LineTo(rec.Left,rec.Bottom);
|
---|
398 | End
|
---|
399 | Else
|
---|
400 | Begin
|
---|
401 | Canvas.LineTo(rec.Right-8,rec.Bottom+15);
|
---|
402 | Canvas.Arc(rec.Right-8,rec.Bottom+23,8,8,270,90);
|
---|
403 | Canvas.LineTo(rec.Right,rec.Top-8);
|
---|
404 | Canvas.Arc(rec.Right-8,rec.Top-8,8,8,0,90);
|
---|
405 | Canvas.LineTo(rec.Left+13,rec.Top);
|
---|
406 | Canvas.Arc(rec.Left+13,rec.Top-8,8,8,90,90);
|
---|
407 | Canvas.LineTo(rec.Left+5,rec.Bottom+23);
|
---|
408 | Canvas.Arc(rec.Left+13,rec.Bottom+23,8,8,180,70);
|
---|
409 | Canvas.LineTo(rec.Left+10,rec.Bottom+15);
|
---|
410 | Canvas.LineTo(rec.Left,rec.Bottom);
|
---|
411 | End;
|
---|
412 | End;
|
---|
413 |
|
---|
414 |
|
---|
415 | Procedure TBalloonHintWindow.DrawBubbleText(Const Bubble:String;Const rec:TRect);
|
---|
416 | Var
|
---|
417 | rc1:TRect;
|
---|
418 | Begin
|
---|
419 | rc1 := rec;
|
---|
420 | inc(rc1.Left,4);
|
---|
421 | inc(rc1.Bottom,15);
|
---|
422 |
|
---|
423 | Inherited DrawBubbleText(Bubble,rc1);
|
---|
424 | End;
|
---|
425 |
|
---|
426 |
|
---|
427 | Procedure TBalloonHintWindow.ActivateHint(Rect:TRect; Const AHint:String);
|
---|
428 | Var
|
---|
429 | Strings:TStringList;
|
---|
430 | CX:LONGINT;
|
---|
431 | w,h:LONGINT;
|
---|
432 | Begin
|
---|
433 | Canvas.Font := Font;
|
---|
434 |
|
---|
435 | Canvas.GetTextExtent(AHint,w,h);
|
---|
436 |
|
---|
437 | If w >= CustomHint.FMaxWidth - CustomHint.FShadowSize Then
|
---|
438 | Begin
|
---|
439 | //Split
|
---|
440 | w := CustomHint.FMaxWidth - CustomHint.FShadowSize;
|
---|
441 | Strings.Create;
|
---|
442 | SplitText(AHint,Strings,CX,h);
|
---|
443 | w := CX;
|
---|
444 | Strings.Destroy;
|
---|
445 | End;
|
---|
446 |
|
---|
447 | inc(w,CustomHint.FShadowSize+16);
|
---|
448 | inc(h,CustomHint.FShadowSize+10);
|
---|
449 |
|
---|
450 | If Application.HintOrigin = hiTop Then Rect.Bottom := Screen.MousePos.Y
|
---|
451 | Else Rect.Bottom := Screen.MousePos.Y - 15 - h;
|
---|
452 |
|
---|
453 | inc(w,8);
|
---|
454 | inc(h,15);
|
---|
455 |
|
---|
456 | Rect.Right := Rect.Left + w;
|
---|
457 | Rect.Top := Rect.Bottom + h;
|
---|
458 |
|
---|
459 | THintWindow.ActivateHint(Rect,AHint);
|
---|
460 | End;
|
---|
461 |
|
---|
462 |
|
---|
463 | {
|
---|
464 | ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
|
---|
465 | º º
|
---|
466 | º Speed-Pascal/2 Version 2.0 º
|
---|
467 | º º
|
---|
468 | º Speed-Pascal Component Classes (SPCC) º
|
---|
469 | º º
|
---|
470 | º This section: TBalloonHint Class implementation º
|
---|
471 | º º
|
---|
472 | º Last modified: September 1995 º
|
---|
473 | º º
|
---|
474 | º (C) 1995 SpeedSoft. All rights reserved. Disclosure probibited ! º
|
---|
475 | º º
|
---|
476 | ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍŒ
|
---|
477 | }
|
---|
478 |
|
---|
479 | Procedure TBalloonHint.SetupComponent;
|
---|
480 | Begin
|
---|
481 | Inherited SetupComponent;
|
---|
482 |
|
---|
483 | If Not InDesigner Then
|
---|
484 | Begin
|
---|
485 | HintWindowClass := TBalloonHintWindow;
|
---|
486 | BalloonHint := Self;
|
---|
487 | Application.HintOrigin := hiTop;
|
---|
488 | End;
|
---|
489 |
|
---|
490 | Name := 'BalloonHint';
|
---|
491 | FBalloonShape := basRounded;
|
---|
492 | End;
|
---|
493 |
|
---|
494 |
|
---|
495 | Destructor TBalloonHint.Destroy;
|
---|
496 | Begin
|
---|
497 | If BalloonHint = Self Then BalloonHint := Nil;
|
---|
498 | Inherited Destroy;
|
---|
499 | End;
|
---|
500 |
|
---|
501 |
|
---|
502 |
|
---|
503 | Begin
|
---|
504 | RegisterClasses([TCustomHint,TBalloonHint]);
|
---|
505 | End.
|
---|