TObject
TObject является общим предком всех классов в Delphi, корнем
иерархии Visual Component Library. Tobject представляет собой абстрактный
класс, реализующий только наиболее общие механизмы, универсально разделяемые
всеми объектами VCL.
TObject автоматически используется как порождающий тип при создании
нового класса Delphi. Следовательно, следующие фрагменты кода имеют одно
и то же значение:
type
TNewObject = class
end;
type
TNewObject = class (TObject)
end;
Object объявляет конструктор и деструктор (специальные методы, которые
создают и разрушают объекты)и реализует информацию о типе и методах обработки
сообщений. Поскольку TObject является абстрактным классом, большинство
его методов перекрывается в его потомках в рамках VCL. Обычно у вас будет
доступ к порожденной реализации Create, конструктору и Free,
безопасно вызывающему деструктор Destroy.
Таблица 1 отображает методы общецелевого назначения, реализуемые TObject.
В общем случае из этих методов разработчикам приложений интересны только
три: Create, Destroy и Free.
Read the rest of this entry »
Вопрос:
Как определить нажаты ли клавиши Shift, Alt, or Ctrl в какой-либо момент времени?
Ответ:
В приведенном примере
показано как определить нажата ли клавиша Shift при выборе строчки меню. Пример
также содержит функции проверки состояния клавиш Alt, Ctrl. Read the rest of this entry »
Вопрос:
Как во время выполнения определить поддерживает ли обьект заданное свойство?
Ответ:
function HasProperty(Obj : TObject; Prop : string) : PPropInfo;
begin
Result := GetPropInfo(Obj.ClassInfo, Prop);
end; Read the rest of this entry »
Вопрос:
В некоторых видео режимах прозрачная часть glyph’а стандартного TBitBtn становится видной. Как этого избежать?
Ответ:
В примере используется
техника закраски прозрачной части glyph’а цветом кнопки на которой он находится
- таким образом glyph кажется прозрачным. Read the rest of this entry »
Вопрос:
Можно ли обратиться к колонке или строке grid’а по заголовку?
Ответ:
В следующем примере приведены
две функции: GetGridColumnByName() и GetGridRowByName(), которые возвращают
колонку или строку, имеющую заданный заголовок (caption). Read the rest of this entry »
Как скрыть свойства объекта?
В иерархии VCL в большинстве случаев существует уровень объектов-”предшественников”
(TCustomXXXX), в которых многие свойства скрыты. Для унаследованных от таких
“предшественников” объектов можно “открывать” на выбор те или иные свойства.
А как можно сокрыть свойства, которые объявлены в published-области
от Object Inspector’а, но при этом оставить возможность доступа во время
работы программы? Решение состоит в объявлении свойства “по новой” в public-области.
В примере скрытым будет у объекта TMyControl свойство Height.
TMyControl = class(TWinControl) Read the rest of this entry »
Как узнать, находится ли дискета в дисководе?
type
TDriveState(DS_NO_DISK, DS_UNFORMATTED_DISK,
DS_EMPTY_DISK, DS_DISK_WITH_FILES);
function DriveState(DrvLetter: Char): TDriveState;
var
Mask: String[6];
SearchRec: TSearchRec;
oldMode: Cardinal;
ReturnCode: Integer; Read the rest of this entry »
Как выяснить дату последнего изменения файла?
Для выяснения даты последнего изменения файла можно воспользоваться следующей
функцией:
function GetFileDate(FileName: string): string;
Read the rest of this entry »
Урок 28: Редакторы свойств
- Обзор
Открытость Delphi
проявляется наиболее ярко в том, что наряду
с расширяемостью Библиотеки Визуальных Компонент можно изменять саму среду
программирования. Delphi предоставляет
соответствующее API с тем, чтобы программисты
могли расширять функциональность среды разработки. С помощью этого API
можно создать свои собственные Эксперты (Experts),
свою Систему Контроля Версий (Version
Control system), Редакторы Компонент (Component
Editors) и Редакторы Свойств (Property
Editors).
При написании новых объектов
часто требуется создавать для них свои Редакторы Свойств и Редакторы Компонент.
В данном уроке и рассказывается, как это сделать и приводятся примеры.
Краткое описание инструментов
среды Delphi и модулей, в которых реализованы
соответствующие API:
API Экспертов – Позволяет
создать свои собственные эксперты; модули EXPINTF.PAS
и VIRTINTF.PAS
API Контроля Версий
- Дает возможность создать свою систему Контроля Версий или подключить
систему третьей фирмы; модули VCSINTF.PAS
и VIRTINTF.PAS
API Редакторов Компонент
- Создание диалогов, связанных с объектом во время дизайна. Пример – Menu
Designer для TMenu или
Fields Editor для TTable; модуль DSGNINTF.PAS
API Редакторов Свойств
- Создание редакторов для использования их при редактировании свойств в
Инспекторе Объектов; модуль
DSGNINTF.PAS
Модули можно найти в библиотеке
визуальных компонент (в директории X:\DELPHI\SOURCE\VCL).
Необходимо отметить, что
большинству людей никогда не придется использовать вышеперечисленные API.
Однако, некоторым программистам они очень могут пригодиться, особенно разработчикам
новых объектов. Read the rest of this entry »
Урок 21: Объект TQuery
- Краткий Обзор
В этой главе Вы узнаете некоторые
основные понятия о запросах (queries) и транзакциях. Это достаточно широкие
понятия, поэтому обсуждение разбито на следующие основные части:
- Объект TQuery.
- Использование SQL с локальным
и удаленным серверами (Select, Update, Delete и Insert).
- Использование SQL для создания
объединения (joins), связанных курсоров (linked cursors) и программ, которые
ведут поиск заданных записей.
Сокращение SQL означает Structured
Query Language – Язык Структурированных Запросов, и обычно произноситься
либо как “Sequel” либо ” Ess Qu El”. Однако, как бы Вы его ни произносили,
SQL – это мощный язык БД, который легко доступен из Delphi, но который
отличается от родного языка Delphi. Delphi может использовать утверждения
SQL для просмотра таблиц, выполнять объединение таблиц, создавать отношения
один-ко-многим, или исполнить почти любое действие, которое могут сделать
ваши основные инструменты БД. Delphi поставляется с Local
SQL, так что Вы можете выполнять запросы SQL при работе с локальными таблицами,
без доступа к SQL серверу.
Delphi обеспечивает поддержку
“pass through SQL”, это означает то, что Вы можете составлять предложения
SQL и посылать их непосредственно серверам Oracle, Sybase, Inrterbase и
другим. “Pass through SQL” – это мощный механизм по двум причинам:
- Большинство серверов могут обрабатывать
SQL запросы очень быстро, а это означает, что используя SQL для удаленных
данных, Вы получите ответ очень быстро.
- Есть возможность составлять
SQL запросы, которые заставят сервер исполнить специализированные задачи,
недоступные через родной язык Delphi.
Перед чтением этой статьи Вы
должны иметь, по крайней мере, элементарное понятие о серверах и различиях
между локальными и удаленными (remote) данными. Read the rest of this entry »