News from 20-Mar-2010 (KOL & MCK v2.89)
Conditional symbol FORCE_ALTERNATEFILENAME added to force alternative file names and paths in UNICODE version.
Some changes for better support UNICODE in methods and functions FBitBtnGetCaption, NewMDIChild, TGraphicTool.SetFontName, ExcludeAmpersands.
[+] A method TCanvas.OffsetAndRotate added to simplify world transform operations on a canvas. VK
[+] A method TControl.TBClear added (to remove all the toolbar buttons) and TControl.TBButtonLParam property added to get access to LParam of a button on the toolbar. D[u]fa
[+] A function added Extended2StrDigits( D: Double; n: Integer ) which provides exactly n digits following decimal point. VK
[+] A method added TIniFile.ValueDouble to read and write floating point values. VK
[*] A type TWindowsVersion extended with wvSeven (for a function WinVer which is changed to recognize Windows 7 as a separate OS version).  
An inc file with MCK mirror types definitions added for better support D2006-D2010 and it is included in KOL.pas for such Delphi versions. definitions provided for Delphi 2010 (ver210 of the copiler).
[-] A function NormalizeUnixText fixed for case when the first character is line feed (#10).  
[-] A method TDirList.ScanDirectory fixed for memory leak. D[u]fa
[-] Creating checkmark menu item fixed (method TMenu.Insert). shilou
[-] TMenu.RemoveSubMenu fixed.  
[-] A function WndFuncCombo fixed for KEY_PREVIEW (to allow processing keys pressed in combo first by the form if it has property KeyPreview = TRUE)  
[-] A function WndProcNotify fixed to prevent endless loop in passing notification message from a parent to its child control. Galkov
Memory leak fixed in a method TControl.CreateWindow for UNICODE_CTRLS.  
[-] In a function WndProcTransparent a condition for double buffering fixed.  
[-] A function TControl.SetCurIndex fixed (assigning a value to fCurIndex to prevent access violation and other wrong consequences in result of unsuitable fCurIndex value for a TabControl )  
[+] definitions are added TBIF_BYINDEX and for header control (HDM_, HDN_ and others).  
Method TCanvas.Arc fixed for ASM version. VK
[-] visual_xp_styles: function CheckThemes fixed for case of DLL.
Function WndXPMessage fixed for resource leaks.
For case when EXTERNAL_KOLDEFS symbol defined, it includes both PROJECT_KOL_DEFS.INC and EXTERNAL_DEFINES.INC files.  
KOLadd.pas, KOLDirDlgEx.pas: A lot of changes for better support UNICODE_CTRLS.
MCK: changes in code generation to better support UNICODE_CTRLS (TKOLToolbar.SetupParams, PCharStringConstant)
Generating constants for menu items changed: now these are not changeable constants any way.  


News from 28-Sep-2008 (KOL & MCK v2.88)
[*] Font by default changed to System (for case when UNICODE_CTRLS turned on - to Tahoma). In MCK properties added: TKOLProject.DefaultFont, TKOLForm.FontDefault, these are controlling when to generate code to create fonts more accurately.
[+]App Wizard MCKAppExpert200x.pas added to create KOLMCK project (Delphi 7, 2005-2009). Author: D[u]fa
Support of Delphi 2009 added. Author: azsd (compatibility with versiions <= D7 and better code generation for Delphi 200х. Author: D[u]fa)
Support of Unicode for MCK in Delphi 2009. Author: MTsv DN
[+]UNI Method TWStrList.Put, procedures:_aLStrFromPCharLen,_aLStrFromPChar, RemoveWStr. Author: azsd
[+]UNI Method TCanvas.WTextArea. Author: MTsv DN
[-]UNI Errors fixed for case when UNICODE_CTRLS is on: CrackStack_MapInResource, CrackStack_MapInFile, ToRadix,InsertSeparators, IndexOfChar. Drawing Unicode symbols fixed in procedures WndProcBitBtn, WndProcLabelEffect, TTrayIcon.SetTrayIcon. Diiding tooltips by half for UNICODE_CTRLS fixed. Author: MTsv DN
[-] TBitmap.SetHeight changed (format changing fixed). Author: MTsv DN (previous version without restoring PixelFormat is still working in case SMALLER_CODE or SMALLEST_CODE).
[-]UNI Method TGraphicTool.SetFontName fixed (using function (W)StrLCopy), function StrIsStartingFrom fixed (for case when either string or pattern is nil), function WStrLoadFromFile fixed (in unicode version ANSI function File2Str was calling), method TControl.TBSetTooltips fixed for unicode. Author: azsd.
[-] Function Color2RGB fixed (ASM-version). Author: Hallif
[-] Fixes in TLIST_FAST. Authors: Vladimir Kladov & mdw.
[-] Fix in richedit (incorrect working with raWord). Author: =BuckLr=
[-] Working with UTF-8 files with BOM in TWStrList fixed. Author: azsd


News from 21-Mar-2008 (KOL & MCK v2.87)
[+] Functions NextPowerOf2, ToRadix, FromRadiStr, InsertSeparators, Str2File added.
[*] UNICODE_CTRLS: functions IndexOfChar, IndexOfCharsMin, IndexOfStr updated (using KOLString).
[+] Functions CrackStack_MapInResource and CrackStack_MapInFile added (can be used for debugging).
[-] Function NormalizeUnixText fixed.
[-] Property TStream.Size fixed for memory stream on assigning value 0 for empty stream.
[-] Function TWStrList.SetText fixed (by mdw).


News from 19-Jan-2008 (KOL & MCK v2.86)
[*] KOL: symbol TOOLBAR_FORCE_CHILDALIGN has no more effect in Win98 since it can crash the application there. While creating compatible with Win9x application, avoid placing aligned child controls on a toolbar control.
[+] A method TWStrList.Last and a function WCharIn added. In a method TWStrList.MergeFromStream, removing of the $FEFF prefix provided while loading Unicode text file. In TWStrList.SetText, terminating 0 is provided.
[*] UNICODE_CTRLS: it is possible now to combine it with USE_PROP symbol (ID_SELF and ID_PREVPROC are declared as KOLString).
[-] For UNICODE_CTRLS, using property TOpenDirDialog.InitialPath fixed.

Functions added: Scrollbar_GetMinPos, Scrollbar_SetMinPos, Scrollbar_SetAll, Scrollbar_GetMaxPos, Scrollbar_SetMaxPos, Scrollbar_GetCurPos, Scrollbar_SetCurPos, Scrollbar_SetPageSz, Scrollbar_GetPageSz, Scrollbar_SetLineSz, Scrollbar_GetLineSz - to use it together with ToGRush unit in dual code.

[*] IndexOfChar, IndexOfStr changed to understand #0 as a usual character, not as a string termination.
[-] MCK: generating code for non-standard Color set up fixed (typecast provided to prevent warnings).
[-] For cases when CanResize is false or minimize or maximize icon are disabled, also a code is generated which sends WM_INITMENU to a form window handle at startup. This provides correct disabling of correspondent system menu items as well.
[+] Property LikeSpeedButton is provided for TKOLCheckBox, TKOLRadioBox mirror controls and it can be easy inherited now from TKOLCustomControl just listing it in published properties of the descendant.
[*] Components TKOLGif, TKOLPng are updated.


News from 3-Nov-2007 (KOL & MCK v2.85)
[*] KOL: a lot of conditional symbols added last time are described in comments near the top of KOL.pas.
[-] Streams:
- NewConcatStream fixed.
+ NewSubStream added.
- STREAM_LARGE64 fixed (setting Position between MaxInt and $FFFFFFFF value, calling stream methods from TStrList, etc.)
[+] MCK: property TKOLProject.NewIf added. When true, new code using IF/IFEND directive is generated, when false, old IFDEF/ENDIF is used. When changed, an attempt made to convert from old and new style of directives, usually successful.
[-] Compatibility of MCK with Delphi2-Delphi3 restored.


News from 28-Oct-2007 (KOL & MCK v2.84)
[+] Important: thanks to D[u]fa, with his changes MCK now works on BDS2005-BDS2007, and also on Turbo Delphi. Generated code differs a bit, so a converting added when a project created in earlier Delphi is loaded in newer one and back again. Changes are applied starting from Delphi6 & Delphi7 (though in these two versions of the Delphi, MCK works without such changes). To restore generating elder code, MCK package should be rebuild with NO_NEWIF conditional symbol in its options.
- a property UseBlocks added (in public section), to simplify changing it and create lists with disabled the feature even with symbol TLIST_FAST in options;
- for some functions (methods), which asm-version does not work correctly with TLIST_FAST, its asm code turned off;
- for many functions and methods in its Pascal versions using fItems replaced to Items either non-conditionally or by a condition {$IFDEF TLIST_FAST}.
[+] A capability added to work easy with streams and files larger then 4Gbytes. To do so, a symbol STREAM_LARGE64 must be included to the project options. In any case declaration of many streaming functions is changed and can become incompatible with earlier created components, so an option STREAM_COMPAT can be added to project options (it restores all declarations back to the previous form). For this moment, incompatibility is found and fixed at least for KOLZlib package.
Also: functon FileSeek changed and function FileFarSeek removed.
[+] A capability added to concatenate two different streams and treat it as a single data stream (with a function NewConcatStream). Source streams can be of different nature and can be located on quit different media.
[+] A method addd TIcon.SetHandleEx, allowing to assign icon handle to the TIcon object without checking its bitmaps just to set correct size of the icon. This method is faster and always works on Windows 9x (TIcon.SetHandle can fail in Windows 9x for some types of icons).
- Str2DateTimeShort:parameter type changed (String->KOLString);
- and calculating of the format string fixed.
[*] Internal changes: to avoid confuions, list of submenu items renamed to FMenuItems (from FItems).
[-] In a window procedure for combo box a checking added of visibility of the control before handling WM_COMMAND (otherwise combo-box list could be dropped down by a key F4 for invisible combobox, which was focused last time).
[-] In the procedure WndProcTransparent changes made (by homm), which corrects transparency for neighour controls (taking into account DoubleBuffered property).
[-] MCK: for TKOLScrollox property OverrideScrollbars added, and for TKOLScrollbar such property removed.


News from 12-Oct-2007 (KOL & MCK v2.83)
[-] TList.Assign fixed. Thanks to mdw for bug reports concerning TList and TLIST_FAST.
[-] For symbol TLIST_FAST, property TStrList.Text and accompanion methods LoadFromFile, SaveToFile etc. are fixed.
[-] For ASM_VERSION, function CallTControlCreateWindow fixed (did not return a result). This caused bugs with code creating and destroying windows often.
[+] ToGRush improved a lot: scrollbar fixed, all scrollbars including scrollbars in drop down list of combo box are overriden now with GRush style scroll bars, drop down button of the combo box also is in GRush style.

Also, in KOL: a style esSolid added to TEdgeStyle type, to allow creating simple esNone panels w/o transparency in place of GRush panels when necessary (usual panels are much faster and better for large resizable panels. Setting appropriate fill Color for such panels it is possible to make entire form view in a single style therefore).

Also, in MCK: property OverrideScrollbars published for appropriate controls having inner scrollbars. It is true by default, but code generated for it is enclosed in {$IFDEF OVERRIDE_SCROLLBARS}...{$ENDIF}. So, to override scrollbars when ToGRush used, it is sufficient to add a symbol OVERRIDE_SCROLLBARS to project options. Component writers should also assign TRUE to fHasScrollbars2Override (protected field) to provide generating the code for it (certainly, if a control really can have inner scrollbars). Anyway, it is always possible to override scrollbars fo GRush style calling OverrideScrollbars function for a target control.

See also new version of KOLDirDlgEx (in, which also uses this new feature to override scrollbars when USE_GRUSH symbol is present in project options.

[*] ParentWindow property now always returns handle of the parent control (or form), or alien window set as a parent of the TControl object.
[-] TControl.DoSetFocus and WndProcForm asm-versions fixed (small bugs were found, which did not do anything seriuos earlier, but these were found prohibiting the scrollbars replacement for GRush).
[-] TControl.SetCaption asm-version fixed: for LabelEffect, its caption did not changed immediately (Invalidate was not called). Instead, for usual label, Invalidate was called ambigously.
[+] For forms with CanResize set to FALSE, correspondent system menu item is disabled now.


News from 7-Oct-2007 (KOL & MCK v2.82)
[-] KOL.pas corrected to allow providing help pages with xHelpGen.
[+] TStream.OnChangePos event added for easy providing external control to it. But to use it, the stream should be created with a special creator function NewXXXXXXXStreamWithEvent, or methods should be replaced after creating it (such way is not increasing code for usual case). Also, a set of functions provided to implement this event (ReadFileStreamWithEvent, WriteFileStreamWithEvent, WriteFileStreamEOFWithEvent, SeekMemStreamWithEvent, ReadMemStreamWithEvent, WriteMemStreamWithEvent) and a set of constructing stream functions (NewReadFileStreamWithEvent, NewWriteFileStreamWithEvent, NewMemoryStreamWithEvent).
[*] For TBitmap.ClearData,possible fDibAutoFree = true concerned to prevent releasing fDibBits. This allows a trick with creating faken TBitmap object instance using already loaded bitmap data instead of copying it into newly allocated memory (certainly such data are not necessary to be a part of another TBitmap object and since these are not copyied, the programmer itself must provide correct life time for such data. But for very large bitmaps this can increase performance and minimize memory usage a lot).
[-] TBitmap.FlipVertical fixed.


News from 29-Sep-2007 (KOL & MCK v2.81)
[-] TStrListEx: special DeleteLast provided (without it, objects list could grow infinitively).
- TOpenDirDialogEx.InitialPath (string -> KOLString);
- WndProcJustOneNotify asm-version disabled for unicode;
[+] WindowsLogoff procedure added.
[-] Delphi2 compilation fixed (SPI_GETSNAPTODEFBUTTON is not known by D2, also GetUpdateRgn and GetChildRgn are declared incorrectly there).
[-] TLIST_FAST fixed for some methods of TStrList, TStrListEx, TDirList.
[-] Parse asm-version fixed for case of #0 separator char (also IndexOfCharsMin asm-version changed).
[-] In ComboboxDropDown, using symbol USE_DROPDOWNCOUNT fixed.
[-] In the Pascal version of ApplyImageLists2ListView, constant $4FFC replaced with $403F like in ASM_VERSION.
[-] For a tool bar control, it is not possible to provide both aligning of child controls right and neighbour controls at th same time. A conditional symbol TOOLBAR_FORCE_CHILDALIGN added for those people who want align child controls correctly and don't care about aligning neighbours (this is actually does not matter if a toolbar is placed on a separate panel).
[-] For symbol MODAL_ACTIVATE_FIX, problem fixed with possibly not assigned Applet.fModalForm (Access violation).
[-] For transparent rich edit, WM_LBUTTONDOWN also added to a list of messages to force invalidating it.
For TKOLLabel, TabOrder can be now set to any value >= 0, allowing it to be aligned correctly among other controls (since Align uses TabOrder to deturmine which control is placed above/left of others). Default value still is -1, and always can be changed to -1.
For TKOLButton, if its WordWrap property is set to true, multiline button is created (style BS_MULTILINE is added).
If a special comment //don't change uses added before uses clause in the DPR file of the project, MCK no more touches it anyway. This can be necessary if you want to place some other units before reference to KOL unit in DPR's uses list.
[*] changes:
- drawing transparent panel;
- drawing focus rect for checkbox;
- drawing multiline buttons;
[+] In, a definition {$SetPEFlags 1} added, but only for BDS 2006 and it can be cancelled with a symbol NO_STRIP_RELOC (this is necessary if a DLL is creating).


News from 19-Sep-2007 (KOL & MCK v2.80)
[*] New Transparent handling procedure added and set as a default (created by Alexander Karpinsky a.k.a. homm). It adds about 60 bytes in comparison with the old one (available via conditional symbol OLD_TRANSPARENT) but more efficient, since it optimizes amount of redrawing of controls.
[*] New Align handling procedure (created by Alexander Karpinsky a.k.a. homm) made as a default. The old one still available with conditional symbol OLD_ALIGN, but new one is more efficient and lead to less amount of control resizing.
[*] With new conditional symbol TLIST_FAST algorithm and memory usage scheme are totally changed for base TList object. In such case it is optimized for large lists, mainly for minimization of memory reallocations and later less defragmenting the memory heap. But this algorithm requires more code and can be less efficient in some applications.
A property ItemAddress added for TList object.
[*] With new conditional symbol SNAPMOUSE2DFLTBTN procedures MsgBox, ShowMsg, ShowMessage and also ShowQuestion and ShowQuestionEx are changed and provide setting mouse cursor to the default button if such option is cheked in system setting for a desktop.
[-] Standard OpenDirDlg fixed for case when the event handler OnSelChanged set (in Windows95, button OK did not become enabled), and for UNICODE_CTRLS types of data are changed (also for case of such event).
[+] Some changes to simplify creating standard buttons with other child controls on it (e.g. to create buttons with both text and image on it, the same time XP-compatible):
- in MCK for all controls design-time only property added: AcceptChildren. Turning it to TRUE allows to drop other child conrols onto buttons (e.g.).
- in KOL function, and in MCK a property added: MouseTransparent, setting it to TRUE redirects all the mouse events to controls under it.
- in KOL object TImageShow uses properties ClientLeft, ClientTop to offset image while drawing it (in MCK corresponent properties MarinLeft and MarginTop are published for its mirror TKOLImageShow).
- in MCK property Border published for TKOLButton.
[*] File changed, by MTsvDN. What is changed:
1. Drawing all the controls (be exact, drawing the background).
2. Creating fonts fixed.
3. Panel border drawing fixed.
4. Double handling of DblClick on the splitter fixed.
5.Code optimized, size become smaller about 3Kbytes.
6. Handling of  TextAlign for GroupBox added.
7. Working with UNICODE and ANSI provided.
8. Small fix fo a radio box.
9. Drawing he splitted made more standard way.
[*] For memory stream while setting the property Size, the assignimg value no more rounded up to the next bound given by CapacityMask, and used as is. Previous behavior still available via conditional symbol OLD_MEMSTREAMS_SETSIZE.
[-] Working of properties AnchorXXXX for new case of code (it is default, and previous one is avalable via symbol ANCHORS_WM_SIZE) .
[-] For toolbar, hadling of WM_WINDOWPOSCHANGED fixed (true was returned in place of false, in result child controls could not be aligned on the toolbar correctly).
By advice of MTsvDN, in a function WndProc_RichEdTransp_Update handling if the message WM_CHAR added, preventing caret trace while typing text in a transparent rich edit control.
[-] Compiling of asm version fixed for symbol USE_DROPDOWNCOUNT.
Property FixFlatXP (for toolbar) implemented for less cost of code and speed, without using transparency: an empty handler for event OnTBCustomDraw is adding (it was introduced earlier).
[-] In a code generation of MCK reference to MCKControls changed to MCKCtrls.
Some serious changes in KOLPng:
a capability added to load only 1/8, 1/4 or 1/2 of the picture - for less time (this can make loading of the thumbnail faster, especially for interlaced images.
- some pieces of code are optimized using assembler and MMX instructions.


Previous news (versions 2.70-2.79)
Previous news (versions 2.60-2.69)
Previous news (versions 2.50-2.59)
Previous news pages

Copyright (C) 1999-2007 by Vladimir Kladov