Russian Belarusian English German Japanese Ukrainian
  • Главная

Простая посылка сообщений

CuBook05

Построим простую программу, демонстрирующую посылку сообщений. Создаем новый проект и в нем две формы Form1 и Form2, сохраните проект, назвав модули форм U1Mess1 и U2Mess1 соответственно, а файл проекта PMess1. Форма Form1 будет главной и она будет управлять видимостью формы Form2. Поэтому в ее модуль необходимо включить директиву препроцессора:
#include "U2Messl.h"
а свойство Visible формы Form2 должно быть равно false.
 
Перенесите на форму Form1 две кнопки, дав им надписи «Show Form2» и «Close Form2». В обработчике щелчка первой кнопки напишите оператор:
Form2->Show();
а в обработчике щелчка второй кнопки оператор:
SendMessage(Form2->Handle,WM_CLOSE, 0,0);
Этот оператор посылает сообщение WM_CLOSE (второй параметр функции SendMessage) форме Form2. Первый параметр функции SendMessage содержит дескриптор окна этой формы, полученный с помощью ее свойства Handle. Сообщение WM_CLOSE не имеет параметров поэтому параметры wParam и lParam заданы равными нулю.
 
Приведенный выше оператор можно заменить на следующий:
Form2->Perform(WM_CLQSE,0,0);
Результат будет тем же самым.

Подробнее...

Тип строк AnsiString

CuBook05

В C++ Builder тип строк AnsiString реализован как класс, объявленный в файле vcl/dstring.h и аналогичный типу длинных строк в Delphi. Это строки с нулевым символом в конце. При объявлении переменные типа AnsiString инициализируются пустыми строками.
 
Для AnsiString определены операции отношения ==, !=, >, <, >=, <=. Сравнение производится с учетом регистра. Сравниваются коды символов, начиная с первого, и если очередные символы не одинаковы, строка, содержащая символ с меньшим кодом, считается меньше. Если все символы совпали, но одна строка длиннее и в ней имеются еще символы, то она считается больше, чем более короткая.
 
Для AnsiString определены операции присваивания =, += и операция склеивания строк (конкатенации) +. Определена также операция индексации []. Индексы начинаются с 1. Например, если S1 = "Привет", то S1[1] вернет 'П', S1[2] вернет 'р' и т.д.
 
Тип AnsiString используется для ряда свойств компонентов C++ Builder. Например, для таких, как свойства Text окон редактирования, свойства Caption меток и разделов меню и т.д. Этот же тип используется для отображения отдельных строк в списках строк типа TStrings. Таким образом, постоянно имея дело с этими свойствами, вы постоянно работаете с AnsiString.

Подробнее...

Массивы символов

CuBook05

В С++ отсутствует специальный тип строк. Строки рассматриваются как массивы символов, оканчивающиеся нулевым символом ('\0'). Строка доступна через указатель на первый символ в строке. Значением строки является адрес ее первого символа. Таким образом, в С++ строка является указателем - указателем на первый символ строки. В этом смысле строки подобны массивам, потому что массив тоже является указателем на свой первый элемент.
 
Строка может быть объявлена либо как массив символов, либо как переменная типа char*. Каждое из двух приведенных ниже эквивалентных объявлений:
char S[] = "строка";
char *Sp = "строка";
присваивает строковой переменной начальное значение «строка». Первое объявление создает массив из 7 элементов S содержащий символы 'с', 'т', 'р', 'о', 'к', 'а' и '\0'. Второе объявление создает переменную указатель Sp, который указывает на строку с текстом «строка», лежащую где-то в памяти. Но в любом случае число хранимых символов на 1 больше числа значащих символов за счет оконечного нулевого символа.
 
Доступ к отдельным символам строки осуществляется по индексам, начинающимся с нуля. Например, S[0] и Sp[0] первые символы объявленных выше строк, S[1] и Sp[1] вторые и т.д.

Подробнее...

Арифметические типы данных

CuBook05

Арифметические типы данных - это целые и действительные типы. К целым типам относятся char, short, int и long вместе с их вариантами signed со знаком и unsigned без знака. Из этих ключевых слов может формироваться множество целых типов данных. Многие из них являются синонимами друг друга, как следует из следующей таблицы.
Синонимы Примечание
char, signed char Синонимы, если умолчанием для char задано signed
unsigned char  
char, unsigned char Синонимы, если умолчанием для char задано unsigned
signed char  
int, signed int  
unsigned, unsigned int  
short, short int, signed short int  
unsigned short, unsigned short int  
long, long int, signed long int  
unsigned long, unsigned long int  
Спецификаторы signed и unsigned могут применяться только к char, short, int, long. Если тип обозначен просто как signed или unsigned, то подразумеваются соответственно signed int и unsigned int.

Подробнее...

Технология dbExpress

CuBook05

В основе технологии dbExpress лежит использование множества легковесных драйверов, компонентов, объединяющих соединения, транзакции, запросы и наборы данных, а также интерфейсов, реализующих универсальный доступ к соответствующим функциям. По сравнению с использованием механизма BDE технология dbExpress обеспечивает построение более легковесных (по объему кода) приложений для работы с базами данных. При ее применении для доступа к данным используются SQL-запросы. Технология dbExpress обеспечивает легкую переносимость приложений, допускает работу приложений баз данных под управлением Windows и Linux. Для использования технологии dbExpress достаточно включить в распространяемое приложение динамически подключаемую библиотеку с драйвером, взаимодействующим с клиентским программным обеспечением для нужного сервера базы данных.

Подробнее...

Исключения и их стандартная обработка

CuBook05

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

Подробнее...

Динамическое распределение памяти

CuBook05

Динамическое распределение памяти широко используется для экономии вычислительных ресурсов. Те переменные или объекты, которые становятся ненужными, уничтожаются, а освобожденное место используется для новых переменных или объектов. Это особенно эффективно в задачах, в которых число необходимых объектов зависит от обрабатываемых данных или от действий пользователя, т.е. заранее не известно. В этих ситуациях остается только два выхода: заранее с запасом отвести место под множество объектов или использовать динамическое распре деление памяти, создавая новые объекты по мере надобности. Первый путь, конечно, неудовлетворительный, поскольку связан с излишними затратами памяти и в то же время накладывает на размерность задачи необоснованные ограничения.

Подробнее...

Шрифты текстов

CuBook05

Шрифт надписей и текстов компонентов С++Builder задается свойством Font, имеющим множество подсвойств. Кроме того, в компонентах имеется свойство ParentFont. Если это свойство установлено в true, то шрифт данного компонента берется из свойство Font его родительского компонента панели или формы, на которой расположен компонент. Использование свойств ParentFont и ParentColor помогает обеспечить единообразие отображения компонентов в окне приложения.
По умолчанию для всех компонентов C++Builder задается имя шрифта MS Sans Serif и размер 8. Константа множества символов Charset задается равной DEFAULT_CHARSET. Последнее означает, что шрифт выбирается только по его имени и размеру. Если описанный шрифт недоступен в системе, то Windows заменит его другим шрифтом.

Подробнее...