Russian Belarusian English German Japanese Ukrainian

Методы

Метод - это функция, принадлежащая какому-то классу или объекту.
Как и процедура, метод состоит из некоторого количества операторов для выполнения какого-то действия, имеет набор входных аргументов и возвращаемое значение.
Методы предоставляют интерфейс, при помощи которого осуществляется доступ к данным объекта некоторого класса, тем самым, обеспечивая инкапсуляцию данных.

Add

Описание

Функция Add добавляет новый элемент в список. Если список не сортированный, то элемент добавляется в конец списка. Если же список сортированный, то новый элемент добавляется в позицию, которая определяется сортировкой. Функция возвращает индекс добавленного элемента (индекс первого элемента - 0). Увеличивает значение свойства Count на 1. Если значение Count равно значению Capacity (емкости массива), то увеличивается значение Capacity (с запасом) и перераспределяется память под новые элементы.
Для сортированного списка TStringList при выполнении Add генерируется исключение EListError, если строка S уже имеется в списке и свойство Duplicates установлено в dupError.
 
Классы

TList
TSiringList
TStrings
 
Определение

TList:
int __fastcall Add(void * Item);
TStrings и TStringList:
virtual int, _fastcall Add(const System::AnsiString S);
 
Пример

TStringList *TL = new TStringList;
TL->Sorted - true;
TL->Duplicates = dupError;
TL->Add("Петров");
int i = TL->Add("Иванов");
TL->Add("Иванов");

Assign (метод графических объектов)

Описание

Метод Assign копирует изображение, содержащееся в объекте Source, в данный объект. Типы объектов источника и приемника должны быть одинаковыми. Исключение составляет свойство Graphic объекта TPicture. Graphic может участвовать в обменах изображениями с объектами типов TBitMap, TIcon и TMetaFile.
Объектом копирования для классов TBitMap, TIcon и TMetaFile может быть также буфер обмена - объект Clipboard. При этом надо не забыть включить в приложение директиву:
#include <vcl\Clipbrd.hpp>
Свойство Graphic объекта TPicture может участвовать только в копировании, в буфер обмена, но не в копировании из буфера.
 
Классы

TBitMap
TIcon
TMetaFile
TPicture
 
Определение

virtual void __fastcall Assign (Classes::TPersistent * Source);
 
Пример №1

Два приведенных ниже оператора делают одно и то же: копируют изображение из компонента Image2 в компонент Image1. Но второй выполняется успешно только в том случае, если тип графического объекта в Image2 - TBitMap.
Image1->Picture->Bitmap->Assign(Image2->Picture->Bitmap);
Image1->Picture->Bitmap->Assign(Image2->Picture->Graphic);
 
Пример №2

Каждый из приведенных ниже операторов копирует изображение из компонента Image2 в буфер обмена Clipboard.
Clipboard()->Assign(Image2->Picture->Bitmap);
Clipboard()->Assign(Image2->Picture->Graphic);
 
Пример №3

Приведенный ниже оператор читает изображение из буфера обмена Clipboard в компонент Imagel. Если в Clipboard хранится не битовая матрица, будет генерироваться исключение.
Image1->Picture->Bitmap->Assign(Clipboard());

Assign (метод копирования объектов)

Описание

Метод Assign копирует данные одного объекта в другой. Объявлен в классе TPersistent и перегружен в классах, производных от него. Некоторое число классов C++Builder поддерживает присваивание объектов разных типов. Для большинства же классов, производных от TPersistent, применение Assign к несовпадающим типам объектов источника и назначения ведет к генерации исключения EConvertError.
При присваивании указатель на <объект-назначение> начинает указывать на <обьект-источник>. А метод Assign создает новую копию объекта. После применения Assign имеется два объекта с одинаковыми данными.
Если объекты разного типа, то при вызове D->Assign(S) тип D должен «знать», как скопировать в него тип S (тип S может ничего не знать о преобразовании типов). Если метод Assign не может осуществить преобразование типов, то он вызывает защищенный метод AssignTo, объявленный в классе TPersistent и перегруженный в классах, производных от него. Вызов имеет вид S->AssignTo(D). Если и метод AssignTo не может осуществить преобразование или если он не перегружен, то вызывается AssignTo класса TPersistent и генерируется исключение.
 
