WWW.KNIGI.KONFLIB.RU

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

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

Pages:     | 1 |   ...   | 83 | 84 ||

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

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

Если требуется различная обработка событий в зависимости от того, какая кнопка мыши нажата или какая нажата вспомогательная клавиша, можно анализировать параметры Button и Shift. Значения параметра Button определяют, какая кнопка мыши нажата: mbLeft — левая, mbRight — правая, mbMiddle — средСобытия компонентов и классов C++Builder няя. Параметр Shift представляет собой множество, содержащее помимо обозначения нажатой кнопки еще и обозначения нажатых одновременно с этим вспомогательных клавиш Shift, Alt, Ctrl (соответствуют элементам множества ssShift, ssAlt, ssCtrl). Параметры X и Y определяют координаты указателя мыши в клиентской области компонента. Параметр Sender — указатель на компонент, в котором произошло событие.

Примеры 1. Обработчик события OnMouseDown может использоваться для начала процесса перетаскивания компонента, если вы решили задать какое-то дополнительное условие (например, проверка каких-то опций), по которому можно начинать перетаскивание. В этом случае в компоненте вы задаете свойство DragMode, равным dmManual, что обеспечивает управление началом перетаскивания. Обработчик события OnMouseDown может иметь вид:

проверка какого-нибудь условия) В приведенной структуре if первое условие (Button == mbLeft) можно заменить эквивалентным ему условием, проверяющим параметр Shift:

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

ListBoxl-BeginDrag(false,5);

OnMouseEnter, OnMouseLeave События наступают в начале и конце прохождения курсора мыши над меткой.

Класс TCustomLabel Определения Описание Событие OnMouseEnter наступает в начале, а событие OnMouseLeave — в конце прохождения курсора мыши над меткой. Обработчики этих событий могут использоваться, например, для изменения шрифта или цвета фона метки при прохождении над ней курсора мыши. Например, следующие обработчики меняют цвет надписи метки на красный при прохождении над ней курсора:

Labell-Font-Color = clRed;

void fastcall TForml::LabellMouseLeave(TObject *Sender) Labell-Font-Color = clBlack;

OnMouseMove Событие наступает при перемещении курсора мыши над компонентом.

