WWW.KNIGI.KONFLIB.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

 
<< HOME
Научная библиотека
CONTACTS

Pages:     || 2 | 3 | 4 | 5 |   ...   | 85 |

«CVBuilder 6 СПРАВОЧНОЕ ПОСОБИЕ Книга 2 Классы и компоненты Москва ЗАО Издательство БИНОМ 2002 УДК 004.43 ББК 32.973.26-018.1 А87 Архангельский А.Я. C++Builder 6. ...»

-- [ Страница 1 ] --

А.Я. Архангельский

CVBuilder 6

СПРАВОЧНОЕ ПОСОБИЕ

Книга 2

Классы и компоненты

Москва

ЗАО «Издательство БИНОМ»

2002

УДК 004.43

ББК 32.973.26-018.1

А87

Архангельский А.Я.

C++Builder 6. Справочное пособие. Книга 2. Классы и компоненты. М.: Бином-Пресс, 2002 г. — 528 с.: ил.

В книге даются справочные сведения по многим базовым классам и типам C++Builder. Описания снабжены таблицами, содержащими свыше 2000 кратких характеристик свойств, методов, событий. Дается краткая методика разработки прикладных программ с помощью C++Builder. Помимо кратких характеристик, книга содержит подробные описания около 450 свойств, методов, событий, присущих различным компонентам и классам.

Как справочник книга полезна пользователям любой квалификации: от начинающих до опытных разработчиков.

© Архангельский А.Я., ISBN 5-9518-0009-9 © Издательство БИНОМ, Содержание От автора Глава 1. Некоторые базовые классы, типы, переменные, константы. AnsiString — тип строк Application — переменная DateSeparator — переменная Default8087CW — переменная Infinity, Neglnfinity, NaN — константы LongDateFormat — переменная LongTimeFormat, ShortTimeFormat — переменные NoErrMsg — переменная Screen — переменная Set — шаблон класса ShortDateFormat, LongDateFormat — переменные ShortTimeFormat — переменная TAlign, TAlignSet — типы TBDEDataSet — базовый класс наборов данных BDE TBitmap — класс TBrush — класс TCanvas — класс TCollection — базовый класс собраний (коллекций) объектов TCollectionltem — класс объектов в собраниях TCollection TColor — тип TComponent — базовый класс компонентов TControl — базовый класс визуальных компонентов TControlState — тип TControlStyle — тип, TCursor — тип TCustomClientDataSet — базовый класс клиентских наборов данных TCustomEdit — базовый класс окон редактирования TDataSet — базовый класс всех наборов данных TDateTime — класс TDBDataSet — класс компонентов наборов данных TField — базовый класс всех объектов полей TFieldDef — класс описания поля TFieldDefs — класс собрания описаний полей TFields — класс списков объектов нолей TFieldType — тип TFont — класс объекта шрифта TGraphic — базовый класс графических объектов. TIcon — класс TimeSeparator — переменная TIniFile — класс TList — класс TMenuItem - класс TMessage — тип TMetafile— класс TMouseButton — тип TObject — базовый класс всех объектов TOleServer — базовый класс серверов OLE ТРеп — класс TPersistent — базовый класс объектов, участвующих в операциях с потоками TPicture — класс TPoint — тип TRect — тип TReglniFile — класс TRegistry - класс TRegistrylniFile — класс. TShiftState — тип TSQLTimeStamp — тип записи даты и времени TStringFloatFormat — тип TStringList — класс TStrings — класс TSystemTime — тип записи даты и времени TTimeStamp — тип записи даты и времени ActionMainMenuBar — настраиваемая полоса состояния главного меню DBRichEdit — отображение полей текстовых данных в обогащенном формате OpenDialog, OpenPictureDialog, SaveDialog, SavePictureDialog — RichEdit — многострочное окно редактирования в обогащенном формате AsBoolean, AsCurrency, AsDateTime, AsFloat, Aslnteger, AsString, AsVariant Содержание DataSource, DataField, Field — свойства компонентов, связанных с данными KeyFields, Lookup, LookupKeyFields, LookupDataSet, LookupResultField Содержание BookmarkValid, CompareBookmarks, GetBookmark, GotoBookmark, FreeBookmark.... ConstraintsDisabled, DisableConstraints, EnableConstraints LoadFromFile и другие методы загрузки и сохранения данных Refresh, RefreshRecord — методы наборов данных SaveToFile — метод TCustomClientDataSet SaveToStream — метод TCustomClientDataSet Глава 5. События компонентов и классов C++Builder OnReconcileError, OnUpdateError — события TCustomClientDataSet От автора При написании этой книги я испытывал большие сложности, связанные с жестким ограничением ее размера и безбрежным морем справочного материала, который надо было бы в ней дать. Приходилось отбирать то, что по моим представлениям требуется большинству разработчиков, и у меня нет никакой уверенности в том, что отбор удовлетворит большинство читателей.

