Rambler's Top100


Виртуальный клуб начинающих программистов на Delphi


Заводь
Мелководье
Сокровищница
Рифы
Течения
Архивный грот
Дальние земли
Жемчужница
Ловцы жемчуга
Почтовый грот
Дельфинарий
Карта бухты

Rambler's Top100


Mastak.ru - качественный хостинг на двух континентах

The List of Russian Web Servers WebList.Ru

Сокровищница. Свойства, методы, события, классы, стандартные компоненты.

Палитра компонентов Delphi 6
Свойства формы
Active
Align
Bitmap
Canvas
ClientOrigin
BoundsRect
ComponentCount
ClientHeight

Палитра компонентов Delphi 6

В Delphi 6 имеется две библиотеки компонентов: VCL для приложений Windows, и CLX для кросс-платформенных приложений. Библиотека VCL значительно более обширна. Поэтому далее рассматриваются страницы именно этой библиотеки. Однако, в приведенных таблицах указывается, какие из компонентов имеются также в CLX.
Палитра компонентов VCL включает следующие основные страницы (многие из них присутствуют и в младших версиях Delphi):

Standard Стандартная, содержащая наиболее часто используемые компоненты
Additional Дополнительная, являющаяся дополнением стандартной
Win32 32-битные компоненты в стиле Windows 95/98/2000 и NT
System Системная, содержащая такие компоненты, как таймеры, плееры и ряд других
Data Access Доступ к данным. Большинство компонентов, присутствовавших на этой странице в предыдущих версиях Delphi, в Delphi 6 перенесены на страницу BDE
Data Controls Компоненты отображения и редактирования данных
dbExpress Связь с данными с помощью dbExpress (начиная с Delphi 6)
DataSnap Компоненты для связи с сервером приложений при построении многопоточных приложений, работающих с данными (начиная с Delphi 6 и не во всех вариантах Delphi)
BDE Доступ к данным через Borland Database Engine - BDE (начиная с Delphi 6, ранее эти компоненты размещались на странице Data Access)
ADO Связь с базами данных через Active Data Objects (ADO) - множество компонентов ActiveX, использующих для доступа к информации баз данных Microsoft OLE DB (начиная с Delphi 5)
Interbase Прямая связь с Interbase, минуя Borland Database Engine (BDE) и Active Data Objects (ADO) (начиная с Delphi 5)
WebServices Компоненты клиентский приложений Web, использующие доступ к службам Web с помощью SOAP (начиная с Delphi 6)
InternetExpress Построение приложений InternetExpress - одновременно приложений сервера Web и клиента баз данных с параллельными потоками (начиная с Delphi 5)
Internet Компоненты для создания серверов Web
WebSnap Компоненты для создания серверов Web, содержащих сложные страницы, управляемые данными (начиная с Delphi 6 и не во всех вариантах Delphi)
FastNet Различные протоколы доступа к Интернет (начиная с Delphi 5)
Decision Cube Компоненты для многомерного анализа данных (не во всех вариантах Delphi)
QReport Компоненты для подготовки отчетов
Dialogs Диалоги, системные диалоги типа "Открыть файл" и др.
Win 3.1 Windows 3.x, компоненты в стиле Windows 3.x (оставлены для обратной совместимости с Delphi 1)
COM+ Компонент, дающий доступ к каталогу COM+, содержащему данные по конфигурации COM+
IndyClients Компоненты клиентских приложений Internet Direct (Indy), дающих доступ к различным протоколам Интернет из приложений Delphi, C++Builder, Kylix (начиная с Delphi 6)
IndyServers Компоненты серверных приложений Internet Direct (Indy) (начиная с Delphi 6)
IndyMisk Различные вспомогательные компоненты приложений Internet Direct (Indy) (начиная с Delphi 6)
Servers Оболочки VCL для распространенных серверов COM (начиная с Delphi 5)
Имеются еще две страницы, содержащие примеры:
Samples Образцы: различные интересные, но не до конца документированные компоненты
ActiveX Примеры активных элементов ActiveX

