TAnimExplorerButton
----------------------
Shareware version 3.0

TAnimExplorerButton has the look of the buttons in Microsoft Internet 
Explorer with the enhanced capability of playing an animation when the 
mouse pointer moves over the button. It has some new cool and very useful 
features you can find described below. Check out the Demo application 
included for a complete preview of all its features.
TAnimExplorerButton has all the properties, methods and events common for 
all other controls. The new published ones are described below:

Properties:
-----------

Alignment			determine how the text and the 		
	taCenter		picture(animation) are aligned
	taLeftJustify
	taRightJustify

AllowAllUp			when working in a group as a speed button, 	
	True			specify if all button can be unpushed (up) 	
	False			or at least one should be pushed

Animation			if the Bitmap property containes an 	
	Always			animation, when should it be played. If 	
	Never			Always, the animation will be played 	
	OnMouseOverOnly		regardless of the mouse position, if 				
				OnMouseOverOnly - only when the mouse 				
				pointer is over the button

+AnimationOptions
	aoLoop			whether the animation should be looped - 		
		True		after finishing the last frame go over from 		
		False		the first one and so on..
	aoReverse		play the animation backwards
		True
		False
	aoBackAndForth		the animation is played from the first 		
		True		up to the last frame, then back to the 		
		False		first one 
	aoStartOver		if True, when the mouse pointer leaves the 		
		True		button the picture is set to the frame # 		
		False		specified in AnimStartOverFrame property 				
				and on mouse moving back in - the animation 
				is played from this frame on.	

AnimEndDelay		specify (in frames) the delay to pause after 	
	integer	value	an animation sequence (looped, reversed 				
			or whatever specified in AnimationOptions)

AnimEndDelaySameFrame	if True, the animation is paused on 	
	True		the current frame, else the next frame 	
	False		is displayed and the the pause takes 					
			place

AnimFrame		contains the current frame displayed. can 	
	integer value	be read on runtime, or set on designtime to 				
			specify the start frame for the animation.

AnimFrameCount		total number of frames in the bitmap in 	
	integer value	Bitmap property. If it does not contain 				
			animation but single picture set this value 				
			to 1.

AnimInterval		the frequency (in ms) in which frames 	
	integer value	are displayed, resulting in animation.

AnimStartOverFrame	the frame number which to display and 	
	integer value	from which to start from, when the mouse 				
			pointer leaver the button border. See 				
			aoStartOver in AnimationsOptions

BevelShow		specify when the button border (bevel) to 	
	Always		be shown. OnMouseOverOnly shows the 	
	Never		bevel only when the mouse pointer is over 	
	OnMouseOverOnly	the button and there is no bevel when it's 				
			away. If Never is selected the bevel is 				
			never shown and button cannot be 				
			pushed - you can still specify an OnClick 				
			event, which will be fired on button click, 				
			but the button will not be visibly pushed

BevelStyle		the style of the button border (bevel). When 	
	bsRaised	bsRaised the button is visibly unpushed 	
	bsLowered	(up) in normal state. When bsLowered it's 				
			visibly pushed in normal state.

Bitmap			contains the picture to be displayed in the 	
	bitmap picture	button or the animation to be played. When 				
			an animation should be played the bitmap 				
			should contain the animated frame 				
			sequence  in a single horizontal line. Hence 				
			all frames has the same height and they 				
			should have equal widths in order to be 				
			displayed (and played correctly). In 				
			formulas:
				Bitmap.Height:=FrameHeight;
				Bitmap.Width :=FrameWidth*FrameCount;

BitmapDisabled		contains the alternative picture to be 	
	bitmap picture	displayed when the button is disabled. 				
			Cannot be an animation. If empty, the 				
			component will try to 'disable' the picture 				
			(or current frame if there's an animation in 				
			Bitmap property) in Win95 style. Though if 				
			you are not satisfied with the result you can 				
			specify your disabled picture, but it will 				
			always be one and the same, regardless of 				
			the current frame

BitmapNoFocus		contains the alternative picture to be 	
	bitmap picture	displayed when the mouse pointer is not 				
			over the button - shaded state. There are 				
			three shading types provided in the 				
			ShadingType property and this is in case 				
			they do not produce a satisfactory result. 				
			Will not work with the Animation property 				
			set to Always - this will show the picture in 				
			BitmapNoFocus property instead of shaded 				
			animation

BitmapPadding		the offset (in pixels) the picture to be 	
	integer value	moved up, down, left or right (depending on 				
			the Layout property) for fine adjustment if 				
			needed. Negative values move in opposite 				
			direction. See also TextPadding

Down			the initial state of the button - available when the 	
	True		button works in a group with other buttons 	
	False		like speed button. If True, the initial state is 				
			down

DropDownMenu		specify a menu to be displayed when the 	
	TPopupMenu	button is clicked (with the left mouse 				
			button). There could be a mark shown, 				
			indicating that the button has a drop-down 				
			menu by setting the boDropDownMark 				
			option in Options property to True

