home *** CD-ROM | disk | FTP | other *** search
- TdfsSplitter v2.03
-
-
- Description:
- A descendant of the TSplitter component (D3, C3, & D4) that adds a
- "maximize - restore" button. This mimics the behavior of the splitter in
- Netscape Communicator v4.5. Clicking the button moves the splitter to its
- farthest extreme. Clicking again returns it to the last position.
-
-
- Contact Information:
- The lateset version will always be available on the web at:
- http://www.delphifreestuff.com
- If you have any questions, comments or suggestions, please use the Delphi
- Free Stuff Support Forum at:
- http://www.delphifreestuff.com/discus/
- If, for some reason, you can not use the web-based support forum, you can
- email me at bstowers@delphifreestuff.com. However, the support forum will
- always take precedence over direct email since it provides a resource that
- others can use when they have a problem. Every message posted to the forum
- is emailed directly to this account, so emailing me directly will not get
- your message to me any faster. It will only make the message less important
- for me to respond to since only one person (you) is benefiting from it
- instead of everyone interested. Having said all that, please do email me
- directly if it is regarding something that isn't really support related,
- i.e. just to say thanks (as novel as that idea is).
-
-
- Installation:
- Delphi 1, Delphi 2, C++Builder 1:
- * This component is not compatible with Delphi 1, 2, or C++Builder 1.
-
- Delphi 3, 4, 5, C++Builder 3 & 4:
- * Do one of the following:
- + Create a new package by selecting File | New and choosing Package from
- the New tab in the dialog.
- + Open an existing package file. I suggest you do this if you already
- have a package that you like to use for small, third party components.
- I specifically have a package named "3rdParty.dpk" that I use for
- small components that come from other people. Or, if you are using
- several of my components, you might create a "DFS.dpk" package and
- use it for all of my DFS components.
- * In the resulting package window, click the Add button.
- * In the Add dialog, on the Add Unit tab, enter the full path name of the
- component's registration unit (the unit that ends with 'Reg.pas', i.e.
- 'BrowseDrReg.pas') and click OK.
- * You may want to add the other source files (*.pas) to the package as
- well in the same manner as you did the registration unit. While this is
- not required, not doing it will cause compiler warnings when the package
- is compiled. The component will function fine either way, but I
- personally find the warnings very irritating and am not happy until
- every compiler warning and hint is gone.
- * If this package is new, or it has never been installed, click the
- Install button in the package window. If this package is already
- installed in Delphi, click the Compile button.
-
- C++Builder 5 and up:
- * Perform the "Delphi 3 and up, C++Builder 3 and up" steps above, except
- for the last step (Compile or Install).
- * Select the package the component has been added to, and choose
- Project | Edit Option Source to open the package options in the editor.
- * In the entry for PFLAGS, add the "-LUvcl50" option. For example:
- <PFLAGS value="-$YD -$W -$O -v -JPHNE -M -LUvcl50"/>
- * Perform the final step from above, Compile or Install.
- * For Borland's official word on this situation, open the C++Builder help
- file and search the index for "dsgnintf.dcu" and see the "Compiling
- packages with DsgnIntf" section.
-
- Delphi 6 and up:
- * Perform the "Delphi 3, 4, 5, C++Builder 3 & 4" steps above, except
- for the last step (Compile or Install).
- * Add the DesignIDE package to the Requires list of the package into which
- the component is being installed.
- * Perform the final step from above, Compile or Install.
- * This is necessary because of changes to the design-time support units
- introduced in Delphi 6. For complete information, see the Del6New.hlp
- file in your Delphi 6 Help directory. In the index, search for
- "upgrade issues" and in the resulting list of topics, select the
- "DsgnIntf renamed and related changes" topic.
-
-
- Notes:
- * If you like this Netscape style enhancement, you may also be interested in
- the TdfsToolBar component on my web site.
- * Button arrow directions follow the Align property. I tried with an
- independent ButtonDirection property, but it turned out to be just to nasty
- from both a coding and usage perspective.
- * A possible future enhancement if there is any interest: The D4 version of
- TSplitter has an OnPaint event. The button paint's after this fires, so you
- can paint the bar without worrying about the button itself. It might be
- nice to have an OnPaintButton event so that could be painted differently as
- well.
-
- Known Issues:
- * The fix implemented here for the TSplitter bug may not work on all versions
- of Delphi. It does work on Build 5.37 (from About box), but I've had one
- other person tell me he has Build 5.33 and the DoCanResize method is not
- protected virtual in that.
- * I can't control when the OnMoved event fires, and the way TSplitter is set
- up, it fires before the controls are actually moved in the maximize and
- restore processes. So, do not rely on positions if you code only for the
- OnMove event. The OnMaximize and OnRestore events do fire after the
- controls have moved, so if you need that information, you can get it there.
- * It is possible to get the direction arrows to paint outside of the button
- if you use silly values (like a button width of 25 and height of 40). If
- you're silly enough to do it, you're silly enough to like it. I don't
- consider it worth the trouble to fix. If you can make a reasonable case
- otherwise, send me email.
-
-
- TdfsSplitter Revision History:
- 2.03 + Updated for Delphi 6 compatibility. See updated install directions
- above.
- 2.02 + bsNetscape style wouldn't always minimize in the correct direction.
- + bsWindows style sometimes thought the close button was the
- minimize button, and vice versa.
- + Updated for C++Builder 5 compatibility.
- 2.01 + Changed ordering of window buttons on vertically aligned bsWindows
- style splitters. Close is now at the top, with maximize and
- minimize following in that order. It seemed much more correct that
- way.
- 2.00 + Added ButtonCursor property to control the cursor that is displayed
- when the mouse is over a splitter button.
- + Fixed problem of bsNetscape style not minimizing in the right
- direction for some alignments (bsNetscape was the only style in
- previous versions).
- + Added a ButtonStyle property that offers a new style of splitter.
- bsNetscape style makes the splitter behave as it always has.
- bsWindows offers a new style where you can have window caption style
- buttons (minimize, maximize, close). Minimize always moves the
- splitter down for horizontal and left for vertical, and vice versa
- for maximize. Added supporting properties for this new style:
- WindowsButtons to specify which buttons are to be displayed;
- OnMinimize event (bsNetscape always uses OnMaximize to simplify
- things for you); OnClose event for close button click. Because the
- component has no way of knowing what it should do for a "close" event,
- it does nothing except fire OnClose. That event must do whatever it
- deems necessary for a "close".
- Many properties are now only used for bsNetscape style:
- ArrowColor, AutoHighlightColor, ButtonColor, ButtonHighlightColor,
- ButtonWidth, ButtonWidthType, TextureColor1 & 2 are never used for
- bsWindows style. Buttons are always sized to be square based on
- the available area, and are always draw in the same color as normal
- caption buttons.
- + Made Minimized and Maximized properties published. Remember,
- + Splitter aligned right or bottom would not restore from maximized
- position. The position would gradually increase each time.
- 1.10: + New property, AllowDrag, that indicates whether the splitter can be
- moved by dragging with the mouse or not. If false, only the button
- can be used.
- + Fixed problem where splitter could not be dragged back to the minimum
- position just after it had been restored via the button.
- + The button arrow directions will now correctly update when dragging
- the splitter to/from the minimum position. That is, in previous
- versions, dragging to the min position would still leave the button
- in the old state. Hard to explain, but in a nutshell it works like
- Netscape now.
- 1.07: + It's *really* D5 compatible now. Small change between the D5 eval
- version and the real, shipping D5 version broke it.
- + Added simple demo.
- 1.06: + Updated for Delphi 5 compatibility.
- 1.05: + Updated for C++Builder 4 compatibility.
- 1.04: + Enabled property added. Thanks to Bob Arnson for implementing and
- sharing with us. If the splitter is not enabled, the button is not
- shown and the cursor reverts to the default instead of a splitter.
- + Added DFSSplitterReg unit. All IDE specific code (i.e. registering
- the component, property editors, etc.) are contained in this unit.
- This was done for two primary reasons: 1) Using the component in a
- Delphi or C++Builder expert would register the component as well.
- 2) Reduce code size in some cases -- usually the smart linker removes
- this sort of stuff since the app never references it, but now it's
- for certain since it isn't even in the unit. This change means that
- you need to install the component using the new "registration" unit
- instead of the unit containing the component.
- 1.03: + AutoHighlightColor property added by Ken Semerkant
- (ksemerkant@usa.net). Setting this property to TRUE will calculate
- the highlight color for the splitter button based on the user's
- window caption system color.
- 1.02: + Clicking beside (but not right on) the button when it was in the
- maximized state would cause it to lose it's maximized state.
- + Did the DoMaximize and DoRestore methods wrong. The OnMaximize and
- OnRestore events didn't fire if you set Maximized property in code.
- 1.01: + Added RestorePos property to public declaraions. It is the position
- that a maximized splitter will return to. It is useful for saving
- and restoring the state of a splitter between sessions. Thanks to
- Marcus Monning (info@mmsoftware.com) for this suggestion.
- + Fixed the nasty bug in D4 where TSplitter (not just TdfsSplitter)
- could get "stuck" at one of it's extremes. Thanks again to Marcus
- Monning for tracking this ExtCtrls.pas bug down.
- + Wasn't honoring the MOVEMENT_TOLERANCE value that's used to tell it
- when a small move is considered really a move and when it is a button
- click.
- + Certain conditions could cause the arrows to not be redrawn.
- + Cursor setting changed a bit to make it more like Netscape.
- + Marked Version property as not stored since it doesn't need to be.
- It would only add to the size of your EXE, and that's silly.
- 1.00: + Initial release
-
-