Классы

TBlobField, TBrush, TCheckConstraint, TClipboard, TCollection, TColumn, TColumnTitle, TControlScrollBar, TCoaWand, TCustomlmageList, TDateTimeColors, TDimensionltems, TField, TFieldDefs, TFont, THeaderSeetion, TIndexDefs, TJPEGImage, TListColumn, TListltems, TOleGraphic, TParaAttributes, TParam, TParams, TPen, TPersistent, TSmattlntArray, TStatusPanel, TStringGridStrings, TStrings, TTe.xtAttributes, TTreeNode, TTreeNodes
 
Определение

<объект-назначение>->Assign(<объект-источник>);
 
Пример №1

На форме имеется компонент FontDiaolg1, позволяющий пользователю выбрать вид шрифта для изображения надписей на форме. Тогда обработчик соответствующего события в разделе меню может иметь вид:
if(FontDialog1->Execute ())
Font->Assign(FontDialog1->Font);
 
Пример №2

В программе объявлено и заполнено два списка SL1 и SL2 типа TStringList. На форме имеется компонент ComboBox1, в котором надо отображать один из списков SL1 или SL2 в зависимости от того, какая кнопка с флажком нажата в группе радиокнопок RadioGroup1. Тогда в событие OnClick этой группы радиокнопок надо вставить обработчик. Последний оператор ComboBox1->ItemIndex = 0 необходим, чтобы изменение списка сразу отобразилось на экране:
TStringList *SL1 = new TStringList;
TStringList *SL2 = new TStringList;
void __fastcall TForm1::RadioGroup1Cliok (TObject *Sender)
{
if(RadioGroup1->ItemIndex == 0)
ComboBox1->Items->Assign(SL1);
else
ComboBox1->Items->Assign(SL2);
ComboBox1->ItemIndex = 0;
}
 
Пример №3

Метод Assign позволяет проводить обмен данными между совершенно разнородными компонентами, например, компонентом буфера обмена TClipboard и графическим объектом TBitmap. Записать изображение в буфер можно оператором:
Clipboard()->Assign(Bitmap);
А прочитать из него изображение можно оператором:
Bitmap->Assign(Clipboard());

BeginDrag

Описание

Метод BeginDrag вызывается, когда начинается процесс перетаскивания компонента. Его необходимо вызывать только если значение свойства DragMode компонента равно dmManuai. В противном случае процесс перетаскивания производится автоматически.
Вызов метода BeginDrag целесообразно вставлять в обработчик события OnMouscDown. Параметр Immediate (немедленно) определяет, сразу ли после нажатия кнопки мыши ее указатель изменит вид на тот, который задан свойством DragCursor, и сразу ли начнется процесс перетаскивания. Если параметр Immediate задан равным false, то указатель мыши не изменяет свой вид и процесс перетаскивания не начинается, пока пользователь не сместит указатель на число пикселов, заданное параметром Threshold. Это позволяет компоненту воспринимать щелчок мыши, не начиная операцию перетаскивания.
Если значение Threshold задано отрицательным (это принято по умолчанию), то функция BeginDrag использует значение свойства DragThreshold глобальной переменной Mouse.
 
Классы

TControl
 
Определение

void __fastcall BeginDrag(bool Immediate, int Threshold);

BringToFront

Описание