Помимо перечисленных пользователь может организовывать свои страницы и размещать на них свои компоненты.


Свойства формы.

ActiveControl - Указывает на компонент, который должен быть активным по умолчанию.
Align - Выравнивание компонента. Любой компонент может быть выровнен по одной из сторон родительского компонента. Этому свойству можно присвоить следующие значения:
    alNone - нет выравнивания. Как нарисовал, так и будет.
    alBottom - выравнивание по нижнему краю.
    alLeft - выравнивание по левому краю.
    AlRight - выравнивание по правому краю.
     AlTop - выравнивание по верхнему краю.
Компоненты выравниваются относительно формы, а форма выравнивается относительно окна.
AlphaBlend - Тип свойства - логический. Свойство формы. Означает, имеет ли форма прозрачность. Если это свойство равно true, то окно будет прозрачным. Степень прозрачности задаётся через свойство AlphaBlendValue.
ВНИМАНИЕ!!! Прозрачность работает не на всех системах.
AlphaBlendValue - Тип свойства - целое число. Степень прозрачности формы. Здесь можно задавать числовое значение степени прозрачности от 0 до 255. Если поставишь 0, то форма будет абсолютно прозрачной. 255 означает полную непрозрачность. Чтобы сделать форму полупрозрачной, нужно выставить какое-нибудь промежуточное значение (можно 127).
Anchors - Это свойство есть и у формы и у компонентов. Оно показывает, как происходит закрепление к родительскому объекту. Это свойство раскрывающееся. Если щелкнуть по квадрату слева от имени свойства, то раскроется список из четырёх дополнительных свойств:
    akLeft - прикреплять левый край (по умолчанию true).
    akTop - прикреплять верхний край (по умолчанию true).
    akRight - прикреплять правый край (по умолчанию flase).
    akBottom - прикреплять нижний край (по умолчанию false).
По умолчанию прикрепление происходит по левому и верхнему краю.
AutoScroll - Тип свойства - логический. Будет ли форма автоматически производить скроллинг, или нет.
AutoSize - Тип свойства - логический. Авто размер формы.
BorderIcons - Свойство определяющее, какие кнопки должны присутствовать у окна.
Это свойство раскрывающееся. Если щелкнуть по квадрату слева от имени свойства, то раскроется список из четырёх свойств:
    biSystemMenu - показать меню (иконка слева в строке заголовка окна).
    biMinimize - кнопка минимизации окна.
    biMaximize - кнопка максимизации окна.
    biHelp - кнопка помощи.
BorderStyle - Свойство формы. Отвечает за вид оборки окна. Это свойство может принимать следующие значения.
    bsSizeable - установлено по умолчанию. Стандартное окно, с нормальной оборкой
    bsDialog - окно выглядит в виде диалога.
    bsNone - окно вообще без оборки.
    bsSingle - На первый взгляд это простое окно, а если попробовать изменить его размеры, то можно получить облом. Это окно с фиксированным размером и изменять его мышкой нельзя. Изменить размер можно только кнопкой Maximize.
    bsSizeToolWin - окно с тонкой оборкой. Особенно это заметно в заголовке окна.
    bsToolWindow - я не буду приводить скрин этого окна, потому что он ничем не отличается от предыдущего. Единственная разница - у этого окна нельзя изменять размеры окна.
BorderWidth - ширина оборки окна.
Caption - это строковое свойство, которое отвечает за заголовок окна.
ClientHeight - это свойство в виде целого числа показывает высоту клиентской области окна. Это высота без учёта ширины оборки и системного меню, только рабочая область.
ClientWidth - это свойство в виде целого числа показывает ширину клиентской области окна. Это ширина без учёта ширины оборки и системного меню, только рабочая область.
Color - цвет клиентской области окна.
    В списке выбора есть все системные цвета, которые вы можете выбрать. Но если хотите использовать какой-то специфичный цвет, то можете дважды щёлкнуть по этому параметру, и перед вами откроется стандартное окно выбора цвета.
