Introduction

ATBinHex Component

ATBinHex is a control that implements the quick file (stream) viewer. Only visible part of file (or stream) is loaded into viewer, so it's suitable to show files of unlimited size. Features:
  • Support for huge file sizes (of type Int64)
  • Support for Unicode file names
  • Support for multiple codepages: ANSI, OEM, EBCDIC, KOI8, ISO, Mac etc.
  • Many service methods implemented: copying to Clipboard, printing, search etc.

There are 5 view modes available:

  • Text: file is shown in text form
  • Binary: file is shown in binary form, with fixed line length
  • Hex: file is shown in hex dump
  • Unicode: Unicode contents of file is shown
  • Unicode/Hex: combined Hex and Unicode modes

Text mode

Binary mode

Hex mode

Unicode mode

Unicode/Hex mode

There is extended version of this component available, ATViewer, which can show files in such modes as RTF, Image, Multimedia, Internet and WLX Plugins. But if you just need to show a plain file dump, ATBinHex should be enough.

There is also FreePascal/Lazarus version (ported from original version), which is maintained by independent developer. This version is currently in beta stage, some features are not yet implemented. Refer to LuiPack page.


Installation

To install the component in the Delphi/C++Builder IDE:
  • Create a new package
  • Add ATBinHex.pas file to this package
  • Compile and install this package

Component will be installed into the "Samples" page of component pallette.


Additional libraries used

Additional optional libraries used in ATBinHex are:

  1. DIRegEx: used for RegEx (regular expressions) search. asoRegEx search option is available only when this library is compiled in. After you install this library, enable its usage in ATBinHexOptions.inc and ATStreamSearchOptions.inc files, uncomment the "REGEX" define.

  2. Tnt Unicode Controls: used for search in Unicode-named files (TTntFileStream class is used). After you install this library, enable its usage in file ATStreamSearchOptions.inc, uncomment the "TNT" define.

  3. ATPrintPreview: used to show the "Print preview" form before the actual printing in Print and PrintPreview methods. After you install this library, enable its usage in file ATBinHexOptions.inc, uncomment the "PREVIEW" define.

Download links for mentioned libraries are listed in Copyrights topic.


Usage: Properties

Properties

Mode Current view mode.
Possible values:
  • vbmodeText: Text mode
  • vbmodeBinary: Binary mode
  • vbmodeHex: Hex mode
  • vbmodeUnicode: Unicode mode
  • vbmodeUHex: Combined Unicode/Hex mode
TextEncoding Current text encoding.
Used in non-Unicode modes.
Possible values:
  • vencANSI: ANSI (locale dependent)
  • vencOEM: OEM (locale dependent)
  • vencEBCDIC: IBM EBCDIC US
  • vencKOI8: KOI8-R
  • vencISO: ISO (locale dependent)
  • vencMac: Mac (locale dependent)
  • plus many others, see the complete list in ATxCodepages.pas.
Notes:
  • When encoding is OEM, text may be drawn using different font, see FontOEM.
  • Technical notes:
    • ANSI, OEM, EBCDIC, KOI8, ISO, Mac encodings are always available.
    • EBCDIC, KOI8, ISO, Mac encodings are used via MultiByteToWideChar API, if possible. But if they are not installed on OS (for example, on Win9x), then the hardcoded codepages are used.
    • All other encodings are used via MultiByteToWideChar API, they are available only when installed on OS.
TextEncodingName (public, read-only) Name of current text encoding.
Note:
  • It can be read in all modes, even in Unicode. In Unicode modes is will show "UTF-16 LE" or "UTF-16 BE".
TextWrap Enables word wrap.
Works in Text and Unicode modes.
TextWidth
TextWidthHex
TextWidthUHex 		Width of text in fixed-length modes:
  • TextWidth: Binary mode.
  • TextWidthHex: Hex mode.
  • TextWidthUHex: Unicode/Hex mode.
TextWidthFit
TextWidthFitHex
TextWidthFitUHex 		Enables width auto-fit in fixed-length modes.
  • TextWidthFit: Binary mode.
  • TextWidthFitHex: Hex mode.
  • TextWidthFitUHex: Unicode/Hex mode.
