home   |   А-Я   |   A-Z   |   меню


Состояние проекта KOL

• Базовый объект TObj функционально заменяет собой класс TObject из VCL. Он имеет похожий метод Free, который позволяет уничтожать объекты безопасно (игнорируя вызов для указателя nil), а так же пару методов RefInc и RefDec, позволяющих предотвратить удаление объекта из памяти между двумя соответствующими вызовами RefInc и RefDec.

 o Очень полезный объект TList ("конструктор": NewList:PList). Подобно TList в VCL, позволяет хранить указатели на любые данные (или числа).

 o TStrList. Конструктор: NewStrList: pstrlist — очень быстрый список строк (позволяет обрабатывать миллионы строк в секунду).

 o Невизуальный объектный тип TTree для организации дерево-подобных структур данных в памяти.

 o Объектный тип TGraphicTool реализует в себе GDI иснструменты — кисточку (NewBrush), шрифт (NewFont) и карандаш (NewPen), без введения трех различных потомков. Б'oльшая часть кода включается в конечную программу только в случае, если в проекте имеются обращения к свойствам Font, Brush объектов TControl, или объекты типа TGraphicTool создаются явным образом.

 o Объект TCanvas, очень похожий на TCanvas из VCL (но более компактный и эффективный). Для рисования на существующем DC, имеется конструктор: NewCanvas(DC): PCanvas

 o TBitmap, также напоминает TBitmap из VCL. Конструкторы:

  NewBitmap(Width, Height): PBitmap.

  NewDIBBitmap(Width, Height, PixelFormat): PBitmap

 o Объект TImageList (подобно аналогичному в VCL). Конструктор: NewImageList(AOwner: PControl): PImageList.

 o Главный объект библиотеки KOL — это TControl. Он может выполнять роль любого визуального контрола взависимости от того, какой "конструктор" использован для его создания. Имеются следующие "конструкторы", точнее, глобальные функции конструирования (синтаксис намеренно видоизменен):

  NewApplet(Caption: String): PControl (примечание: в KOL необязателен. В случае единственной формы, для которой не требуется прятать кнопку приложения на панели задач, достаточно создать форму) .

  NewForm(AParent: PControl): PControl

  NewPanel(AParent; EdgeStyle:{ esRaised, esLowered, esNone }): PControl

  NewSplitter(AParent; MinSize1, MinSize2: Integer): 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)

  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

 o Динамически создаваемое меню — объект 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

 o Невизуальный объект TIniFile. Конструктор: OpenIniFile(filename): PIniFile;

 o Невизуальный объект TTimer. Конструктор: NewTimer(interval): PTimer

 o Невизуальный объект TDirList. Конструкторы:

  NewDirList(path; 'filemask'; Attr): PDirList

  NewDirListEx(path; '[^]filemask1[;[^]filemask2]…'; Attr): PDirList

 o Объект TOpenSaveDialog для вызова стандартного диалога выбора файлов на открытие/сохранение. Конструктор: NewOpenSaveDialog(title, strtdir: string; Options: [ OSCreatePrompt, OSExtensionDiffent, OSFileMustExist, OSHideReadonly, osnochangedir, osnoreferencelinks, osallowmultiselect, OSNoNetworkButton, OSNoReadonlyReturn, OSOverwritePrompt, OSPathMustExist, osreadonly ]): POpenSaveDialog

 o Объект TOpenDirDialog для вызова стандартного диалога выбора директории (использует SHBrowseForFolder). Конструктор: NewOpenDirDialog(title, options: [ odfBrowseForComputer, odfBrowseForPrinter, odfDontGoBelowDomain, odfOnlyFileSystemAncestors, odfOnlySystemDirs ]): POpenDirDialog

(Примечание: возможна установка начальной директории и OnSelChanged события).

 o Объект TColorDialog для вызова стандартного диалога выбора цвета: NewColorDialog(FullOpenOption): PColorDialog

 o Потоковые объекты типа TStream:

  NewMemoryStream: PStream

  NewReadFileStream(filename): PStream

  NewWriteFileStream(filename): PStream

  NewReadWriteFileStream(filename): PStream

 o Невизуальный TImageList. Конструктор: NewImageList(aowner: pcontrol): pimagelist

 o Невизуальный TTimer. Конструктор: NewTimer(interval): ptimer

 o Невизуальный TThread. Конструкторы:

  NewThread: PThread

  NewThreadEx(Proc: TOnThreadExecute): PThread

 o Невизуальный объект для мониторинга изменений в папках TDirChange:

  NewDirChangeNotifier(Path; Filter: set of [ fncFileName, fncDirName, fncAttributes, fncSize,

fncLastWrite, fncLastAccess, fncCreation, fncSecurity ]; WatchSubtree; ChangeProc: TOnDirChange): PDirChange

 o Невизуальный TMediaPlayer. NewMediaPlayer(filename, window): PMediaPlayer

(Имеется ряд дополнительных функций для проигрывания звуковых wave-файлов из памяти, потока, файла или ресурса и контроля wave-выводом).

 o Невизуальный (?) объект TTrayIcon. Конструктор: NewTrayIcon(Wnd:PControl; Icon: HIcon): PTrayIcon

(Теперь с дополнительным свойством AutoRecreate, позволяющим возобновить иконки в трее в случае рестарта эксплорера).

 o Функции JustOne(Wnd:PControl; Id:String): Boolean и JustOneNotify(Wnd; Id; OnAnotherInstance: procedure(cmdline: string) of object)

 o Процедура SortData для быстрой сортировки любых массивов.

 o Множество процедур и функций для работы с окнами, файлами, датой/временем, строками и преобразованиями форматов.

 o Кроме того, реализованы дополнительно (здесь приведено даже близко далеко не все то, чем 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.)

 o Добавлен набор зеркальных классов MCK (Mirror Classes Kit), который позволяет перейти к визуальному программированию с использованием библиотеки KOL.


предыдущая глава | Виртуальная библиотека Delphi | Часто задаваемые вопросы по Borland Delphi