Constraints - в этом свойстве содержатся максимальные значения размеров окна.
    MaxHeight - максимальная высота окна.
    MaxWidth - максимальная ширина окна.
    MinHeight - минимальная высота окна.
    MinWidth - минимальная ширина окна.
    Если установите эти значения, то окно нельзя будет растянуть больше максимального размера и уменьшить меньше минимального.
Ctl3D - Тип свойства - логический. Оно указывает - показывать окно/компонент в псевдо 3D плоскости или нет. Этот параметр остался ещё от Windows 3.1, когда он действительно имел смысл. Сейчас даже если отключить 3D, окно сильно не изменится. Поэтому про это свойство можно забыть.
Cursor - это свойство отвечает за курсор, который будет отображаться при наведении мышкой на форму/компонент.
DockSite - Тип свойства - логический. Указывает, можно ли на форму/компонент бросать другие компоненты с помощью Drag&Drop. Это свойство создаёт эффект, который ты мог наблюдать в MS Office, когда панели инструментов можно отрывать от формы и прикреплять обратно. Вот это свойство как раз и разрешает прикреплять компоненты.
DragKind - вид перетаскивания объекта при Drag&Drop. Здесь вам доступны два варианта:
    dkDrag - стандартный Drag&Drop при котором объект остаётся на месте.
    dkDock - перетаскивать сам объект. Этот параметр следует выбрать, если нужно чтобы компонент мог прикрепляться к другим компонентам или форме.
DragMode - режим Drag&Drop. Здесь тебе доступны два варианта:
dmManual - ручной режим. При таком режиме ты сам должен запускать перетаскивание объекта.dmAutomatic - режим Draq&Drop будет включатся автоматически, если пользователь начал тащить мышкой компонент. При этом не нужно писать дополнительный код, как при ручном режиме.
Enabled - Тип свойства - логический. Доступность компонента. Если это свойство равно true, то пользователь может работать с этим компонентом. Иначе компонент недоступен и окрашен серым цветом.
Font - шрифт используемый при выводе текста на форме. Если вы дважды щёлкните по этой строке, то перед вами появится стандартное окно Windows выбора шрифта:
FormStyle - Стиль формы. Здесь тебе доступны для выбора следующие варианты
    fsNormal - нормальное окно.
    fsMDIForm - Окно является родительским для MDI окон. Если вы помните старый Office, то должны помнить, что там внутри основного окна можно было перемещать другие окна. Эти окна относятся к классу MDI - мультидокументные окна. Хотя Microsoft не рекомендует использовать MDI окна и вроде как сама отказалась от их использования, а в Windows 2000 консоль MMC выполнена именно так.
    fsMDIChild - окно является дочерним MDI окном. fsMDIForm - создаёт главное окно, а fsMDIChild создаёт дочернее, то есть то окно, которое будет внутри главного.
ВНИМАНИЕ!!! - главное окно не может быть такого типа.
    fsStayOnTop - Окно с этим параметром будет находиться всегда поверх остальных.
Height - Тип свойства - целое число. высота окна.
Hint - текст подсказки, который будет появляться в строке состояния при наведении мышкой на форму/компонент.
HorzScrollBar - параметры горизонтальной полосы прокрутки. Этот параметр я пока не буду рассматривать, потому что если его раскрыть, то там будет столько настроек, что это тема отдельного разговора.
Icon - иконка отображающаяся в заголовке окна. Если дважды щёлкнуть по этому свойству, то появится окно загрузки иконки.
В этом окне есть следующие кнопки:
    Load - загрузить иконку из файла.
    Save - сохранить иконку в файл.
    Copy - копировать иконку в буфер обмена.
    Paste - Вставить иконку из буфер обмена.
    Clear - очистить текущую иконку.
