Учись программированию на C++ Builder бесплатно!

Описание


Метод 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


На форме имеется компонент FontDialog1, позволяющий пользователю выбрать вид шрифта для изображения надписей на форме. Тогда обработчик соответствующего события в разделе меню может иметь вид:

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::RadioGroup1Click(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());
Поделиться