Layout			specify the relative positions of the picture 	
	lBitmapTop	and the caption
	lBitmapBottom
	lBitmapLeft
	lBitmapRight

+Options
	boMonoDisplay		if True, the picture (or current frame) 		
		True		is grayed (or the picture in 		
		False		BitmapNoFocus property is shown, if 					
				any assigned) when the mouse 					
				pointer is not over the button
	boIconOnly		if True, the text in Caption property is not 		
		True		displayed - the button containes only 		
		False		the picture (animation)
	boDropDownMark		if True, a smal arrow is shown in the 		
		True		upper right corner to indicate that a 		
		False		drop-down menu is available when 					
				the button is clicked

PopupMenu		specify a popup menu to be shown when 	
	TPopupMenu	the button is right-clicked (with the right 				
			mouse button)

ShadingType		the type of shading to be used to grayscale 	
	stLight		the picture shown when the mouse pointer 	
	stMedium	is not over the button. If you're not satisfied 	
	stDark		with any of the types provided, you can 				
			assign an alternative picture to be 				
			displayed by using the BitmapNoFocus 				
			property

ShowDownPattern		if True, the background is lighted up when 	
	True		the button is in pushed state - available 	
	False		only when the button works in a group with 				
			other buttons

TextPadding		the offset (in pixels) the caption to be 	
	integer value	moved up, down, left or right (depending on 				
			the Layout property) for fine adjustment if 				
			needed. Negative values move in opposite 				
			direction. See also BitmapPadding

Transparency			specify which color should be used as 
	None			transparent color - through which the 
	UpperLeftCornerColor	background shows. If None, the 
	UserSpecifiedColor	picture (animation) will not be transparent. 				
				If UpperLeftCornerColor, the color of the 				
				pixel at position [0,0] of the picture (frame) 				
				will be used. If UserSpecifiedColor, the 				
				color in TransparentColor property will be 				
				used.
Please note that because of the flicker-free drawing method used, the transparency 
will work on non-changing backgrounds only! Anyway there isn't much sense of placing 
an animated button over a playing animation, so there should be no problems. 
If for any reason the background is changed you can call the UpdateBackground method 
to refresh the button's background

FontNoFocusColor	specify the color for the button caption 	
	TColor		when the mouse pointer is not over the 				
			button


Methods:
-------

UpdateBackground	because of the flicker-free drawing method 				
			used, the tranparency will not work on 				
			changing backgrounds. However if the 				
			background is changed or the button 				
			background needs to be refreshed call this 				
			method.


Events:
-------

OnChangeFrame		this event is fired every time new frame is 				
			being displayed, i.e. with frequency 				
			specified in AnimInterval property

OnMouseIn		this event is fired every time the mouse 				
			pointer enters inside the button border

OnMouseOut		this event is fired every time the mouse 				
			pointer leaves the button border


Installation:
-------------

Place Aexpbtn.dcu and Aexpbtn.dcr files in your /Delphi/Lib directory 
(or in any other, but you'll have to enter its pathname in the SearchPath field). 
Then from the Component menu choose Install. Click Add, then Browse. Go through 
directories and choose Aexpbtn.dcu file. Then click Open, then OK and there you go.
The component should be found in the 'Shareware' palette.


Shareware notice:
-----------------

This version of the TAnimExplorerButton is Shareware. There is shareware 
notice screen showed every time it's loaded.
You can use this component for a limited time and if you like it you must 
register it. With registering you will get the newest version of the component, 
without the shareware screen, plus free technical support, future updates, etc.
The registration fee for TAnimExplorerButton component is $20.
Source code is available upon request for additional $30.
Registered versions will be sent to you via e-mail (you must provide a valid 
e-mail address, or you'll not get what you paid for) or on a 31/4" diskette for 
additional $5 for disk and postage - I'm sorry but the disks are very expensive
here!

Please send the money to the following address:

Mladen Markov
kv.Vazrajdane, bl.39, entr.4, apt.84
Varna 9020
BULGARIA

Because the bank structure here in Bulgaria is quite 'fake' (as is everything 
here) I'm not sure that I could cash checks and money orders. Thus I'd prefer 
if you send the money in cash - wrapped in a sheet ot paper so that the money 
cannot be seen through the envelope. But if you're afraid that it can be lost 
(which is quite possible, especially in Bulgaria) it's ok to send the money in 
a way that is most convenient for you. I'll manage to cash it somehow =)

Feel free to contact me you have any comments, suggestions, bug reports or 
whatever else you can think of, even just to say 'Hi' or to share some 
experience..

you can contact me via
e-mail: 	cokeman@m-net.arbornet.org
		cokeman1@geocities.com
mail at the above address
phone/fax: (++359-52-447703)
or visit my homepage - 
http://www.geocities.com/Hollywood/Lot/2991

									July 30 1997