Left - Тип свойства - целое число. левая позиция окна.
Menu - меню, которое используется в главном окне. Этот параметр стоит рассмотреть отдельно.
Name - имя формы/компонента. Помните, что какое имя вы здесь введете, так и будет называться объект, отвечающий за эту форму/компонент (только в начале добавится буква T).
ParentFont - Тип свойства - логический. Если это свойство равно true, то для вывода текста будет использоваться тот же шрифт, что и у родительского объекта. Иначе используется тот, что укажете сами.
Position - Позиция окна при старте приложения. Здесь тебе доступны следующие варианты:
    poDefault - Windows сам будет решать, где расположить окно и какие будут его размеры.
    poDefaultPosOnly - Windows сам будет решать только где расположить окно, а размеры его будут такими, какими установишь ты в свойствах.
    poDefaultSizeOnly - Windows будет решать только какими будут размеры окна, а позиция будет такая, какую ты укажешь в свойствах.
    poDesigned - И размер, и позиция будут такими, какими ты укажешь в свойствах.
    poDesktopCenter - окно будет располагаться по центру рабочего стола.
    poMainFormCenter - окно будет располагаться по центру основной формы.
    poOwnerFormCenter - окно будет располагаться по окна владельца. То есть того окна, которое вызвало это.
    poScreenCenter - окно будет располагаться по центру экрана.
ShowHint - Тип свойства - логический. Оно показывает - нужно ли показывать подсказки.
Tag - это свойство имеет тип - целое число. Оно ни на что не влияет и вы можете его использовать в своих целях.
Top - Тип свойства - целое число. верхняя позиция окна.
TransparentColor - Тип свойства - логический. Является ли форма или компонент прозрачным. В отличии от AlphaBlend, эта прозрачность работает всегда. Зато нельзя сделать полупрозрачные формы и компонеты.
TransparentColorValue - прозрачный цвет.
VertScrollBar - Вертикальная полоса прокрутки. Она имеет те же параметры, что и горизонтальная и мы рассмотрим её отдельно.
Visible - Тип свойства - логический. Если оно равно true, то форма/компонент видимые. Иначе форма/компонент невидим.
Width - Тип свойства - целое число. Ширина окна.
WindowState - состояние окна после запуска. Вам доступны следующие параметры:
wsNormal - окно показывается в нормальном состоянии.
wsMaximized - окно показывается максимизированным.
wsMinimized - окно показывается минимизированным.
На этом обзор свойств формы вроде бы закончен.

Active

Определяет открытие и закрытие базы данных.
Класс TDataSet
Определение
Property Active: Boolean;
Описание
Свойство Active определяет наличие соединения с базой данных и управляет этим соединением. Если значение Active равно False - база данных закрыта и чтение или запись данных невозможны.

Установка Active в true вызывает следующее:

  • Генерацию события BeforeOpen.
  • Установку набора данных (свойства State) в состояние dsBrowse.
  • Открытие курсора в наборе данных.
  • Генерацию события AfterOpen.

Если во время открытия набора данных произошла ошибка, набор данных (свойство State) переводится в состояние dsInactive и курсор закрывается.

Приложение должно устанавливать Active в false перед изменением свойств набора данных, влияющих на его состояни или на отображение данных. Если этого не сделать, то будет сгенерировано исключение EDataBaseError с сообщением: "Cannot performe this operation on an open dataset" - "Невозможно выполнить эту операцию на открытом наборе данных".

Свойство Active может устанавливаться непосредственно или методами Open - установка в True, или Close - установка в false.

Примеры:

Table1.Active := false;
Table1.TableName := 'Pers.db';
Table1.Active := true;

Первый из приведенных операторов закрывает ранее открытый набор данных. Второй - изменяет таблицу, с которой далее будет работать компонент. Последний оператор открывает эту таблицу.

Аналогичный результат достигает следующий код:

Table1.Close;
Table1.TableName := 'Pers.db';
Table1.Open;

Align

Определяет способ выравнивания компонента внутри контейнера (ридительского компонента).

Класс TControl

