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

Новая страница 1 Key Objects Library -Project state (Russian version)

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

  • Базовый объект 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.

и многое другое...



Опубликовал admin
4 Май, Воскресенье 2003г.



Программирование для чайников.