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 »
Вопрос:
Как зарегистрировать расширение файла за своим приложением и контекстное меню,
связанное с этим типом?
Ответ:
Пример регистрирует расширение файла(.myext) - файлы этого типа будут открываться
приложением MyApp.Exe. Также регнстрируется одно действие (action) по умолчанию
для файлов этого типа и два дополнительных пункта контекстного меню, связанного с
этим типом файлов. Возможно, потребуется перезайти в систему чтобы изменения
вступили в силу. Read the rest of this entry »
Вопрос:
Некоторые компоненты не меняют курсор мыши до тех пор пока пользователь не
сдвинет мышь. Как эмулировать движение мыши?
Ответ:
В примере мышка слегка "подталкивается" без участия пользователя.
procedure TForm1.Button1Click(Sender: TObject); Read the rest of this entry »
Вопрос:
Функция keybd_event() принимает значения до 244 - как мне отправить нажатие
клавиши с кодом #255 в элемент управления Windows?
Ответ:
Это может понадобится для иностранных языков или для специальных символов. (например,
в русских шрифтах символ с кодом #255 - я прописное). Приведенный в примере метод,
не стоит использовать в случае если символ может быть передан обычным способом
(функцией keybd_event()). Read the rest of this entry »
Вопрос:
Можно ли уменьшить потребляемые компонентами TNotebook и TTabbedNotebook ресурсы?
Ответ:
Да. Можно уничтожать обьекты, расположенные не на текущей странице TNotebook или
TTabbedNotebook. В примере вызывается защищенный (Protected) метод путем создания
так называемый "class cracer'ов". Read the rest of this entry »
Вопрос:
Как запретить изменение размера моего компонента в design-time?
Ответ:
Поместите в конструктор компонента код, устанавливающий размеры по умолчанию.
Переопределите метод SetBounds и проверяйте в нем "componentstate". Если компонет
находится режиме "design-time" (csDesigning in ComponentState) просто передавайте
значения ширины и высоты (width и heights) компонента по умолчанию (в нашем
примере 50) методу класса-предка Read the rest of this entry »
Вопрос:
Можно ли как-то уменьшить мерцание при перерисовке компонента?
Ответ:
Если добавить флаг csOpaque (непрозрачный) к свойству ControlStyle компонента
- то фон компонента перерисовываться не будет.
Read the rest of this entry »
Вопрос:
Как сделать клавишу-акселератор (keyboard shortcut) компонету у которого нет заголовка?
Ответ:
Возможный вариант – присвоить
ссылку на этот компонент свойству FocusControl TLabel’а. В примере используется
невидимый Label для создания “быстрой” клавиши (Alt+M) компонента Memo. Чтобы
использовать пример, разместите на форме компонет TMemo, Label и несколько других
компонентов, которые могут принимать фокус ввода. Запустите программу, перевидите
фокус ввода куда-нибудь вне Memo и нажмите Alt+M – фокус ввода вернется в Memo. Read the rest of this entry »
Вопрос:
Как программно заставить выпасть меню?
Ответ:
В примере показано как
показать меню и выбрать в нем какой-то пункт, эмулируя нажатие “быстрой кдавиши”
пункта меню. Если у Вашего пункта меню нет “быстрой клавиши” Вы можете посылать
комбинации VK_MENU, VK_LEFT, VK_DOWN, и VK_RETURN, чтобы программно “путешествовать”
по меню. Read the rest of this entry »
Вопрос:
Как обновить список дисков компонента TDriveComboBox, учитывая, что могуд быть
подключены/отключены сетевые диски и произведена "горячая замена" plug&play дисков?
Ответ:
Следующий пример вызывает защищенный (protected) метод класса TDriveComboBox
BuildList() для регеирации списка дисков. (использовая так наз. "class cracer") Read the rest of this entry »