Определение
type TAlignSet = set of TAlign;
TAlign = (alNone, alTop,alBotton, alLeft, AlRight, alClient, alCustom);
property Align: TAlign

Описание
Свойство Align определяет, остается ли компонент неизменным при изменении размеров содержащей его формы, панели, другого компонента, или он изменяется, занимая всю доступную площадь, ее верхнюю, нижнюю, левую или правую часть.

Возможные значения свойства:
Значение Описание
alNone Компонент остается там, где он размещен вовремя проектирования. Размеры его не изменяются. Это значение Align по умолчанию.
alTop Компонент занимает всю верхнюю часть контейнера и во время выполнения приложения его ширина изменяется при изменении ширины контейнера. Высота комонента остается неизменной.
alBotton Компонент занимает всю нижнюю часть контейнера и во время выполнения приложения его ширина изменяется при изменении ширины контейнера. Высота компонента остается неизменной.
alLeft Компонент занимает всю левую часть контейнера и во время выполнения приложения его высота изменяется при изменении высоты контейнера. Ширина компонента остается неизменной.
AlRight Компонент занимает всю правую часть контейнера и во время выполнения приложения его высота изменяется при изменении высоты контейнера. Ширина компонента остается неизменной.
alClient Компонент занимает всю клиентскую область контейнера и во время выполнения приложения его размеры изменяются при изменении размеров контейнера. Если в контейнере часть клиентской области уже занята, компонент занимает всю ее оставшуюся часть.
alCustom Введено в Delphi 6. Позиция компонента определяетс вызовами функций CustomAlignPosition и CustomAlignInsertBefore

Значение Align по умолчанию - alNone. В приложениях, в которых пользователь может изменять размер формы, а сама форма разбита панелями или другими компонентами на ряд областей, необходимо изменять это значение Align.

Если компонент имеен значение Align, равное alClient, то в процессе проектирования невозможно добраться до содржащего его контейнера и щелкнуть на нем, чтобы получить в Инспекторе Объектов его свойства и события. В этом случае возможны два решения: щелкнуть на компоненте и нажать клавишу Esc или осуществить выбор компонента-контейнера с помощью выпадающего списка в верхней части Инспектора Объектов.

Значения Align alTop и alBottom имеют приоритет перед alLeft и al Right. Поэтому, если вы, например, ввели на форму две панели, одной задали значение alLeft, а второй задаете значение alTop, товторая панель вытеснит верхнюю часть первой панели, которая первоначально заняла всю левую часть клиентской области. Если это нежелательно, приходится вводить дополнительные панели, являющиеся контейнерами для других панелей.

В Delphi 6 введено значение выравнивания alCustom (заказное) и тип TAlignSet - множество значений выравнивания. Если какие-то дочерние компоненты контейнера имеют значение Align = alCustom, то в компоненте - контейнере можно перегрузить виртуальный метод CustomAlignPosition, который будет автоматически вызываться каждый раз при изменении размеров контейнера. для каждого дочернего компонента, имеющего Align = alCustom и Visible = true. Этот метод объявлен следующим образом (учтите, что во встроенной справке Delphi 6 его объявление не верное) :

procedure CustomAlignPosition (Control: TControl;
    var NewLeft, NewTop, NewWidth, NewHeight: Integer;
    var AlignRect: TRect; AlignInfo: TAlignInfo); virtual;

Параметр Control - выравниваемый компонент. Параметры NewLeft, NewTop, NewWidth, NewHeight можно изменять, задавая новые координаты левого верхнего угла, ширину и высоту. Параметр AlignRect определяет область выравнивания, но не для данного компонента, а для следующего. Параметр AlignInfo определяет запись типа TAlignInfo, содержащую сведения о выравнивании дочерних компонентов контейнера:

TAlignInfo = record
    AlignList : TList;
    ControlIndex : Integer;
    Align : TAlign;
    Scratch : Integer;
end;

Имеется еще один метод, который может быть переопределен при заказном выравнивании:

