Состояние
проекта KOL (
14.06.2001
)
-
Базовый объект
TObj
функционально заменяет собой класс TObject из
VCL. Он
имеет похожий метод
Free
, который
позволяет уничтожать объекты безопасно
(игнорируя вызов для указателя
nil
),
атак же пару методов
RefInc
и
RefDec
,
позволяющих предотвратить удаление объекта из
памяти между двумя соответствующими вызовами
RefInc
и
RefDec
.
-
Очень полезный объект
TList
("конструктор":
NewList :PList
).
Подобно TList вVCL, позволяет хранить указатели на
любые данные (или числа).
-
TStrList
. Конструктор:
NewStrList
: PStrList -очень быстрый
список строк (позволяет обрабатывать миллионы
строк всекунду).
-
Невизуальный объектный тип
TTree
для организации дерево-подобных структур данных
впамяти.
-
Объектный тип
TGraphicTool
реализует всебе GDI иснструменты -кисточку (
NewBrush
), шрифт (
NewFont
)
икарандаш (
NewPen
), без
введения трех различных потомков. Бо
'
льшая
часть кода включается вконечную программу
только вслучае, если впроекте имеются обращения
ксвойствам
Font
,
Brush
объектов
TControl
,
или объекты типа
TGraphicTool
создаются явным
образом.
-
Объект
TCanvas
, очень
похожий на TCanvas из VCL (но более компактный иэффективный). Для рисования на существующем
DC,
имеется конструктор:
NewCanvas
(
DC ): PCanvas
-
TBitmap
, также напоминает
TBitmap из VCL. Конструкторы:
-
NewBitmap
( Width, Height ): PBitmap.
-
NewDIBBitmap
( Width, Height, PixelFormat
): PBitmap
-
Объект
TImageList
(подобно
аналогичному вVCL). Конструктор:
NewImageList
( AOwner: PControl ): PImageList.
-
Главный объект библиотеки KOL -это
TControl
.
Он может выполнять роль любого визуального
контрола взависимости от того, какой
"конструктор" использован для его создания.
Имеются следующие "конструкторы", точнее,
глобальные функции конструирования (синтаксис
намеренно видоизменен):
-
NewApplet
( Caption: String ): PControl
(примечание: вKOL
необязателен. Вслучае единственной формы, для
которой не требуется прятать кнопку приложения
на панели задач, достаточно создать форму)
.
-
NewForm
( AParent:
PControl ): PControl
-
NewPanel
( AParent; EdgeStyle:{ esRaised, esLowered, esNone }): PControl
-
NewSplitter
( AParent; MinSize1, MinSize2: Integer ): PControl
NewSplitterEx
( AParent, MinSize1, MinSize2, edgeStyle): PControl
-
NewGroup
( AParent; Caption ): PControl
-
NewLabel
( AParent; Caption ): PControl
-
NewWordWrapLabel
( AParent; Caption ): PControl
-
NewLabelEffect
( AParent; Caption; ShadowDeep ): PControl
-
NewButton
( AParent; Caption ): PControl
-
NewBitBtn
( aParent, aCaption, aOptions:
[ bboImageList, bboNoBorder, bboNoCaption, bboFixed ]
, aLayout:
{ glyphLeft, glyphTop, glyphRight, glyphBottom, glyphOver }
,
GlyphBmp
_or_ ImageList, GlyphCount
__or__
ImgIdx
_and_
GlyphCount
_shl16
): PControl
-
NewCheckbox
( AParent; Caption ): PControl
-
NewRadiobox
( AParent; Caption ): PControl
-
NewEditbox
( AParent; Options: Set of [ eoNoHScroll, eoNoVScroll, eoLowercase,
eoMultiline
, eoNoHideSel, eoOemConvert, eoPassword, eoReadonly, eoUpperCase, eoWantReturn, eoWantTab
] ): PControl
-
NewRichEdit
( AParent, Options ): PControl
-
NewRichEdit1
( AParent, Options ): PControl
-
NewListbox
( AParent; Options: Set of [ loNoHideScroll, loNoExtendSel, loMultiColumn,
loMultiSelect, loNoIntegralHeight, loNoSel, loSort, loTabstops
] ): PControl
-
NewCombobox
( AParent; Options: Set of [
coReadOnly
, coNoHScroll, coAlwaysVScroll, coLowerCase, coNoIntegralHeight, coOemConvert,
coSort, coUpperCase
] ): PControl
-
NewPaintbox
(
AParent )
-
NewImageShow
( AParent, ImgList, ImgIdx ):PControl
-
NewGradientPanel
( AParent; Color1, Color2 ): PControl
-
NewGradientPanelEx
(
Color1, Color2, Style: ( gsHorizontal, gsVertical, gsRectangle, gsElliptic, gsRombic
), Layout: ( glTopLeft, glTop, glTopRight, glLeft, glCenter, glRight,
glBottomLeft, glBottom, glBottomRight
) ): PControl
-
NewProgressbar
(
AParent ): PControl
-
NewProgressbarEx
( AParent; Options: set of [ pboVertical, pboSmooth
] ): PControl
-
NewListView
( AParent, Style:{ lvsIcon, lvsSmallIcon, lsvList, lvsDetail, lvsDetailNoHeader},
Options:
set of [ lvoIconLeft, lvoAutoArrange, lvoButton, lvoEditLabel, lvoNoLabelWrap,
lvoNoScroll, lvoNoSortHeader, lvoHideSel, lvoMultiselect,
lvoSortAscending,lvoSortDescending, lvoGridLines, lvoSubItemImages,
lvoCheckBoxes, lvoTrackSelect, lvoHeaderDragDrop, lvoRowSelect,
lvoOneClickActivate, lvoTwoClickActivate, lvoFlatsb, lvoRegional, lvoInfoTip,
lvoUnderlineHot, lvoMultiWorkares
]; ImageListSmall, ImageListBig, ImageListState: PImageList ): PControl
-
NewTreeView
( parent, options: set of [ tvoNoLines, tvoLinesRoot, tvoNoButtons,
tvoEditLabels, tvoHideSel, tvoDragDrop, tvoNoTooltips, tvoCheckBoxes,
tvoTrackSelect, tvoSingleExpand, tvoInfoTip, tvoFullRowSelect, tvoNoScroll, tvoNonEvenHeight
], ImgListNormal,
ImgListState ): PControl
-
NewToolbar
( parent, align: {c aLeft, caTop, caRight, caBottom
}, options: set of [ tboTextRight, tboFlat, tboTransparent, tboWrapable
], Bitmap, Buttons: array of PChar; BtnImgIdxArray: array of Integer ): PControl
-
NewTabControl
( parent, tabs: array of string, options: set of [ tcoButtons, tcoFixedWidth,
tcoFocusTabs, tcoIconLeft, tcoLabelLeft, tcoMultiline, tcoMultiselect,
tcoFitRows, tcoScrollOpposite, tcoBottom, tcoVertical, tcoFlat, tcoHotTrack
], ImgList,
ImgIdx1st ): PControl
-
Динамически создаваемое меню -объект
TMenu
(главное меню или
контекстное). Конструкторы:
-
NewMenu
( AParent; FirstCmd:Integer; Template: array of PChar; aOnItem: procedure(
Sender; Item: integer) of object ): PMenu
-
NewMenuEx
( AParent; FirstCmd:Integer; Template: array of PChar; aOnItems: array of
procedure( Sender; Item: integer) of object
): PMenu
-
Невизуальный объект
TIniFile
.
Конструктор:
OpenIniFile
(
filename ): PIniFile;
-
Невизуальный объект
TTimer
.
Конструктор:
NewTimer
( interval
): PTimer
-
Невизуальный объект
TDirList
.
Конструкторы::
-
NewDirList
( path; 'filemask'; Attr ):
PDirList
-
NewDirListEx
( path; '[^]filemask1[;[^]filemask2]...'; Attr ): PDirList
-
Объект
TOpenSaveDialog
для
вызова стандартного диалога выбора файлов на
открытие/сохранение. Конструктор:
NewOpenSaveDialog
( Title, StrtDir: String; Options: [ OSCreatePrompt, OSExtensionDiffent,
OSFileMustExist
,
OSHideReadonly
, OSNoChangedir, OSNoReferenceLinks, OSAllowMultiSelect, OSNoNetworkButton,
OSNoReadonlyReturn,
OSOverwritePrompt
,
OSPathMustExist
,
OSReadonly
] ): POpenSaveDialog
-
Объект
TOpenDirDialog
для
вызова стандартного диалога выбора директории
(использует SHBrowseForFolder). Конструктор:
NewOpenDirDialog
( Title, Options: [ odfBrowseForComputer, odfBrowseForPrinter,
odfDontGoBelowDomain, odfOnlyFileSystemAncestors,
odfOnlySystemDirs
] ): POpenDirDialog
(Примечание: возможна установка
начальной директории и
OnSelChanged
события).
-
Объект
TColorDialog
для
вызова стандартного диалога выбора цвета:
NewColorDialog
( FullOpenOption ): PColorDialog
-
Объект
TCABFile
для
извлечения файлов из CAB-архивов:
OpenCABFile
( [filenames ]);
-
Потоковые объекты типа
TStream
:
-
NewMemoryStream
: PStream
-
NewReadFileStream
( filename ): PStream
-
NewWriteFileStream
( filename ): PStream
-
NewReadWriteFileStream
( filename ):
PStream
-
Невизуальный
TImageList
.
Конструктор:
NewImageList
( AOwner: PControl ): PImageList
-
Невизуальный
TTimer
.
Конструктор:
NewTimer
( interval
): PTimer
-
Невизуальный
TThread
.
Конструкторы:
-
NewThread
: PThread
-
NewThreadEx
( Proc: TOnThreadExecute ):
PThread
-
Невизуальный объект для мониторинга изменений
впапках
TDirChange
:
-
NewDirChangeNotifier
( Path; Filter: set of
[ fncFileName, fncDirName, fncAttributes, fncSize,
fncLastWrite, fncLastAccess, fncCreation, fncSecurity
]; WatchSubtree; ChangeProc:
TOnDirChange ): PDirChange
-
Невизуальный
TMediaPlayer
.
NewMediaPlayer
( FileName, Window ): PMediaPlayer
(Имеется ряд дополнительных
функций для проигрывания звуковых wave-файлов из
памяти, потока, файла или ресурса иконтроля
wave-выводом).
-
Невизальный (?) объект
TTrayIcon
.
Конструктор:
NewTrayIcon
( Wnd:PControl; Icon: HIcon ): PTrayIcon
(Теперь сдополнительным свойством AutoRecreate, позволяющим возобновить иконки втрее вслучае рестарта эксплорера).
-
Функции
JustOne
( Wnd:PControl; Id:String): Boolean и
JustOneNotify
( Wnd; Id; OnAnotherInstance: procedure( cmdline: string )of object )
-
Процедура
SortData
для быстрой сортировки любых массивов.
-
Множество процедур ифункций для работы сокнами, файлами, датой/временем, строками ипреобразованиями форматов.
-
Кроме того, реализованы дополнительно
(здесь
приведено даже близко далеко не все то, чем KOL мог
бы гордиться)
:
-
Поддержка
табуляции спомощью клавиатуры
- упрощенная (вызвать
Tabulate
для
формы) иболее сложная (вызвать
TabulateEx
).
-
Набор свойств, упрощающих настройку границы
формы (окна):
HasCaption
,
HasBorder
,
CanResize
,
StayOnTop
.
-
Набор "сквозных" методов, упрощающих
невизуальное проектирование формы:
PlaceRight
,
PlaceDown
,
PlaceUnder
,
SetSize
(w,h),
Size
(w, h),
AlignLeft
(fromcontrol),
AlignTop
(fromcontrol),
ResizeParent
,
ResizeParentRight
,
ResizeParentBottom
,
CenterOnParent
,
Shift
(x,y),
SetAlign
(куда)
атак же свойство
Margin
.
-
Поддержка
вращающихся шрифтов
- вLabelEffect, вTCanvas. Автоматически -по изменению
свойства Font.Orientation
-
Поддержка
геометрического карандаша (pen)
в
TGraphicTool
.
Атакже свойство
FontWeight
для
желаемого утолщения шрифтов средствами ОС.
-
Поддержка
двойной буферизации вывода
(необходима вLabelEffect). Необходима установка для
визуального объекта свойства
DoubleBuffered
в True (наследуется дочерними контролами)
-
Свойство
Transparent
(прозрачность,
неявно использует
DoubleBuffered
).
-
Свойство
AlphaBlend
позволяет сделать
форму/контрол полу-прозрачными (только Win2K).
-
Свойство Align, позволяющее выравнивать контролы
так же, как ив VCL. имеется дополнительный
"сквозной" метод
SetAlign
,
упрощающий начальную настройку контролов.
-
Метод
PreventResizeFlicks
позволяет
ликвидировать большинство мельканий
изображения при изменении размеров формы иперемещении сплиттера -в случае применения
выравнивания спомощью свойства
Align
.
Особенно эффективно совместно с
DoubleBuffered
= True.
-
Окно статуса (status bar),
встраиваемое вформу
(при использовании свойств
StatusText
[ ],
SimpleStatusText
, ит.п.).
-
События
OnMouseOver
/
OnMouseLeave
.
-
Возможность любых внешних расширений оконных
процедур имеющихся контролов спомощью метода
AttachProc
(собственно, на нем построен весь K.O.L.)
-
Добавлен
набор зеркальных классов
MCK (Mirror Classes Kit), который позволяет перейти квизуальному программированию сиспользованием
библиотеки KOL.