Метод BringToFront позволяет изменять последовательность перекрытия компонентов на форме и тем самым управлять видимостью компонентов.
Перекрывающиеся компоненты на форме размещаются поверх друг друга в так называемой Z-последовательности, соответствующей порядку размещения компонентов в процессе проектирования. Например, если вы поместили в одно и то же место формы две кнопки одинаковых размеров, то видна будет только вторая из размещенных кнопок, поскольку она расположена в Z-последовательности выше. Применение во время выполнения приложения метода BringToFront к нижней кнопке переместит ее наверх в Z-последовательности и она станет видна пользователю.
Это справедливо по отношению к не оконным объектам, таким, как кнопки, метки, изображения и т.д., а также и к оконным компонентам, таким, как Memo, ComboBox и др. Но все не оконные компоненты всегда расположены в Z-последовательности ниже оконных и метод BringToFront не может изменить это правило. Например, попытка перенести наверх методом BringToFront метку, размещенную под оконным компонентом, ни к чему не приведет.
 
Классы

TControl
 
Прототип

void __fastcall BringToFront(void);
 
Пример №1

Пусть вы хотите, чтобы в каком-то месте формы размещалась кнопка, которая в зависимости от текущего режима работы имела бы два различных набора свойств и выполняла бы различные функции. Вы можете разместить в нужном месте две кнопки друг на друге (пусть они имеют имена Button1 и Button2), задать каждой нужные свойства и для каждой описать соответствующие обработчики событий. Тогда для смены этих кнопок вы в соответствующих местах кода программы пропишите:
Button1->BringToFront();
Button2->BringToFront();
Пользователь будет видеть то одну, то другую из этих кнопок.
 
Пример №2

Пусть в приложении в одном и том же месте формы друг на друге расположены две панели: Panel1 и на ней Panel2, содержащие какие-то управляющие компоненты для разных режимов работы. Panel2 расположена на Panel1, которая является, таким образом, ее родителем. В обработчик события формы OnCreate можно вставить следующее:
Panel2->Parent = Form1;
Panel2->BoundsRect = Panel1->BoundsRect;
Panel1->BringToFront ();
Первый оператор делает родительским компонентом панели Panel2 форму Form1. Второй оператор задает панели Panel2 то же местоположение и размеры, которые имеет панель Panel1. Последнее необходимо, поскольку при проектировании ее координаты соответствовали координатному пространству контейнера - клиентской области панели Panel1. А теперь ее родитель сменился на форму, и надо ее расположить в том же месте формы, в котором расположена Panel1. Третий оператор перемещает наверх форму Panel1.

BrushCopy

Описание

Метод BrushCopy копирует часть изображения битовой матрицы компонента Bitmap на данную канву, заменяя указанный цвет Color в изображении на значение, установленное для кисти канвы Brush. Параметр Source указывает копируемую прямоугольную область в источнике изображения Bitmap. Параметр Dest указывает прямоугольную область на канве, в которую производится копирование.
Замена цвета делает изображение как бы частично прозрачным, если в параметре Color указать цвет фона изображения, а в параметре Color кисти Brush канвы указать цвет фона канвы.
 
Классы

TCanvas
 
Прототип

void __fastcall BrushCopy(const Windows::TRect SDest, TBitmap* Bitmap, const Windows::TRect SSource, TCOlor Color);
 
Пример

Оператор копирует прямоугольную область с координатами углов (10, 10) и (100, 100) из компонента Bitmapl в аналогичную область канвы формы Form1 и заменяет в изображении черный цвет на цвет, установленный в свойстве Form1->Саnvas->Brash->Color:
Form1->Canvas->BrushCopy(Rect(10,10,100,100), Bitmap1, Rect(10,10,100,100) , clBlack);

Chord

Описание

Метод Chord рисует замкнутую фигуру дугу окружности или эллипса, замкнутую хордой, с помощью текущих параметров пера Реn. Фигура заполняется текущим значением Brush. Точки (X1, Y1) и (Х2, Y2) определяют прямоугольник, описывающий эллипс. Начальная точка дуги определяется пересечением эллипса с прямой, проходящей через его центр и точку (ХЗ, Y3). Конечная точка дуги определяется пересечением эллипса с прямой, проходящей через его центр и точку (Х4, Y4). Дуга рисуется против часовой стрелки от начальной до конечной точки. Хорда соединяет точки (ХЗ, Y3) и (Х4, Y4).
В Windows 95/98 суммы X1 + Х2, Y1 + Y2 и X1 + Х2 + Y1 + Y2 не должны превышать 32768.
В Windows NT направление рисования дуги можно изменить на направление по часовой стрелке вызовом функции SetArcDirection.
 