Function CustomAlignInsertBefore(C1, C2 : TControl): Boolean; virtual;

Функция поочередно вызывается для каждой пары C1 и C2 дочерних компонентов контейнера, в которых Align = alCustom и Visible = true, и определяет, в какой последовательности должны выравниваться компоненты, т.е. в какой последовательности вызывается процедура CustomAlignPosition для различных компонентов. При вызовах пары перечисляются в последовательности их расположения в свойстве Controls контейнера, причем C1 - второй компонент в паре, а C2 первый. Например, если форма содержит три панели Panel1, Panel2 и Panel3, размещенных в Controls именно в этой последовательности, то при первом вызове C1 = Panel2, C2 = Panel1, при втором C1 =Panel3, C2 = Panel2, при третьем C1 = Panel3, C2 = Panel1. Функция должна возвращать true, если компонент C1 должен выравниваться прежде, чем C2 (здесь в справке Delphi 6 тоже ошибка). В классе TWinControl функция CustomAlignInsertBefore всегда возвращает false, так что по умолчанию выравнивание компонентов происходит в той последовательности, в которой они расположены в свойстве Controls. Но можно переписать эту виртуальную функцию. Например, если в переписанном варианте всегда возвращать true, то последовательность выравнивания изменится на противоположную.

Пусть у вас имеется на форме две панели Panel1 и Panel2 и вы хотите, чтобы при любых изменениях размеров окна панель Panel1 занимала всю левую половину формы, а Panel2 - всю правую. Вы можете это сделать следующим образом. Задайте в обеих панелях Align = alCustom. Обе они в тот же момент переместятся в левый верхний угол клиентской области формы. Далее напишите следующий код:

Type
  TForm1 = class (TForm)
    Panel1 : TPanel;
    Panel2 : TPanel;
    ...
    Procedure CustomAlignPosition (Control : TControl;
      var NewLeft, NewTop, NewWidth, NewHeight : Integer;
      var AlignRect : TRect; AlignInfo : TAlignInfo);
    begin
      NewWidth := ClientWidth div 2;
      NewHeight := ClientHeight;
      If Control = Panel2
        then NewLeft := ClientWidth div 2;
    end;

Вы ввели в класс формы обхявление перегруженной функции CustomAlignPosition. В ее реализации вы задали для каждой панели ширину, равную половине ширины ClientWidth клиентской области формы, и высоту, равную высоте ClientHeght клиентской области формы. Кроме того вы сдвинули на половину ширины ClientWidth левую координату панели Panel2.

Если вы хотите поменять местами панели на форме, чтобы слева была панель Panel2, а справа - Panel1, то в приведенном выше втором варианте кода это можно сделать, изменив с помощью функции CustomAlignInsertBefore последовательность вызовов процедуры CustomAlignPosition для разных панелей. Тогда в объявление класса TForm1 надо добавить объявление

function CustomAlignInsertBefore (С1, C2 : TControl): Boolean; override;

а реализация функции CustomAlignInsertBefore может иметь вид:

function TForm1.CustomAlignInsertBefore (C1, C2 : TControl): Boolean;
begin
  Result := C2 = Panel1;
end;

Этот код перемещает на первое место панель Panel2 (выражение C2 = Panel1 возвращает true, если C2 - это панель Panel1).

В нашем случае, когда мы имеем всего две панели, оператор реализации функции CustomAlignInsertBefore можно заменить более простым:

Result = true;

Последовательность вызовов процедуры CustomAlignPosition просто измениться на противоположную.

Впрочем, рассмотренные выше параметры можно и, возможно, проще решить обработчиком события формы OnResize.

Bitmap

Определяет внешний нестандартный шаблон размером 8 на 8 пикселей, который использует для заполнения кисть Brush.

Класс TBrush

Определение

Property Bitmap: TBitmap;

Описание

Свойство кисти Bitmap указывает на объект типа TBitmap, в который загружен шаблон размером 8 на 8 пикселей, используемый для заполнения кистью Brush.