Я пока нашел только один выход из неразрешимого конфликта между полнотой материала и объемом книги. Справочные сведения из данной книги плюс немало дополнительного материала включено в справочные файлы [3], сведения о которых вы найдете в разделе «Дополнительные источники информации о C++Builder 6». Там, по крайней мере, нет ограничений на объем материала. Так что можно постоянно пополнять эти справки, что регулярно и делается. Да и стоимость справок заметно в лучшую сторону от стоимости книг. Конечно, справки не могут заменить книгу. Но в них есть и свои преимущества (см. в [3]). Так что я думаю, что справки могут служить хорошим и постоянно развивающимся дополнением к данной книге. По книге, конечно, удобнее изучать особенности того или иного класса и компонента. Но зато справки обеспечивают оперативную помощь в работе, простой способ воспроизведения содержащихся в них примеров и значительно больший объем справочных сведений.

Для читателей, знакомых с моей книгой «Программирование в C-H-Builder 6»

[1], должен отметить, что по сравнению с той книгой справочного материала в данной книге во много раз больше. Но, конечно, здесь отсутствует детальная методика работы с компонентами и создания прикладных программ различного назначения. Так что думаю, что данная книга может служить неплохим дополнением к прежней.



Глава Некоторые базовые классы, типы, переменные, константы В этой главе представлены сведения о некоторых базовых классах и типах C-H-Builder 6. В библиотеках С-M-Builder объявлены тысячи классов и типов, так что рассмотреть все их в рамках данной книги невозможно. Поэтому был проведен достаточно жесткий отбор тех классов, которые используются чаще всего. В каждом классе даны в виде таблиц краткие описания и синтаксис свыше 1100 основных свойств, методов и событий (полные списки вы найдете в [3]). Основными считались те, которые можно использовать при работе с данными классами из приложения. Методы, предназначенные в основном для внутреннего применения в классе и, следовательно, требуемые только при создании новых классов-наследников, в приведенных таблицах, как правило, отсутствуют.

Объявления методов и свойств даны для экономии места в упрощенном виде.

Например, пропущены спецификаторы fast call, присущие всем методам, спецификаторы virtual и др. В свойствах пропущено ключевое слово property и не указываются функции чтения и записи. Есть и другие упрощения.

В перечнях свойств, методов, событий, типов вы можете встретить идентификаторы, выделенные подчеркиванием. Например, TCanvas. Это означает, что в этой или других главах в соответствующем разделе вы сможете найти развернутое пояснение, комментарий или примеры, связанные с данным термином.

Более полную информацию о всех свойствах, методах, событиях классов и типов, описанных в данной главе, и ряда других вы можете найти в источнике [3].

AnsiString — тип строк В C++Builder тип строк AnsiString реализован как класс, объявленный в файле vcl/dstring.h и аналогичный типу длинных строк в Delphi. Это строки с нулевым символом в конце. При объявлении переменные типа AnsiString инициализируются пустыми строками.

Для AnsiString определены операции отношения ==, !=,,, =, =. Сравнение производится с учетом регистра. Сравниваются коды символов, начиная с первого, и если очередные символы не одинаковы, строка, содержащая символ с меньшим кодом считается меньше. Если все символы совпали, но одна строка длиннее и в ней имеются еще символы, то она считается больше, чем более короткая.