Классы

TCanvas
 
Прототип

void __fastcall Chord{int X1, int Y1, int X2, int Y2, int X3, int Y3, int X4, int Y4);
 
Пример №1

Image1->Canvas->Chord(0,0,200,200,200,0,0,0);
 
Скриншот

Пример №1 - Chord
 
Пример №2

Image1->Canvas->Chord(0,0,200,200,0,0,200,0);
 
Скриншот

Пример №2 - Chord

ClassName

Описание

Метод ClassName возвращает имя действительного типа объекта. Например, переменная типа класса-предка может ссылаться на экземпляр любого типа-потомка. В этом случае ClassName возвращает имя реального типа объекта, а не того, которое было объявлено для этой ссылки.
 
Классы

TObject
 
Определение

static ShortString __fastcall ClassName(TClass els);

Clear

Описание

Для перечисленных выше объектов и компонентов процедура Clear удаляет все элементы списков или весь текст. Для некоторых других объектов аналогичная процедура действует несколько иначе.
Для объекта Clipboard процедура Clear удаляет все содержимое буфера Clipboard. Впрочем, то же самое происходит автоматически при каждом обновлении содержимого буфера (при выполнении операций вырезать и копировать - Cut и Сору).
 
Классы

TClipboard, TList, TStringList, TStrings, TComboBox, TDBCombobox, TDBEdit, TDBListBox, TDBMemo, TDirectoryListBox, TDriveComboBox, TEdit, TFileListBox, TLlstBox, TMaskEdit, TMemo, TOutline и ряд других
 
Определение

DYNAMIC void __fastcall Clear(void);

ClientToParent и ParentToClient

Описание

Метод ClientToParent (введен в C++Builder 6) преобразует координаты точки Point данного компонента в систему координат родительского компонента АPаrent. Метод ParentToClient осуществляет обратное преобразование. Компонент AParent может быть непосредственным родителем - контейнером, содержащим данных компонент. А может быть одним из его предшественников - компонентом, который можно найти по цепочке ссылок свойств Parent.
Если параметр AParent равен NULL или просто не задан, подразумевается непосредственный родитель данного компонента.
Если параметр AParent не соответствует родительскому компоненту или если свойство Parent данного компонента равно nil, генерируется исключение ElnvalidOperation.
 
Классы

TControl
 
Определение

struct TPoint
{
int x;
int y;
};
TPoint __fastcall ClientToParent(const TPoint Point, TWinControl *AParent = (TWinControl*) NULL);
Types::TPoint __fastcall ParentToClient(const Types::TPoint &Point,TWinControl* AParent = (TWinControl*) NULL);
 
Пример

Пусть в вашем приложении имеется панель Panel1, размещенная непосредственно на форме Form1 или на какой-то другой панели. И пусть на панели Panel1 размещена панель Panel2. Вы хотите, чтобы при щелчке на некоторой кнопке панель Panel2 размещалась непосредственно на форме Form1, не изменяя при этом своего положения. Это может потребоваться, например, чтобы Panel2 не сдвигалась при перетаскивании панели Panel1.
TPoint Coord = Panel1->ClientToParent(Point(Panel2->Left,Panel2->Top),Form1);
Panel2->SetBounds(Coord.x, Coord.y, Panel2->Width, Panel2->Height);
Panel2->Parent = Form1;
Первый оператор переводит координаты левого верхнего угла панели Panel2, которые заданы в системе координат контейнера Panel1, в систему координат формы Form1 и запоминает эти координаты в переменной Coord. Следующий оператор изменяет координаты левого верхнего угла панели Panel2. А последний оператор размещает панель Panel2 непосредственно на форме Form1. Если панель Panel1 размещается непосредственно на форме, то второй параметр (Form1) в вызове ClientToParent можно вообще не указывать или задать равным NULL.