Если для кисти задан шаблон BitMap, то заполнение производится именно этим шаблоном, независимо от значения свойства кисти Style. Шаблон BitMap может создаваться в процессе выполнения приложения или, например, загружаться из файла.

Если размер изображения превышает 8 на 8 пикселей, то в качестве шаблона будет использоваться его левая верхняя часть размером 8 на 8.

Изменение изображения в объекте TBitmap не влияет на шаблон, пока не произведено повторное присваивание свойству Bitmap.

После окончания работы с шаблоном объект TBitmap следует удалить из памяти, так как автоматически это не делается.

Пример

var
Bitmap : TBitmap;
begin
Bitmap := TBitmap.Create;
try
Bitmap.LoadFromFile('MyBitmap.bmp') ;
Image1.Canvas.Brush.Bitmap := Bitmap;
...
finally
Image1.Canvas.Brush.Bitmap := nil;
Bitmap.Free;
end;
end;

В этом примере создается объект Bitmap типа TBitmap и в него загружается битовая матрица из файла с именем "MyBitmap.bmp". Затем свойству Image1.Canvas.Brush.Bitmap присваивается указатель на этот объект. После этого загруженный шаблон можно использовать для заполнения фигур на канве Image1. В конце кода свойству Bitmap присваивается значение nil, после чего заполнение опять начинает определяться свойством Style. Затем объект Bitmap уничтожается, чтобы освободить занимаемую им память.

Canvas

Поверхность (холст, канва) для рисования во многих компонентах

Классы TForm, TImage, TBitMap, TPaintBox

Доступ только для чтения

Определение

property Canvas: TCanvas;

Описание

Свойство Canvas типа TCanvas используется для рисования пером Pen и кистью Brush, для модификации изображения, наложения друг на друга нескольких изображений.

В компоненте типа TImage канва может использоваться только в случае, если в свойство Picture загружена битовая матрица или ничего не загружено. Если в Picture находится объект типа, отличного от TBitMap, то при обращении к Canvas генерируется исключение EInvalidOperation. Если же в Picture находится битовая матрица, то Canvas можно использовать для редактирования изображения, например, для добавления в изображение надписей методом TextOut.

ClientOrigin

Координаты положения на экране левого верхнего угла клиентской области компонента.

Класс TControl

Доступ только для чтения.

Определение

TPoint = record
  X : Longint;
  Y : Longint;
end;

Property ClientOrign: TPoint;

Описание

Свойство ClientOrigin возвращает экранные координаты X и Y левого верхнего угла клиентской области компонента. Горизонатльная координата X и вертикальная координата Y хранятся в структуре типа TPoint. Началом координат считается левый верхний угол экрана.

Экранные координаты ClientOrigin для компонентов, не являющихся потомками класса TWinControl (т.е. не являющихся окнами), определяются как экранные координаты родительского компонента (компонента-контейнера), сложенные со значениями свойсв Left и Top. Если компонент не имеет родителя, то при попытке чтения ClientOrigin генерируется исключение EInvalidOperation.

BoundsRect