Класс TControl Определение enum Classes 1 {ssShift, ssAlt, ssCtrl, ssLeft, typedef SetClasses 1, ssShift, ssDouble ShiftState;

property TMouseMoveEvent OnMouseMove Описание Обработчик события OnMouseMove пишется, если надо произвести какие-то операции при перемещении курсора мыши над компонентом.

Параметр Shift, являющийся множеством, содержит элементы, позволяющие определить, какие кнопки мыши и какие вспомогательные клавиши (Shift, Ctrl и Alt) нажаты в этот момент. Параметры X и Y определяют координаты указателя мыши в клиентской области компонента. Параметр Sender (источник события) — сам компонент.

Событие OnMouseMove возникает независимо от того, нажаты ли какие-то кнопки или клавиши. Правда, хотя это и не документировано в C++Builder, при нажатой левой кнопке мыши это событие, почему-то, не наблюдается.

Этот оператор проверяет, не нажата ли клавиша Alt во время перемещения курсора мыши над компонентом, и, если нажата, то предпринимаются какие-то действия.

OnMouseUp См. раздел «OnMouseDown и OnMouseUp».

OnMouseWheel, OnMouseWheelUp, OnMouseWheelDown События наступают при вращении колесика мыши.

Класс TControl. до C-H-Builder 6 — TWinControl Определения typedef SetClasses 1, ssShift, ssDouble TShiftState;

int WheelDelta, const Types::TPoint SMousePos, property TMouseWheelEvent typedef void f a s t c a l l ( closure *TMouseWheelOpDownEvent) property TMouseWheelUpDownEvent OnMouseWheelDown typedef void fastcall ( closure *TMouseWheelUpDownEvent) (System::TObject* Sender, Classes::TShiftState Shift, const Types::TPoint SMousePos, bool SHandled);

property TMouseWheelUpDownEvent OnMouseWheelUp Описание События OnMouseWheel, OnMouseWheelUp и OnMouseWheelDown наступают при вращении колесика мыши, если, конечно, у вашей мыши есть колесико.

Первым наступает событие OnMouse Wheel при вращении колесика в любую сторону. Параметр Sender указывает на компонент, в котором произошло событие.

Параметр Shift, являющийся множеством, содержит элементы, позволяющие определить, какие кнопки мыши и какие вспомогательные клавиши (Shift, Ctrl и Alt) нажаты в этот момент. Параметр WheelDelta показывает, сколько раз повернулось колесико. Это положительное число при вращении вверх и отрицательное — при вращении вниз. Параметр MousePos типа TPoint определяет позицию курсора мыши. А передаваемый по ссылке параметр Handled указывает, завершена ли обработка события. Если по окончании обработки задать Handled = false, то событие далее будет обрабатываться обработчиком родительского компонента. Во многих оконных компонентах: Memo. RichEdit и других заложена обработка события OnMouseWheel по умолчанию. Учтите, что эти обработчики по умолчанию будут срабатывать только в том случае, если в компоненте заданы полосы прокрутки (собственно, это обработчики не самих элементов, а полос прокрутки).

Поскольку в компонентах имеются собственные обработчики, писать свой обработчик надо только в тех случаях, когда требуется какая-то нестандартная реакция на вращение колесика.

Если обработчик события OnMouseWheel отсутствует или если в нем задано Handled = false, то в зависимости от направления вращения колесика наступает событие OnMouseWheelUp при вращении вверх, или OnMouseWheelDown при вращении вниз. Параметры обработчиков этих событий те же, что в событии OnMouseWheel. Только отсутствует параметр WheelDelta.

Примеры Если вы зададите для формы обработчики void fastcall TForml::FormMouseWheelDown(TObject *Sender, TShiftState Shift, TPoint SMousePos, bool «.Handled) ScaleBy(100,101);

void fastcall TForml::FormMouseWheelUp(TObject *Sender, TShiftState Shift, TPoint SMousePos, bool SHandled) ScaleBy(101,100);

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

void fastcall TForml::FormMouseWheel(TObject *Sender, ScaleBy(100 + WheelDelta / 100,100);

OnNewRecord Событие, наступающее при вставке в набор данных новой записи.

Класс TDataSet Определение typedef void fastcall ( closure *TDataSetNotifyEvent) (TDataSet* DataSet);

property TDataSetNotifyEvent OnNewRecord Описание Событие OnNewRecord наступает при выполнении методов Insert и Append.

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

OnPaint Событие наступает при получении сообщения Windows о необходимости перерисовать испорченное изображение.

Классы TCustomForm, TPaintBox Определение typedef void ( closure *TNotifyEvent) (System::TObject* Sender);

property Classes::TNotifyEvent OnPaint Описание Событие OnPaint наступает, когда приходит сообщение Windows о необходимости перерисовать испорченное изображение. Изображение может испортиться из-за временного перекрытия данного окна другим окном того же или стороннего приложения. Обработчик данного события должен перерисовать изображение.

При перерисовке изображения канвы Canvas можно использовать свойство ClipRect. которое указывает область канвы, внутри которой изображение испорчено.

Примеры Если копия изображения, отображаемого на канве, хранится в компоненте BitMap, то обработчик события OnPaint для формы может иметь вид:

Canvas-Draw(О,О,Bitmap);

а для компонента PaintBox PaintBoxl-Canvas-Draw(О,О,Bitmap);

Более быстрая перерисовка получается при использовании свойства ClipRect канвы, например:

Canvas-CopyRect(Canvas-ClipRect,Bitmap-Canvas, OnPostError Событие, наступающее при генерации исключения в процессе пересылки в базу данных измененной записи.

Класс TDataSet Определение enum TDataAction { daFail, daAbort, daRetry };

typedef void fastcall ( closure *TDataSetErrorEvent) property TDataSetErrorEvent OnPostError Описание Событие OnPostError наступает, если была сделана попытка переслать методом Post в базу данных или в буфер кэша измененную запись и она закончилась неудачей — генерацией исключения. В обработчике события OnPostError можно предусмотреть действия, необходимые в этом случае.

Параметр DataSet — набор данных, с которым ведется работа. Параметр Е — указатель на объект ошибки, содержащий сообщение сгенерированного исключения. Его свойство Е.Message содержит сообщение об ошибке, а свойство E.HelpContext — номер темы контекстной справки. Пользуясь этими свойствами, можно отобразить пользователю сообщение об ошибке и какие-то рекомендации по его дальнейшим действиям.

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

daFail Прерывание операции, приведшей к ошибке, и отображение daAbort Прерывание операции, приведшей к ошибке, без отображения daRetry Повторение операции, приведшей к ошибке. Если обработчик возвращает это значение, то он должен принять меры к устранению причин, вызвавших ошибку При обращении к обработчику значение Action равно daFail.

OnProgress События происходят при медленных процессах изменения графического изображения и позволяют построить индикатор хода процесса.

Класс TGraphic Определение enum TProgressStage {psStarting, psRunning, p s E n d i n g } ;

typedef void ( closure *TProgressEvent) ( S y s t e m : : T O b j e c t * Sender, property TProgressEvent OnProgress Описание События OnProgress наступают во время медленных процессов изменения графического изображения таких, как загрузка, сохранение, трансформация. Эти события позволяют построить в приложении индикатор хода процесса, обеспечивающий обратную связь с пользователем. Разработчики новых компонентов могут генерировать события OnProgress, вызывая защищенный метод Progress.

Параметр Stage указывает стадию процесса: начало, продолжение, окончание.

Он может соответственно принимать значения psStarting, psRunning и psEnding.

Если приложение предусматривает индикацию процесса, то можно создавать индикатор при Stage = psStarting, изменять его показания, пока Stage = psRunning и закрывать при Stage = psEnding. Параметр PercentDone показывает, какая примерно часть процесса выполнена. Этот параметр может использоваться в индикаторе процесса.

Параметр RedrawNow указывает, может ли изображение в данный момент быть успешно отображено на экране. Параметр R указывает область изображения, которая изменена и нуждается в перерисовке.

Параметр Msg содержит краткую справку о протекающем процессе. Например, "Loading", "Storing" или "Reducing colors". Строка Msg может быть и пустой.

OnReconcileError, OnUpdateError — события TCustomClientDataSet Наступают при необходимости принятия решение относительно записи, вызвавшей ошибку при обновлении базы данных.

Класс TCustomClientDataSet Объявления enum TReconcileAction {raSkip, raAbort, raMerge, typedef void fastcall ( closure *TReconcileErrorEvent) property TReconcileErrorEvent OnReconcileError property TResolverErrorEvent OnUpdateError Описание События OnUpdateError возникают во внутреннем провайдере, а события OnReconcileError генерируются методом Reconcile, который, в свою очередь, вызывается методом ApplyUpdates. заносящим изменения в базу данных. Суть этих событий одна и та же. Если обнаруживаются записи, вызывающие ошибки при занесении их в базу данных, то для каждой такой записи генерируется соответствующее событие. Различие между OnUpdateError и OnReconcileError заключается в том, что события OnUpdateError возникают в процессе обновления базы данных, а события OnReconcileError — после. Так что события OnReconcileError возникают только для тех записей, для которых в обработчике OnUpdateError (если он вообще задан) конфликт не разрешился.

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

Параметр DataSet — это тот клиентский набор данных, записи которого вызвали ошибку. Если ошибка произошла во вспомогательном наборе данных, то DataSet указывает этот набор, хотя событие генерируется для головного набора данных. При обработке события можно использовать для разрешения конфликта такие свойства набора данных DataSet, как свойства полей NewValue. OldValue.

Сиг Value. Однако в обработчике событий нельзя изменять текущую запись DataSet, применяя методы навигации (Next. Prior и т.п.).

Параметр Е является указателем на объект типа EReconcileError. Он содержит информацию, которую можно использовать при обработке ошибки. Основные свойства объекта типа EReconcileError:

Код ошибки, возвращаемый BDE, ADO, dbExpress или иными технологиями:

property Word ErrorCode Код предыдущей ошибки в процессе их обработки (если ошибки не было — 0):

property Word PreviousError Дополнительная информация (может быть NULL):

Параметр UpdateKind указывает тип операции, вызвавшей ошибку: ukModify — изменение записи, uklnsert — вставка, ukDelete — удаление.

В параметр Action надо занести результат обработки ошибки:

raSkip Пропустить обработку данной записи, т.е. оставить ее в списке незавершенных исправлений raAbort Прервать все операции обработки ошибок raMerge Объединить изменяемую запись с записями сервера (фактически, Заменить текущую обновляемую запись записью, сформированной raCorrect в обработчике события (это случай, когда вы можете исправить Отменить все исправления данной записи, вернувшись к первонаraCancel Отменить все исправления данной записи и заменить запись той, raRefresh В обработчике события OnReconcileError надо предоставить пользователю всю доступную информацию о возникшей проблеме и дать возможность принять решение. Например, пользователь может изменить значение NewValue соответствующего поля набора DataSet (то значение, которое вызвало ошибку) и задать Action = raCorrect. В этом случае будет сделана попытка занести в базу данных исправленный вариант записи. Пользователь может выбрать Action = raRefresh, т.е.

отказаться от сделанных исправлений и согласиться на ту запись, которая находится в данный момент в базе данных. Он может также выбрать Action = raCancel, т.е. отказаться от сделанных исправлений и принять те значения полей, которые были перед началом редактирования. Наконец, пользователь может отказаться временно от принятия решения (Action = raSkip или raAbort) и продолжить работу по редактированию записей.

Ниже приведен пример фрагмента обработчика события OnReconcileError, в котором пользователю сообщается информация о возникшей проблеме. Информация заносится в окно Memol.

void fastcall TForml::ClientDataSetlReconcileError( TCustomClientDataSet *DataSet, EReconcileError *E, TUpdateKind UpdateKind, TReconcileAction &Action) Memol-Clear();

Memol-Lines-Add("Kofl ошибки: " + IntToStr (E-ErrorCode));

Memol-Lines-Add("Прежний код: " + Memol-Lines-Add("Сообщение: " + E-Message);

Memol-Lines-Add(E-Context) ;

AnsiString S = "Операция: ";

switch (UpdateKind) case ukModify: S += "изменение записи";

case ukDelete: S += "удаление";

Memol-Lines-Add(S) ;

if (UpdateKind == ukModify) for(int 1 = 0 ; i DataSet-FieldCount; i + + ) TField *F= DataSet-Fields-Fields[i];

if ((F-FieldKind != fkData) | | VarlsEmpty(F-NewValue)) continue;

Memol-Lines-Add("");

Memol-Lines-Add("Пoлe " + F-FieldName);

Memol-Lines-Add("Прежнее значение: " + Memol-Lines-Add("Записываемое значение " + if (! VarlsEmpty(F-CurValue)) Memol-Lines-Add("Значение в БД: " + Первые операторы приведенного кода заносят в Memol коды ошибок, текст сообщения об ошибке и характер проводимой операции. Отметим, что типичные сообщения об ошибках желательно перевести на русский язык (в коде это не делается). Затем, в случае, если выполнялась операция модификации записи, организуется цикл по всем полям записи. Для тех полей, которые содержат измененные данные (тип поля fkData — данные, имеется значение New Value) дается информация обо всех значениях этого поля.

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

В обработчике события OnReconcileError может быть успешно использован диалог Reconcile Error Dialog, содержащийся в Депозитарии на странице Dialogs. Он предоставляет пользователю подробную информацию о возникшей проблеме и дает полную возможность принять решение. Желательно только русифицировать его. Для этого достаточно перевести надписи меток на форме и определить следующим образом глобальные переменные:

char * A c t i o n S t r [ ] = ("Пропустить", "Прервать", "Объединить", char *UpdateKindStr[] = {"Изменение", "Вставка", "Удаление"};

char *SCaption = "Ошибка ";

char *SUnchanged = "Не изменено";

char *SBinary = "(двоичное)";

char *SFieldName = "Имя поля";

char *SOriginal = "Начальное значение";

char *SConflict = "Конфликтное значение";

char *SValue = "Значение";

char *SNoData = "Нет данных";

char *SNew = "Новое";

Если используется этот диалог, обработчик события OnReconcileError состоит всего из одного оператора:

Action = HandleReconcileError(this, DataSet, UpdateKind, E);

OnSetText Событие наступает при задании свойству Text нового значения.

Определение typedef void fastcall ( closure *TFieldSetTextEvent) property TFieldSetTextEvent OnSetText Описание Обработчик события OnSetText позволяет отреагировать на изменение свойства Text — строки, используемой для ввода пользователем данных в режиме редактирования. Событие OnSetText генерируется после редактирования пользователем значения поля перед присвоением нового значения свойству Value. Параметр обработчика Text отображает в текстовом виде новое введенное пользователем значение поля. Это значение можно проверить и, если оно допустимо, то передать его в соответственно отформатированном виде в значение Value. Если такого присваивания Value не сделано, то введенное значение поля не перепишется в Value.

OnStartDrag Событие наступает, когда пользователь начинает процесс перетаскивания компонента.

Класс TControl Определение typedef void ( closure *TStartDragEvent) ( System::TObject* Sender, TDragObject* SDragObject);

property TStartDragEvent OnStartDrag Описание Событие OnStartDrag наступает, когда пользователь нажал левую кнопку мыши над объектом и, не отпуская ее, начал смещать курсор мыши, т.е. начал перетаскивание.

Обработчик события OnStartDrag позволяет описать какие-то специальные действия, необходимые при начале перетаскивания. Параметр Sender является тем компонентом, который должен перетаскиваться или который содержит объект будущего перетаскивания.

Переменная DragObject по умолчанию равняется NULL. Это означает, что переноситься будет сам компонент или его объект. При этом автоматически создается объект типа TDragControlObject, с которым C++Builder осуществляет весь процесс перетаскивания. Но обработчик может создавать и новый объект перетаскивания, в котором определен какой-нибудь особый вид курсора и т.п.

OnUpdateError — событие TBDEDataSet Событие, наступающее при генерации исключения в процессе пересылки в базу кэшированных изменений.

Класс TBDEDataSet Определение enum TUpdateKind (ukModify, uklnsert, ukDelete);

enum TUpdateAction {uaFail, uaAbort, uaSkip, uaRetry, uaApplied};

typedef void fastcall ( closure *TUpdateRecordEvent) (Db::TDataSet * DataSet, Db::TUpdateKind UpdateKind, property TUpdateRecordEvent OnUpdateError Описание Событие OnUpdateError наступает, если была сделана попытка переслать в базу кэшированные изменения и она закончилась неудачей — генерацией исключения. Поскольку начало кэширования и пересылка изменений в базе данных разнесены во времени, то может оказаться, что другое приложение уже успело изменить записи, которые были кэшированы. В этом случае Borland Database Engine (BDE) осуществляет соответствующие проверки, и если они не привели к удовлетворительному результату, то генерируется исключение и наступает событие OnUpdateError. В обработчике этого события можно предусмотреть необходимые действия.

Параметр DataSet — набор данных, с которым ведется работа. Параметр Е — указатель на объект ошибки, содержащий сообщение сгенерированного исключения. Его свойство E.Message содержит сообщение об ошибке. Пользуясь им, можно отобразить пользователю сообщение об ошибке и какие-то рекомендации по его дальнейшим действиям.

Значение параметра UpdateKind указывает, случилась ли ошибка во время вставки (значение uklnsert), удаления (значение ukDelete) или модификации (значение ukModify) записи.

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

Прерывание операции, приведшей к ошибке, без отображения польuaAbort Прерывание операции, приведшей к ошибке, и отображение пользеuaFail Повторение операции, приведшей к ошибке. Если обработчик возdaRetry вращает это значение, то он должен принять меры к устранению uaSkip Пропуск пересылки текущей записи и оставление ее в кэше При обращении к обработчику значение UpdateAction равно daFail.

Обработчик события может использовать свойства TField::OldValue и TField::NewValue, чтобы изменить условия сравнения и задать новое значение TField::NewVa!ue. В этом случае надо повторить попытку пересылки, задав UpdateAction равным uaRetry.

Следует отметить, что если исключение сгенерировано методом ApplyUpdates и не перехвачено в блоке try,..catch, то пользователю будет предъявлено окно с сообщением об ошибке. Если в этом случае обработчик события OnUpdateError оставил неизменным и равным uaFail значение UpdateAction, то окно с сообщением об ошибке будет отображаться дважды. Чтобы предотвратить это, надо установить UpdateAction равным uaAbort.

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

OnUpdateError — событие TCustomClientDataSet См. разд. «OnReconcileError, OnUpdateError — события TCustomClientDataSet».

OnUpdateRecord Событие, наступающее при пересылке кэшированной записи в базу данных.

Класс TBDEDataSet Определение enum TOpdateKind {ukModify, uklnsert, ukDelete};

enum TUpdateAction (uaFail, uaAbort, uaSkip, uaRetry, uaApplied};

typedef void fastcall ( closure *TUpdateRecordEvent) property TUpdateRecordEvent OnUpdateRecord Описание Событие OnUpdateRecord наступает при пересылке в базу каптированной записи методом ApplyUpdates. Обработчик этого события можно использовать, например, когда пересылка данной записи сопряжена с каскадом операций по вставке, удалению или модификации других записей. В обработчике события OnUpdateRecord можно также предусмотреть какой-то дополнительный контроль данных.

Параметр DataSet — набор данных, с которым ведется работа. Значение параметра UpdateKind указывает, случилась ли ошибка вр время вставки (значение uklnsert), удаления (значение ukDelete) или модификации (значение ukModify) записи.

Передаваемый по ссылке параметр UpdateAction указывает, какие действия должны выполняться после окончания выполнения обработчика события. Параметр UpdateAction может иметь значения:

uaAbort Прерывание операции без отображения пользователю сообщения об ошибке Завершение пересылки и удаление текущей записи из кэша uaApplied Прерывание операции и отображение пользователю сообщения uaFail Пропуск пересылки текущей записи и оставление ее в кэше uaSkip При обращении к обработчику значение UpdateAction равно daFail. Если в обработчике не обнаружено препятствий к завершению пересылки, значение UpdateAction следует задать равным uaApplied.

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

Альтернативой написания обработчика события OnUpdateRecord является использование для обработки пересылки клиентского набора данных и объекта типа TU'pdateSQL. Это может обеспечить лучшее управление пересылкой.

OnValidate Событие наступает перед занесением данных в буфер записи.

Класс TField Определение typedef void fastcall ( closure *TFieldNotifyEvent) property TFieldNotifyEvent OnValidate Описание При занесении значения поля Value в буфер текущей записи последовательно выполняются следующие операции:

Вызывается обработчик события On Validate, позволяющий проверить допустимость записываемых данных 2. Если обработчик On Validate не отказался от записи данных, то данные записываются в буфер записи 3. Если при записи данных не сгенерировано исключение, вызывается обработчик события OnChange Обработчик события On Validate позволяет проверить данные перед их записью в буфер. Если в результате проверки данные оказываются недопустимыми, в обработчике следует сгенерировать исключение, например, вызвать функцию Abort. Проверка в обработчике On Validate может быть более полной, чем проводимая при вводе нового значения проверка отдельных символов с помощью EditMask. А если значение поля меняется программно, то проверка с помощью Edit Mask вообще отсутствует.

Дополнительные источники информации о C++Builder Ниже приведены сведения о некоторых книгах и иных информационных материалах автора по C++Builder. Оперативную информацию о готовящихся к выпуску и вышедших книгах вы можете найти на сайте автора http://delci.hl.ru и сайте издательства www.binom-press.ru.

1. Архангельский А. Я. Программирование в C++Builder 6 — М: ЗАО «Издательство БИНОМ», Книга содержит методические и, частично, справочные материалы по С+-ЬВиilder 6 и предшествующим версиям С+-l-Builder 5 и 4. Рассмотрены такие возможности C++Builder, как построение кросс-платформенных приложений, технологии доступа к данным ADO, InterBase Express, dbExpress, компоненты -- серверы СОМ, технологии распределенных приложений COM, CORBA, MIDAS, новая методика диспетчеризации действий. Дается методика построения прикладных программ, реализующих текстовые и графические редакторы, мультипликацию и мультимедиа, работу с базами данных, создание отчетов, приложений для Интернет, распределенных приложений, клиентов и серверов.

Справочная часть книги содержит некоторые материалы по языку, функциям, типам и классам C++Builder, но, конечно, в значительно меньшем объеме, чем книга [2]. Приводятся там и некоторые справочные данные по классам, компонентам, их свойствам, методам, событиям. Но это материал несоизмерим по объему сведений с данной книгой. Зато, там дается методика построения приложений самого разного назначения, рассказывается о техники связи с базами данных, о построении распределенных приложений и т.п. Конечно, та и данная книги частично перекликаются. Но, мне кажется, что они в значительной степени дополняют друг друга. А объединить их в одну и совсем избежать повторов невозможно: подобная книга содержала бы около двух тысяч страниц. Ее технически невозможно издать, и пользоваться ею тоже было бы невозможно — уж очень она была бы увесистой.

2. Архангельский А. Я. Справочное пособие по C++Builder 6. Книга 1. Язык C++ — М: ЗАО «Издательство БИНОМ», В книге даются исчерпывающие справочные сведения по языку C++ в С++Виilder 6: синтаксис языка, все операции и операторы, все типы данных. Подробно рассматривается работа с исключениями, с текстовыми и двоичными файлами, со строками разных типов, массивами, множествами, структурами, классами. Обсуждается обработка и генерация сообщений Windows. Рассматривается около функций С, C++, API Windows, из них более 300 с подробными описаниями и примерами.

Рассматривается стандартная библиотека шаблонов STL: все типы контейнеров, итераторов, все алгоритмы и функции-объекты.

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

3. Серия справочных файлов «Русские справки по C++Builder 6»

Серия справок — это программный продукт, призванный оказать вам поддержку в процессе проектирования. Справки встраиваются в среду C++Builder командой Help | Customize в дополнение к англоязычной справке и в процессе проектирования при нажатии клавиши F1 вам предлагаются на выбор темы английских или русских справок. Русские справки — это не перевод с английского, а, скорее, расширенный электронный вариант материалов данной книги и книг [1] и [2]. Так что они могут быть полезны не только тем, кто испытывает определенные сложности с английским, но и всем пользователям C++Builder, поскольку содержат иначе построенное и скомпонованное изложение справочных данных, иные примеры, в них устранен ряд ошибок англоязычных справок (надеюсь, не добавлено собственных ошибок).

В настоящее время серия включает в себя четыре справки: по C++ в С++Виilder, по компонентам и классам C++Builder, по графикам и диаграммам TeeChart, по стандартной библиотеке STL C++. Число входов предметного указателя справок около 3000, а число страниц текста в несколько раз превышает объем данной книги.

Намечен также выпуск дополнительных справок по Интернет, по методике проектирования, по развернутым и прокомментированным примерам и ряд других.

Достоинство справок по сравнению с книгами в том, что они обеспечивают оперативную помощь в среде разработки C++Builder, облегчают поиск нужной информации (в книгах это делать значительно сложнее), позволяют легко переносить примеры в свой проект. Да и стоят справки намного дешевле, чем книги. Но, конечно, справки не заменяют книг, хотя и содержат много материала, не поместившегося в книги.

Справки распространяются через Интернет по адресу: http://labl8.ipu.rssi.ru/ help2/. Там вы найдете условия распространения, включающие бесплатную поддержку — каждые 3-4 месяца выходят дополнения к справкам, которые распространяются бесплатно тем, кто приобрел начальную версию.

Распространение справок через Интернет не означает, что вы обязательно должны иметь доступ в Интернет с домашнего компьютера и иметь собственный адрес e-mail. Достаточно, если доступ в Интернет и e-mail есть у вас на работе или у кого-то из ваших друзей и знакомых. Вы можете воспользоваться этими возможностями, а затем на дискетах перенести файлы на свой компьютер.

4. Архангельский А. Я. Решение типовых задач в C++Builder 6. — М: ЗАО «Издательство БИНОМ», Эта книга будет готова не раньше следующего года (в этом году, надеюсь, выйдет аналогичная книга по Delphi 6). Она рассчитана на подготовленных читателей, ознакомившихся с C++Builder, например, по перечисленным выше книгам. В ней рассматриваются вопросы, совершенно не затронутые в предыдущих книгах, или только упомянутые в них: решение типовых вычислительных задач (решение систем линейных и нелинейных уравнений, операции с матрицами, векторами и т.п.), ориентированное на особенности C++Builder 6; графики и диаграммы в C++Builder 6; разработка распределенных приложений; множество задач, связанных с работой в Интернет и интранет и многое другое. Значительная часть книги посвящена рассмотрению множества частных задач, с которыми приходится сталкиваться при разработке приложений и по которым задается множество вопросов на различных форумах в Интернет. Книга содержит немало примеров прикладных программ, многие из которых могут рассматриваться как законченные программные продукты. Так что вы просто можете использовать их в своей текущей работе. В книге содержатся указания по доработке этих приложений для ваших целей, так что вы можете на их основе создавать свои собственные программные средства.



Pages:     | 1 |   ...   | 83 | 84 ||
 


Похожие работы:

«ПОСТАНОВЛЕНИЕ от 26 января 2005 г. № 23 ОБ УТВЕРЖДЕНИИ ПЕРЕЧНЕЙ ОБЪЕКТОВ РАСТИТЕЛЬНОГО И ЖИВОТНОГО МИРА И ТАКС ДЛЯ ИСЧИСЛЕНИЯ ВЗЫСКАНИЯ ЗА УЩЕРБ Руководствуясь Постановлением Правительства Российской Федерации от 25.05.1994 № 515 (в редакции от 26.09.2000), Приказом Министерства охраны окружающей среды и природных ресурсов Российской Федерации от 04.05.1994 № 126, Приказом Государственного комитета Российской Федерации по охране окружающей среды от 03.10.1997 № 419-а, постановлением...»

«СОВЕТ БЕЗОПАСНОСТИ БУДУЩЕГО ДОКЛАД ЭКСПЕРТА КИБЕРТЕРРОРИЗМ КАК УГРОЗА МЕЖДУНАРОДНОМУ МИРУ И БЕЗОПАСНОСТИ Артур МКРТЧЯН Направление Уголовное право, криминология, уголовно-исполнительное право Тюменский государственный университет Март 21 - 24, 2014 Please recycle СОДЕРЖАНИЕ ВВЕДЕНИЕ КИБЕРТЕРРОРИЗМ КАК ЧАСТЬ КИБЕРПРЕСТУПНОСТИ ВОПРОС КИБЕРВОЙНЫ НОРМЫ, ПОДХОДЫ, СОТРУДНИЧЕСТВО ЗАКЛЮЧЕНИЕ СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ 2 ВВЕДЕНИЕ Киберпространство - пятое поле битвы (после земли, моря, воздуха и...»

«ПРАВА ЧЕЛОВЕКА Десятилетие образования в области прав человека Организации Объединенных Наций (1995-2004 годы) №4 АЗБУКА ПРЕПОДАВАНИЯ ПРАВ ЧЕЛОВЕКА Практическая деятельность в начальной и средней школе Женева, май 2003 года ПРИМЕЧАНИЕ Употребляемые обозначения и изложение материала в настоящем издании не означают выражения со стороны Секретариата Организации Объединенных Наций какого бы то ни было мнения относительно правового статуса той или иной страны, территории, города, района или их...»

«Выпуск 22 МОСКВА — 2012 МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ПУТЕЙ СООБЩЕНИЯ (МИИТ) ЮРИДИЧЕСКИЙ ИНСТИТУТ 20-летию основания Юридического института посвящается. АКТУАЛЬНЫЕ ПРОБЛЕМЫ ПРАВОПОРЯДКА Сборник научных статей Выпуск 22 Под редакцией доктора юридических наук, профессора Н. А. Духно; доктора юридических наук В. М. Корякина МОСКВА — 2012 УДК 34 ББК 67 С—23 Актуальные проблемы правопорядка : сб. научных статей [Электронный ресурс] / под ред. Н. А. Духно, В. М. Корякина ; предисл. Н. А....»

«В период с момента опубликования Постановления Пленума Высшего Арбитражного Суда Российской Федерации от 12.10.2006г. №53 Об оценке арбитражными судами обоснованности получения налогоплательщиком налоговой выгоды (далее – Постановление Пленума ВАС №53) по 13.04.2007г. коллегией по рассмотрению споров, возникающих из административных правоотношений, рассмотрено 7 судебных дел анализируемой категории (материал собран на основании судебных актов, опубликованных в автоматизированной информационной...»

«282 Часть 2 ст. 282.1 Уголовного кодекса РФ определяет ответственность не за квалифицированный вид преступления, предусмотренного ч. 1 указанной статьи (как это имеет место в большинстве статей Особенной части Уголовного кодекса РФ), а за самостоятельное преступление –...»

«2 Список использованных сокращений Автореф. – Автореферат ВП РК – Ведомости Парламента Республики Казахстан ВВС – Ведомости Верховного Совета ВС – Верховный Совет ГК РК – Гражданский кодекс Республики Казахстан ГПК РК – Гражданский процессуальный кодекс Республики Казахстан дис.. канд. – диссертация на соискание ученой степени кандидата (докт.) юрид. наук – (доктора) юридических наук г. – год гг. – годы КоБС – Кодекс о браке (супружестве) и семье Конвенция –Конвенция о ликвидации всех форм...»

«РУКОВОДСТВА ПО ОСУЩЕСТВЛЕНИЮ ЛЕСОЗАЩИТНЫХ МЕРОПРИЯТИЙ (проект) г. Пушкино, 2011 РУКОВОДСТВО ПО ПЛАНИРОВАНИЮ, ОРГАНИЗАЦИИ И ВЕДЕНИЮ ЛЕСОПАТОЛОГИЧЕСКИХ ОБСЛЕДОВАНИЙ 1 Общие положения 1. Настоящее Руководство устанавливает единые порядок и условия организации и ведения лесопатологических обследований (далее ЛПО) на землях лесного фонда. 2. Объектами ЛПО в первую очередь являются леса, поврежденные в той или иной степени неблагоприятными факторами. 3. В процессе ЛПО производится: оценка санитарного...»

«Составил Николай Почтаренко ДОНЕЦК 2009 УДК 291.5:348.41 ББК Э717.11 Золотые россыпи христианской нравственности и духовности. Часть пятая. /Сост. Н.С.Почтаренко. – Донецк: ДонНТУ, 2009. – 675 с. Приведены назидательные мысли, наставления, заповеди, молитвы, добрые советы и поучения великих старцев, святых отцов, именитых ученых, писателей, поэтов по совершенствованию личности и возрождению христианской нравственности и духовности. Представлен в избранном виде накопленный многими поколениями...»

«ПОСТАНОВЛЕНИЕ 04 апреля 2012 с.Татаново № 39 Об утверждении административного регламента предоставления муниципальной услуги Выдача документов (копии финансово-лицевого счёта, выписки из домовой книги, карточки учёта собственника жилого помещения, справок и иных документов). В целях реализации Федерального закона № 210-ФЗ Об организации предоставления государственных и муниципальных услуг, в соответствии с Федеральным законом от 06.10.2003 года № 131-ФЗ Об общих принципах организации местного...»






 
© 2013 www.knigi.konflib.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.