Для AnsiString определены операции присваивания =, += и операция склеивания строк (конкатенации) +. Определена также операция индексации [ ]. Индексы начинаются с 1. Например, если S1 = "Привет", то Sl[l] вернет 'П', Sl[2] вернет 'р' и т.д.

Тип AnsiString используется для ряда свойств компонентов C++Builder. Например, для таких, как свойства Text окон редактирования, свойства Caption меток и разделов меню и т.д. Этот же тип используется для отображения отдельных строк в списках строк типа TStrings. Таким образом, постоянно имея дело с этими свойствами, вы постоянно работаете с AnsiString.

Рассмотрим некоторые примеры работы с AnsiString. Следующий оператор демонстрирует конкатенацию (склеивание) двух строк:

Labell-Caption = Editl-Text + ' ' + Edit2-Text;

В данном случае в свойстве Labell—Caption отображается текст, введенный пользователем в окне редактирования Editl, затем записывается символ пробела, а затем — текст, введенный в окне редактирования Edit2. Как видите, склеивание строк типа AnsiString легко осуществляется перегруженной операцией сложения "+".

Рассмотрим теперь поиск в строке S1 фрагмента, заданного строкой S2, и замену его текстом строки S3. Код, осуществляющий эти операции, может иметь вид:

// операторы занесения текста в SI, S2, S int i = SI.Pos (S2);

Labell-Caption = SI.Substring(1,i-1) + S3 + else Labell-Caption = "Текст не найден";

В этом коде использован ряд функций-элементов класса AnsiString: Pos, Substring, Length. Обратите внимание на то, что доступ к ним осуществляется операцией точка (.), вместо более привычной в C-H-Builder операции доступа к методам компонентов стрелка (-). Дело в том, что к методам компонентов доступ осуществляется через указатель на объект, а в данном случае к методам AnsiString доступ осуществляется через сами объекты-строки.

Первый выполняемый оператор приведенного кода использует функцию Pos.

Эта функция ищет в строке, к которой она применена (в нашем случае в S1), первое вхождение подстроки, заданной ее параметром (в нашем случае S2). Если поиск успешный, функция возвращает индекс первого символа найденного вхождения подстроки. Индексы начинаются с 1. Если подстрока не найдена, возвращается 0.

Следующий оператор с помощью структуры if...else проверяет, не равно ли нулю (false) возвращенное функцией Pos значение. Если не равно, то производится формирование строки с заменой найденной подстроки. Строка формируется склеиванием трех строк: начальной части строки S1, расположенной до найденного вхождения подстроки, строки S3, заменяющей найденное вхождение, и заключительной части строки S1, расположенной после найденного вхождения. Для получения фрагментов строки S1 использована функция Substring. Эта функция возвращает подстроку, начинающуюся с символа в позиции, заданной первым параметром функции, и содержащую число символов, не превышающее значение, заданное вторым параметром функции. Таким образом, выражение Sl.SubString(l, i — 1) возвращает подстроку строки S1, начинающуюся с первого символа и содержащую i символов, т.е. часть строки S1, расположенную до найденного вхождения подстроки S2. Аналогично, выражение Sl.SubString(i + S2.Length(), 255) возвращает подстроку строки S1, расположенную после найденного вхождения подстроки S2.

При этом для определения начала этой подстроки использована функция Length, возвращающая число символов в строке (в нашем случае — в строке S2, содержащей заменяемый фрагмент). В приведенном выражении в качестве второго параметра функции Substring задано число 255, которое, как ожидается, превышает длину подстроки. В действительности будет возвращено менее 255 символов, столько, сколько имеется до завершающего S1 нулевого символа.

Если нам надо не отображать измененную строку в виде сообщения, а просто произвести замену фрагмента в исходной строке S1, это еще более упрощает код, который в этом случае сводится всего к двум операторам:

Давайте еще более усложним задачу: пусть в строке S1 надо заменить все вхождения S2 на строку S3. Эту задачу можно было бы решить следующим кодом:



Pages:     || 2 | 3 | 4 | 5 |   ...   | 85 |