Note:
  • These properties work correctly only with monospaced fonts. With fonts of variable width you can get text partially not fitting in the control.
TextSearchIndentVert
TextSearchIndentHorz 		Text indents, used when text is highlighted with successfull FindText / FindNext methods call.
  • TextSearchIndentVert: number of lines above selection.
  • TextSearchIndentHorz: average number of chars lefter than selection.
TextTabSize | Tabulation (#9) size.
TextOemSpecial Enables usage of special OEM font (when TextEncoding = vencOEM).
Note:
  • This property should be set to True only on older Win9x systems. NT systems support displaying of OEM text in Unicode (using MultiByteToWideChar API and Unicode fonts), so special OEM font is not needed.
TextGutter
TextGutterLines
TextGutterLinesBufSize
TextGutterLinesCount
TextGutterLinesStep
TextGutterLinesExtUse
TextGutterLinesExtList 		Gutter (vertical bar on the left) options:
  • Enables gutter.
  • Enables line numbers on gutter (in var length modes).
  • Buffer size for line numbers. Lines below this buffer are not counted. Recommended is ~300Kb .. 1Mb.
  • Maximal count of line numbers shown.
  • Step for line numbers. Minimal is 1, means "show numbers for all lines".
  • Enables lines numbers only for specified file extensions.
  • List of file extensions for the previous option. It can be, for example, 'c,cpp,h,hpp,pas,dpr'.
TextUrlHilight Enables URL/mail highlighting.
On URL clicking the OnClickURL event occurs.
Note:
  • For this option to work the RegEx library must be compiled in. See ATBinHexOptions.inc file: "REGEX" and "SEARCH" defines must be enabled.
TextNonPrintable Enables displaying of non-printable characters.
Note:
  • When enabled, spaces are shown as small dots, tabs (#9) are shown as "right arrows", and line ends are shown as "paragraphs".
Font (inherited)
FontOEM
FontFooter
FontGutter 		Fonts:
  • Default font.
  • OEM text font. Used in Text/Binary/Hex modes when (TextEncoding = vEncOEM) and (TextOemSpecial = True).
  • Font for printing footer.
  • Font for gutter line numbers.
Color (inherited)
TextColorGutter
TextColorURL
TextColorHi
TextColorHex
TextColorHex2
TextColorHexBack
TextColorLines
TextColorError 		Colors of:
  • Text background
  • Gutter
  • URLs
  • Search highlight color (for option asoShowAll)
  • Hex digits (even)
  • Hex digits (odd)
  • Hex digits background
  • Hex mode vertical lines
  • Error messages (displayed when read error occurs)
AutoReload
AutoReloadBeep
AutoReloadFollowTail
AutoReloadSimple
AutoReloadSimpleTime 		File auto-reloading options:
  • Enables auto-reload.
  • Enables beep on reload.
  • Enables repositioning at the file end, if previous view position was also at the end.
  • Sets "simple" notification mode. In this mode file is just checked by timer, no FindFirstChangeNotification API is used. This is recommended for network files (API doesn't work for this case).
  • Timer interval for "simple" notification mode, default is 1000 msec.
TextPopupCommands Set of commands visible in the popup (right-click) menu.
Commands available:
  • vpCmdCopy: Copy selection to Clipboard.
  • vpCmdCopyHex: Copy selection in hex form in Hex mode.
  • vpCmdSelectLine: Select current line.
  • vpCmdSelectAll: Select all text.
  • vpCmdEncMenu: Show encodings menu.
TextPopupCaption[AIndex: TATPopupCommand]
(public, write-only) 		Captions of popup (right-click) menu items.
For possible values of AIndex see TextPopupCommands.
MaxLengths[AIndex: TATBinHexMode] (public) Maximal line lengths.
These values are for all view modes of ATBinHex control: Text, Binary, Hex, Unicode. They set internal values that define the maximal length of a single string in a file. Values are 300 by default. For example, you may set MaxLengths[vbmodeText] to 1000 if user needs to work with strings of length 1000 in Text mode.
Notes:
  • Larger values increase size of memory buffer for a file, and slow down file reading.
  • Values are applied after file reopening, e.g. after calling Open/OpenStream/Reload methods and after changing Mode property.
MaxClipboardDataSizeMb (public) Maximal data size (in Mb) for copying to Clipboard.
Default value is 16 (Mb), which prevents visual "hanging" when too large block is selected accidentally before copying.
SelStart (public)
SelLength (public)
SelText (public, read-only)
SelTextW (public, read-only)
SelTextShort (public, read-only)
SelTextShortW (public, read-only) 		Current selection properties:
  • SelStart: Selection start (Int64, 0-based).
  • SelLength: Selection length (Int64).
  • SelText: Selection text (AnsiString) in non-Unicode modes.
  • SelTextW: Selection text (WideString) in Unicode mode.
  • SelTextShort: Same as SelText, but limited to the length of 256 chars.
  • SelTextShortW: Same as SelTextW, but limited to the length of 256 chars.
Note:
  • You should call SelText/SelTextW inside try...except block, because when selection is too big, exception is generated.
PosPercent
PosOffset
PosLine (public) 		Current scroll position:
  • Relative position in percents (%).
  • Absolute offset (Int64, 0-based).
  • Line number (1-based, 0 if line number is not found).
Notes for line numbers:
  • Lines are separated by: #13#10, #13, #10.
  • Line numbers are counted only for the first portion of file (see TextGutterLines*).
  • Line numbers are counted for the "current" copy of file, they may be incorrect if file was changed (and not reloaded) since the last display.
SearchResultStart
SearchResultLength
SearchStarted
SearchString (public, read-only) 		Search-related:
  • Search match position (Int64, 0-based). Negative if search was failed.
  • Search match length.
  • Property which shows was search started after the last file reload or not. It is set to False on each file realod.
  • Last search string used.
MarginLeft
MarginTop
MarginRight
MarginBottom (public) 		Printing margins.
Currently in mm.
TextLineSpacing | Interline spacing in pixels (default is 0).
TextEnableSel Enables selection.
If set to False, text cannot be selected by user.


Usage: Methods

Methods

function Open(const AFileName: WideString; ARedraw: Boolean = True): Boolean;
Opens a file and optionally redraws control.
Result is True if file was successfully opened or False if file was not found or other open error occured.
Pass the empty AFileName string to close the currently open file.
Note:
  • ARedraw parameter must be set to False in the case you create ATBinHex object at run-time and then call Open('')/OpenStream(nil) in your destructor to free data. In this case the control must not be redrawn because this will cause its parent access error.
function OpenStream(AStream: TStream; ARedraw: Boolean = True): Boolean;
Opens a stream and optionally redraws control.
Result is True if stream was successfully opened.
Pass nil to stop use the currently used stream.
Notes:
  • See note for Open.
  • Stream is not freed automatically, you should free it by yourself, but only after you call OpenStream(nil).
  • In Delphi 5 TStream.Size is declared as Longint, so if you are going to open streams larger than 2 Gb, you should use newer Delphi versions which declare TStream.Size as Int64.
procedure Reload;
Reloads current file or stream.
function FindFirst(const AText: WideString; AOptions: TATStreamSearchOptions): Boolean;
Starts text search.
AText: text to search (Note: Unicode string must be in the Little-Endian format).
AOptions: search options that are set of flags:
  • asoWholeWords: Search for whole words only
  • asoCaseSens: Case-sensitive search
  • asoBackward: Backward search (Note: not supported for RegEx search)
  • asoRegEx: RegEx (regular expressions) search
  • asoRegExMLine: Multiline regex search (used with asoRegEx)
  • asoFromPage: Starts search from the current page, otherwise in entire file
  • asoShowAll: Highlights all occurances of search string
Result is True if text was found.
Match position and length are saved in SearchResultStart and SearchResultLength properties. You should manually highlight found match using SetSelection method.
Notes:
  • RegEx search (asoRegEx option) is available only when RegEx library is compiled in. See ATStreamSearchOptions.inc file.
  • Unicode-named files can be handled during search only when Tnt Unicode Controls are compiled in. See ATStreamSearchOptions.inc file.
  • When non-RegEx search is performed, two different search functions are used: one for 1-byte Text/Binary/Hex modes and other for Unicode modes; they give different search results.
function FindNext(AFindPrevious: Boolean = False): Boolean;
Continues text search.
AFindPrevious: continue search in reverse direction (Note: not supported for RegEx search).
Result is the same as for FindFirst method.
Note:
  • After you change view mode or reload a file, you cannot continue search immediately, you must first call FindFirst.
procedure CopyToClipboard(AsHex: Boolean = False);
Copies current selection (AnsiString or WideString depending on current view mode) to Clipboard.
AsHex may be True in Text/Binary/Hex modes, in this case the hex-encoded string (bytes in the hex form separated by spaces) will be copied.
Notes:
  • This procedure may fail and show an error message if selection is too big to fit in memory.
  • To prevent visual "hanging" during copying of too large block, data size is internally limited by MaxClipboardDataSizeMb value.
procedure SetSelection(const AStart, ALength: Int64; AScroll: Boolean; AFireEvent: Boolean = True; ARedraw: Boolean = True);
Sets selection and optionally scrolls control to selection start.
AStart: selection start (0-based),
ALength: selection length,
AScroll: scroll control to selection start afterwards,
AFireEvent: fire the OnSelectionChange event afterwards,
ARedraw: redraw control afterwards.
Note:
  • If AScroll = True, control will be scrolled using the code:
      Scroll(AStart, TextSearchIndentVert, TextSearchIndentHorz);
procedure Scroll(const APos: Int64; AIndentVert, AIndentHorz: integer; ARedraw: Boolean = True);
Scrolls control to specified position.
Control will be scrolled vertically so that position APos (0-based) is visible by AIndentVert lines lower than top border; if after that the position is still out of screen, control will be scrolled horizontally so that position is visible by AIndentHorz chars righter than left border.
ARedraw: allow to redraw control afterwards.
procedure SelectAll;
procedure SelectNone;
Selects all text.
Deselects text.
procedure Print( APrintRange: TPrintRange; AFromPage: Integer = 1; AToPage: Integer = MaxInt; ACopies: Integer = 1; const ACaption: string = '');
Shows "Print preview" dialog and allows user to print text.
APrintRange: print range (type declared in Dialogs.pas):
  • prAllPages: prints all text.
  • prSelection: prints selection only.
  • prPageNums: prints pages from AFromPage to AToPage.
ACopies: number of print copies,
ACaption: caption of print job.
Notes:
  • This method shows "Print preview" form only when ATPrintPreview component is used by enabling the "PREVIEW" define in ATBinHexOptions.inc. Otherwise it just prints the text without questions.
  • Resulting page sizes are affected by Margin* properties and printer page sizes, not by visible control size.
procedure PrintPreview;
Shows "Print preview" dialog for current selection.
When text is selected (SelLength <> 0), this method calls Print(prSelection), otherwise it calls Print(prAllPages). Note:
  • This method works only when ATPrintPreview component is used by enabling the "PREVIEW" define in ATBinHexOptions.inc. Otherwise it does nothing.
function IncreaseFontSize(AIncrement: Boolean): Boolean;
Increases (AIncrement = True) or decreases current font size.
Result is True if font size was changed or False if minimal or maximal size value is already set.
Note:
  • For raster fonts (the default OEM font is raster) this size change is not simple increment by one.
procedure TextEncodingsMenu(AX, AY: Integer);
Shows menu of all available encodings for the current mode.
Menu is shown at point (AX, AY).
Note:
  • In Unicode modes this method displays the special Unicode menu, which contains only "UTF-16 LE" and "UTF-16 BE" items.


Usage: Events

Events

OnFileReload | Fired after file auto-reload complete (when AutoReload = True).
OnSelectionChange | Fired on text selection change.
OnOptionsChange Fired after an option has been changed by user.
Examples of such changable options:
  • Text encoding can be changed using right-click menu.
  • Font size can be changed using Ctrl + Mouse wheel.
OnSearchProgress Fired on text search progress.
It is of type:
  TATStreamSearchProgress = procedure(
    const ACurrentPos, AMaximalPos: Int64;
    var AContinueSearching: Boolean) of object;
Parameters:
  • ACurrentPos: Current search position.
  • AMaximalPos: Maximal search position.
  • AContinueSearching: Initially set to True. If changed to False then search will be stopped.
OnDrawLine Fired before a line is to be drawn in variable length modes (Text, Unicode).
You can use it to color the entire line or to disable line drawing.
It is of type:
  TATBinHexDrawLine = procedure(
    ASender: TObject;
    ACanvas: TCanvas;
    const AStr, AStrAll: WideString;
    const ARect: TRect;
    const ATextPnt: TPoint;
    var ADone: Boolean) of object;
Parameters:
  • ASender: Sender ATBinHex object.
  • ACanvas: Canvas which parameters you can change. It is allowed to change ACanvas.Font.Color and ACanvas.Brush.Color only.
  • AStr: String part (counting word wrap) which is to be drawn.
  • AStrAll: String (entire, w/o counting word wrap).
  • ARect: Rectangle in which string is to be drawn.
  • ATextPnt: Point after gutter.
  • ADone: Initially False; if set to True, string will not be drawn.
OnDrawLine2 Fired after a line has been drawn in variable length modes (Text, Unicode).
You can use it to color some parts of the line.
It is of type:
  TATBinHexDrawLine2 = procedure(
    ASender: TObject;
    ACanvas: TCanvas;
    const AStr: WideString;
    const APnt: TPoint;
    const AOptions: TATBinHexOutputOptions) of object;
Parameters:
  • ASender: Sender object.
  • ACanvas: Canvas object. You should not change canvas parameters.
  • AStr: String which has been drawn.
  • APnt: Canvas point at which string has been drawn.
  • AOptions: Helper options record. See ATBinHex.pas for details.
Note:
  • To color some part of the line, you should get string extent first. Use the StringExtent function from ATBinHex.pas for this.
OnClickURL Fired on URL/mail clicking, when URL highlighting is enabled.
It is of type:
  TATBinHexClickURL = procedure(
    ASender: TObject;
    const AString: AnsiString) of object;


Usage: Thread-safety note

Thread-safety note

The current component version is not thread safe. But if you need to use it in a multi-thread application, the following hint should help to use it right. For example, you need to call Open method from several threads. Don't do this, instead do it in message way: all threads should send a message (it may be some Windows message not used in your application, e.g. EM_DISPLAYBAND) to main thread, informing it that a filename should be opened. Pointer to a filename can be passed as message parameter. So the main message handler calls Open.

Note: this may be a risk of receiving messages from several threads at almost the same time, so additional boolean "Busy flag" should be set on message-handler start and reset on exit.


Usage: Hints and FAQ

Hints and FAQ

Q1: How can I load the contents of an AnsiString or WideString?

A: You should do it using OpenStream method, giving it a TMemoryStream as a parameter. Sample procedures for AnsiString and WideString are shown below. Note that you should free stream only after calling Viewer.OpenStream(nil), otherwise control will try to read deallocated memory on scrolling!

Q2: I have an issue with horizontal scrollbar. Even when text becomes short enough, scrollbar doesn't disappear...

A: This is done as workaround for Windows XP bug: when scrollbar is about to disappear, this may cause both scrollbars and window border to disappear. You can disable this workaround by commenting the "HSCROLLBAR_WORKAROUND" define in ATBinHexOptions.inc.

The RichEdit control doesn't have this problem because it precalculates widths for all strings and sets scrollbar size to the max value. We cannot do this in ATBinHex control, so the scrollbar size is calculated dinamically.

Q3: After changing a property, it is not applied.

A: Many properties require that after changing them, file should be reopened (using Open/Reload methods).


Versions history

2.8.1 (2012)
  • Added: TextLineSpacing prop.
  • Added: TextEnableSel prop.
2.8.0 (oct 2010)
  • Added: asoShowAll search option.
  • Added: TextColorHi prop.
2.7.0 (feb 2010)
  • Added: TextGutterLinesStep prop.
  • Added: Hex mode: mouse selection on the digits part.
  • Changed: "HScrollbar_workaround" define renamed to "Scroll".
  • Changed: "Debug" define renamed to "Test".
  • changed: parameter added to OnDrawLine.
  • fixed: "Select line" command for long lines.
2.6.0 (mar 2009)
  • Added: URL/mail highlighting.
  • Changed: OnDrawLine parameters.
  • Added: OnDrawLine2 event.
  • Added: asoRegExMLine search option.
  • Fixed: On reloading selection is restored too.
  • Fixed: Tab display for fixed modes.
2.5.0 (7 dec 2008)
  • Added: Delphi 2009 compat.
  • Added: SearchStarted, SearchString prop.
  • Added: AutoReloadSimple, AutoReloadSimpleTime prop.
  • Added: OnDrawLine event (allows to color lines).
  • Fixed: D2009 text search.
2.4.0 (06 sep 2008)
  • Added: Line numbers: TextGutterLines*, FontGutter.
  • Fixed: "Positions out of range" exception.
  • Fixed: Printing.
  • Fixed: Reload line up issue.
2.3.0 (21 jun)
  • Added: PosLine property.
  • Fixed: Tailing issue.
2.2.0 (01 Mar 2008)
  • Added: Printing:
    • Margin* properties.
    • Margins handling during PrintSetup call.
    • FontFooter property.
    • Page numbers are printed.
    • Changed: Print declaration.
  • Added: Notepad minor feature: follow tail on control resize.
  • Fixed: Vertical scrollbar may disappear on some files.
  • Fixed: AutoReload could not apply sometimes.
2.1.0 (27 Jan 2008)
  • Added: FindFirst method has additional asoFromPage option.
  • Added: FindNext method has additional AFindPrevious parameter to find previous match.
  • Changed: Printing code separated to ATBinHexPrint.inc.
  • Removed: VariableScrollbar property.
  • Fixed: FindNext error after changing view mode.
2.0.0 (17 Dec 2007)
  • Added: TextGutter, TextGutterWidth, TextColorGutter properties.
  • Added: Tabs (#9) have correct dynamic size (currently only for monospaced fonts).
  • Fixed: AutoReload option could not apply sometimes.
  • Fixed: Trailing spaces showing on word wrap.
1.9.2 (28 Oct 2007)
  • Added: TextOemSpecial property.
  • Added: TextNonPrintable property.
  • Changed: Msg* properties changed to single TextPopupCaption[] property.
1.9.0 (20 Oct 2007):
  • Added: Many codepages added, see complete list in ATxCodepages.pas. See notes for TextEncoding property. Note: RegEx search for custom codepages is not yet implemented.
  • Added: TextEncodingName property.
  • Added: TextEncodingsMenu method.
  • Added: "Encodings menu" popup menu item.
  • Added: Mouse shortcut for zoom: left button + wheel.
  • Added: Reload method.
  • Changed: OnScaleChange event removed, OnOptionsChange added instead.
  • Fixed: Number of wheel scroll lines now read correctly.
1.8.0 (28 Sep 2007):
  • Added: View mode "Unicode/Hex", similar to FAR manager's one.
  • Added: Nice scroll by middle mouse click, like in MSIE / Forefox.
  • Added: Support for KOI8-R codepage. More codepages will be added later.
  • Added: Properties TextWidthUHex, TextWidthFitUHex.
  • Added: Properties SelTextShort, SelTextShortW.
  • Changed: Auto-scroll horz. speed decreased (more smooth scroll).
1.7.0 (01 Aug 2007):
  • Changes regarding printing:
    • Changed: Redraw procedure refactored so now it's possible to use DrawTo to draw control contents on other bitmaps, not only on screen.
    • Changed: Print method rewritten, it uses DrawTo, so control prints itself in exactly the same form as it's shown on screen (but grayscaled). The printing is now possible in all modes, including Unicode!
    • Added: ATPrintPreview component is used to show print preview form. It's enabled by "PREVIEW" define in ATBinHexOptions.inc.
    • Added: PrintPreview method.
  • Added: Only chars missed in the current font are replaced with dots.
  • Added: Visual indication of Enabled property (grayed text).
  • Added: OnScroll event.
  • Changed: Property ScrollPageSize renamed to VariableScrollbar, it's default value is False now.
1.6.2 (16 Jun 2007):
  • Added: Auto-scroll when mouse is lefter/righter than client area
  • Added: Shift + Mouse Wheel scrolls text horizontally
  • Added: Ctrl + Mouse Wheel changes font size
  • Added: OnScaleChange event
  • Changed: ATStreamSearch updated for DIRegEx 4.1.1 release
  • Fixed: Possible AV on text selection under Multi-Byte locales
1.6.0 (28 Mar 2007):
  • Changed: License updated to MPL 1.1
  • Added: ATStreamSearch helper component
  • Added: RegEx search option (DIRegEx library must be used)
  • Changed: FindFirst/FindNext methods added instead of FindText method
  • Added: Feature like in RichEdit: triple click selects current line
  • Added: MaxClipboardDataSizeMb property
  • Changed: TextSearchIndent property renamed to TextSearchIndentVert
  • Changed: OnSearchProgress event added instead of SearchCallback property
  • Changed: ATBinHexDef.inc file renamed to ATBinHexOptions.inc, several options added to it
1.5.8 (24 Feb 2007):
  • Changed: Files are not locked for deletion anymore (Note: not supported in Win9x)
  • Added: IncreaseFontSize method
  • Added: OnFileReload event
1.5.6 (14 Dec 2006):
  • Added: FindText method works also in Unicode mode
  • Added: Scroll method
  • Added: TextSearchIndentHorz property
  • Added: Feature similar to RichEdit's: selection can be changed by performing Click at block start and Shift+Click at end
  • Changed: Declaration of SetSelection method
  • Removed: AutoCopy property: it can be done via OnSelectionChange event
1.5.5 (24 Nov 2006):
  • Added: TextPopupCommands property
  • Added: MaxLengths property
1.5.3 (02 Oct 2006):
  • Added: AutoReload, AutoReloadBeep, AutoReloadFollowTail properties
  • Added: AutoCopy property
  • Added: TextTabSize property
  • Added: TextColorHexBack property
  • Added: PosOffset, SelText, SelTextW properties
  • Added: OnSelectionChange event
1.5.2 (09 Sep 2006):
  • Changed: Most of units renamed to AT*.* to avoid name confusions
  • Added: Thread safety note in the help
1.5.1 (04 Aug 2006):
  • Added: OpenStream method
  • Added: Feature similar to RichEdit's: double click selects word under cursor
1.5.0 (22 Jul 2006):
  • Added: Implemented Text mode (with variable line length)
  • Added: Unicode mode is now also has variable line length
  • Added: Select/Copy commands work in Unicode mode too
  • Added: FontOEM, ScrollPageSize properties
...

1.3.2 (17 Jun 2006):

  • Initial release (previous versions were included in the ATViewer pack)


License

This package, unless otherwise stated in the particular source code file, is distributed under Mozilla Public License Version 1.1 (the "License"). You may obtain a copy of the License at http://www.mozilla.org/MPL/

Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License.

Copyright © 2006-2007 Alexey Torgashin.


Copyrights & Links

  • ATBinHex, ATStreamSearch, ATFileNotification, ATPrintPreview © 2006-2008 Alexey Torgashin
    http://www.uvviewsoft.com

  • Tnt Unicode Controls © 2002-2007 Troy Wolbrink
    http://www.yunqa.de

  • DIRegEx © 2000-2007 Ralf Junker, The Delphi Inspiration
    http://www.yunqa.de


Contacts

If you encounter problems with this component, or you have comments or suggestions, contact the author:

Alexey Torgashin
http://www.uvviewsoft.com