Главная » Статьи для тега "TMainForm"

Пример применения поиска, фильтра и диапазона

Добавлено Дата: 17 March, 2012 категория: Delphi

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

Читать »

Работа с полями типа BLOB

Добавлено Дата: 16 March, 2012 категория: Delphi

Поля  BLOB (Binary  Large Object) разработаны для размещения в них данных  неоп ределенного размера. Поля  BLOB в одной  записи набора данных  могут содержать 3 байта  данных, в то  время  как  подобное же  поле  в другой  записи может  содержать

3 Кбайта данных. Эти поля наиболее удобны для хранения большого количества тек

Читать »

Манипулирование наборами данных

Добавлено Дата: 15 March, 2012 категория: Delphi

Приложение базы  данных  бесполезно, если  его  данными невозможно управлять. К счастью, наборы данных  содержат методы, которые позволяют сделать  это.  Набо ры данных дают возможность добавлять, редактировать и удалять записи из исходной таблицы. Для этого  применяются следующие  методы:  Insert() (добавить), Edit() (редактировать), и Delete() (удалить).Листинг 7.3 содержит пример приложения, использующего эти методы.

Читать »

Применение DLL с совместно используемой памятью

Добавлено Дата: 14 March, 2012 категория: Delphi

Для иллюстрации применения DLL с совместно используемой памятью было созда но два работающих с ней приложения. Первое приложение (проект App1.dpr) позво ляет   модифицировать  глобальные  данные    библиотеки  DLL.   Второе  приложение (проект App2.dpr) обращается к этим  данным  и периодически обновляет два компо нента  TLabel, используя для этого  компонент TTimer. При  запуске обоих  приложений можно  увидеть  последствия совместного доступа  к данным  библиотеки DLL, т.е. окно приложения App2 будет отображать изменения, внесенные в окне приложения App1.

Читать »

Функции обратного вызова

Добавлено Дата: 13 March, 2012 категория: Delphi

Функция обратного вызова (callback function) — это функция приложения, вызываемая библиотеками  DLL  Win32  или  другими   библиотеками  DLL.  Фактически  в  системе Windows присутствует несколько функций API, которые используют функции обратного вызова. При  вызове таких  функций им передается адрес той функции приложения, ко торую Windows может  вызвать. Если не совсем  понятно, какое  отношение это имеет  к библиотекам DLL, то напомним, что  реально функции  API Win32  экспортируются  из системных библиотек DLL. По сути, при  передаче адреса  функции обратного вызова  в функцию API Win32 происходит передача этой функции в библиотеку DLL.

Читать »

Функция входа/выхода динамически компонуемых библиотек

Добавлено Дата: 12 March, 2012 категория: Delphi

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

Читать »

Многопоточная графика

Добавлено Дата: 10 March, 2012 категория: Delphi

Ранее  уже отмечалось, что компоненты библиотеки VCL не предназначены для одновременной работы с несколькими потоками, однако  это  не совсем  так. Подпро граммы  библиотеки VCL способны поддерживать многопоточный режим  для отдель ных  графических объектов. Благодаря новым  методам  Lock() и  Unlock() класса TCanvas был создан  целый  модуль Graphics, который обеспечивает поддержку  мно гопоточности. Он включает в себя такие  классы,  как TCanvas, TPen, TBrush, TFont, TBitmap, TMetafile, TPicture и TIcon.

Читать »

Пользовательский интерфейс

Добавлено Дата: 9 March, 2012 категория: Delphi

Главный модуль этого  приложения называется Main.pas, его  исходный код пред ставлен в листинге 5.8. Основная задача  данного модуля —  обеспечить функциониро вание  главной формы и ее пользовательского интерфейса. В частности, в модуле вы полняются действия, необходимые для заполнения окна списка,  вызова  соответст вующей  программы просмотра указанного пользователем файла, создания потока поиска, вывода  на печать содержимого списка,  а также  чтения и записи параметров пользовательского интерфейса в файл инициализации (.INI).

Читать »

Синхронизация потоков

Добавлено Дата: 8 March, 2012 категория: Delphi

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

Читать »

Мастер DDG Search

Добавлено Дата: 11 February, 2012 категория: Delphi

Помните небольшое изящное приложение для поиска  (Search),  разработка кото рого  была  описана в главе 5, “Создание многопоточных приложений”? В настоящем разделе изложено, как преобразовать эту утилиту в еще более полезный мастер  Delphi с минимальными изменениями кода. Этот мастер  называется DDG Search.

Читать »

Мастер Wizard

Добавлено Дата: 11 February, 2012 категория: Delphi

Рис. 17.3. Записи о мастерах Delphi в системном  реестре

Интерфейс мастера

Мастер  Wizard  позволяет без  использования редактора реестра добавлять, моди фицировать и удалять из системного реестра записи о мастерах, размещенных в биб лиотеках DLL. Сначала  рассмотрим модуль InitWiz.pas, содержащий класс мастера (листинг 17.2).Листинг 17.2. Модуль InitWiz.pas, содержащий класс мастера DLL

Читать »

Сокрытие приложения

Добавлено Дата: 8 February, 2012 категория: Delphi

Еще одним  аспектом приложений, связанных с областью индикаторов панели  за дач, является то, что они не отображаются на панели  задач в виде кнопок. Чтобы обеспечить приложение подобной возможностью, в компонент TTrayNotifyIcon введено свойство HideTask, позволяющее пользователю самому решить, отображать или  нет  приложение на панели задач  в виде  кнопки. Код  метода  write для такого свойства приведен ниже.  Главную роль  здесь  играет строка, содержащая вызов  про цедуры API Win32 ShowWindow(), которой передается свойство Handle объекта Ap- plication, а также константа, определяющая, будет ли приложение отображаться на панели  задач в виде кнопки.

Читать »

Пример более сложного приложения

Добавлено Дата: 7 February, 2012 категория: Delphi

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

Начнем  с  создания  нового  проекта,  по   шаблону   приложения  MDI  (Multiple Document Interface —  многодокументный интерфейс).  После  применения стандарт ного  шаблона  MDI главная  форма этого  приложения была немного модифицирована (рис. 15.21).

Читать »

Новые типы интерфейсов в библиотеке типов

Добавлено Дата: 6 February, 2012 категория: Delphi

Как и подобает каждому приличному разработчику Delphi, для определения новых экземпляров объектов автоматизации до сих пор  использовался редактор библиотек типов.  Но можно  легко попасть в ситуацию, когда один  из методов для нового интер фейса  включает в себя параметр типа интерфейса COM, который не поддерживается по умолчанию в редакторе библиотеки типов.  А поскольку  редактор библиотеки ти пов не позволяет работать с типами, о которых он не знает, то как же тогда завершить такое определение метода?

Читать »

Версии пакетов

Добавлено Дата: 2 February, 2012 категория: Delphi

Версию (versioning) пакета  часто  понимают неправильно. похожи на версии модулей. Другими  словами, любой  пакет  приложения должен  быть скомпи лирован с использованием той  же версии Delphi, что  и само приложение. Таким  об разом, пакет,  написанный в Delphi 6, нельзя  использовать с приложением, созданным в Delphi  5. Разработчики компании Borland обычно называют версию пакета  базой кода (code base). Поэтому  пакет,  созданный в Delphi 6, можно  назвать написанным на базе кода 6.0. Эту идею можно отразить в соглашении об именах, используемых для файлов пакетов.

Читать »