Определяет прямоугольник, описывающий компонент, в координатах содержащего его контейнера.
Класс TControl
Определение
TPoint = record
X : Longint;
Y : Longint;
end;
TRect = record
case Integer of
0 : (Left, Top, Right, Bottom; Integer);
1 : (TopLeft, BottomRight : TPoint);
end;
Property BoundsRect : TRect;
Описание
Свойство BoundsRect использует тип TRect и позволяет получить одновременно координаты пикселей всех четырех углов компонента. Иной способ получить те же координаты - использовать свойства компонента Left (левый край), Top (верхний край), Width (ширина), Height (высота) и соответствующие вычисления. Иначе говоря, при чтении данных эквивалентны следующие выражения:
Началом координат считается левый верхний угол родительского окна.
Отмеченная выше эквивалентность выражений для различных свойств справедлива только при чтении данных. Но присвоить целое значение, например, свойству BoundsRect.Left нельзя. Присвоить значение можно только всей структуре BoundsRect.
При задании значений BoundsRect удобно пользоваться функцией Rect, принимающей координаты сторон прямоугольника и возвращающей структуру типа TRect.
Помимо перечисленных свойств, определяющих размеры компонента, имеются еще свойства ClientWindth и ClientHeight, определяющие размеры его клиентской области. Эти размеры равны или меньше размеров Width и Height.
Свойства, определяющие координаты компонента, полезны в задачах, требующих изменения размеров или перемещения компонентов.
Примеры
1. Пусть панель Panel1 может менять свою длину при изменении пользователем размеров окна (например, имеет значение Align = alTop). И пусть в середине этой панели имеется метка StaticText1 типа StaticText, которая при всех изменениях должна оставаться посередине, не изменяя своих размеров. Это можно осуществить, вставив в обработчик событий формы OnResize и OnShow оператор:
StaticText1.Left := (Panel1.BoundsRect.Left + Panel1.BoundsRect.Right - StaticText1.Width) div 2;
Впрочем, того же эффекта можно добиться и не прибегая к свойству BounsRect, заменив приведенный оператор на следующий:
StaticText1.Left := Panel1.Left + (Panel1.Width - StaticText1.Width) div 2;
2. Пусть мы хотим, чтобы при нажатии некоторой кнопки окно текстового редактора Memo1 перемещалось в новую заранее определенную позицию с новыми определенными размерами. Мы можем в нужной позиции разместить панель Panel1 с нужными размерами, сделать ее невидимой, а в нужной, всего один оператор:
Memo1.BoundsRect := Panel1.BoundsRect;
3. Пусть мы хотим взаимно поменять местами расположения двух одинаковых по размерам панелей Panel1 и Panel2. Это можно сделать следующими операторами:
var rec : TRect;

rec := Panel1.BoundsRect; //Запоминание позиции Panel1
Panel1.BoundsRect := Panel2.BoundsRect; //Перемещение Panel1
Panel2.BoundsRect := rec; //Перемещение Panel2
4. Пример задания BoundsRect с помощью функции Rect. Пусть окно текстового редактора Memo1 расположено на родительской панели Panel1, размеры которой во время выполнения могут изменяться при изменении размеров формы. Надо, чтобы размер Memo1 также изменялся, но по отношению к клиенткой области Panel1 оставлял слева, внизу и справа зазор в 10 пикселей (для более приятного вида), а сверху - зазор 40 пикселей (для размещения заголовка окна). Это можно сделать, поместив в обработчик события OnResize панели Panel1 оператор:
Memo1.BoundRect := Rect (10,40,Panel1.ClientWindth - 10,Panel1.ClientHeight - 10);
5. Примеры использования свойства BoundsRect приведены также в разделах BringToBront и Visible.

ComponentCount

Число компонентов, которыми владеет данный компонент Класса TComponent.

ClientHeight

Высота клиентской области в пикселях
Класс TControl
Определение
property ClientHeight: Integer;
Описание
Свойство ClientHeight может использоваться для чтения или изменения высоты клиентской области. Чтение ClientHeight необходимо, чтобы изменять местоположение или размеры компонентов, расположенных в клиентской области, при изменении размеров компонента-контейнера.
Эквивалентно по значению свойству ClientRect.Bottom.
В классе TControl значение ClientHeight равно значению Height. Но в производных классах оно обычно меньше Height. Например, для формы значение ClientHeight может уменьшаться из-за бордюра, полосы заголовка, полосы меню, полосы прокрутки.
Пример
Пусть вы проектируете форму, содержащую панель Panel1, на которой размещается список ListBox1, причем во время выполнения высота этой формы может изменяться. Тогда обеспечить синхронное изменение размера окна списка можно, вставив в событие OnResize формы или этой панели оператор:
ListBox1.Height := Panel1.ClientHeight - ListBox1.Top - 20

 

Идеи и пожелания с удовольствием почитаем.

Хостинг от uCoz