Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001

Здесь есть возможность читать онлайн «Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Советы по Delphi. Версия 1.4.3 от 1.1.2001: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Советы по Delphi. Версия 1.4.3 от 1.1.2001»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

…начиная с 1001. Смотрите другие файлы…

Советы по Delphi. Версия 1.4.3 от 1.1.2001 — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Советы по Delphi. Версия 1.4.3 от 1.1.2001», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Приведенный ниже пример кода иллюстрирует описываемый процесс. Данный модуль демонстрирует форму, которая содержит по два экземпляра следующих компонентов: TSession, TDatabase, TQuery, TDataSource и TDBGrid. Данные компоненты имеют следующие значения свойств:

Session1

Active True;

SessionName "Ses1"

DataBase1

AliasName "IBLOCAL"

DatabaseName "DB1"

SessionName "Ses1"

Query1

DataBaseName "DB1"

SessionName "Ses1"

SQL.Strings "Select * from employee"

DataSource1

DataSet ""

DBGrid1

DataSource DataSource1

Session2

Active True;

SessionName "Ses2"

DataBase2

AliasName "IBLOCAL"

DatabaseName "DB2"

SessionName "Ses2"

Query2

DataBaseName "DB2"

SessionName "Ses2"

SQL.Strings "Select * from customer"

DataSource2

DataSet ""

DBGrid1

DataSource DataSource2

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

unitUnit1;

interface

usesWindows, Messages, SysUtils, Classes, Graphics, Controls,Forms, Dialogs,StdCtrls, Grids, DBGrids, DB, DBTables;

type

TForm1 = class(TForm)

Session1: TSession;

Session2: TSession;

Database1: TDatabase;

Database2: TDatabase;

Query1: TQuery;

Query2: TQuery;

DataSource1: TDataSource;

DataSource2: TDataSource;

DBGrid1: TDBGrid;

DBGrid2: TDBGrid;

GoBtn1: TButton;

procedureGoBtn1Click(Sender: TObject);

end;

TQueryThread = class(TThread)

private

FSession: TSession;

FDatabase: TDataBase;

FQuery: TQuery;

FDatasource: TDatasource;

FQueryException: Exception;

procedureConnectDataSource;

procedureShowQryError;

protected

procedureExecute; override;

public

constructorCreate(Session: TSession; DataBase: TDatabase; Query: TQuery; DataSource: TDataSource); virtual;

end;

varForm1: TForm1;

implementation

constructorTQueryThread.Create(Session: TSession; DataBase: TDatabase; Query: TQuery; Datasource: TDataSource);

begin

inheritedCreate(True); // Создаем поток c состоянием suspendend

FSession := Session; // подключаем все privat-поля

FDatabase := DataBase;

FQuery := Query;

FDataSource := Datasource;

FreeOnTerminate := True; // Устанавливаем флаг освобождения потока после его завершения

Resume; // Продолжение выполнения потока

end;

procedureTQueryThread.Execute;

begin

try

{ Выполняем запрос и подключаем источник данных к компоненту TQuery, вызывая ConnectDataSource из основного потока(для этой цели используем Synchronize)}

FQuery.Open;

Synchronize(ConnectDataSource);

except

{ Ловим исключение (если оно происходит) и его дескриптор в контексте основного потока (для этой цели используемSynchronize). }

FQueryException := ExceptObject asException;

Synchronize(ShowQryError);

end;

end;

procedureTQueryThread.ConnectDataSource;

begin

FDataSource.DataSet := FQuery; // Подключаем DataSource к TQuery

end;

procedureTQueryThread.ShowQryError;

begin

Application.ShowException(FQueryException); // Обрабатываем исключение

end;

procedureRunBackgroundQuery(Session: TSession; DataBase: TDataBase; Query: TQuery; DataSource: TDataSource);

begin

{ Создаем экземпляр TThread с различными параметрами. }

TQueryThread.Create(Session, Database, Query, DataSource);

end;

{$R *.DFM}

procedureTForm1.GoBtn1Click(Sender: TObject);

begin

{ Запускаем два отдельных запроса, каждый в своем потоке }

RunBackgroundQuery(Session1, DataBase1, Query1, Datasource1);

RunBackgroundQuery(Session2, DataBase2, Query2, Datasource2);

end;

end.

Метод TForm1.GoBtn1Click является обработчиком события нажатия кнопки. Данный обработчик события дважды вызывает процедуру RunBackgroundQuery, это случается при каждой передаче новых параметров компонентам для работы с базой данных. RunBackgroundQuery создает отдельный экземпляр класса TQueryThread, передает различные компоненты для работы с базой данных в его конструктор, который, в свою очередь, назначает их закрытым полям TQueryThread.

TQueryThread содержит две определенные пользователем процедуры: ConnectDataSource и ShowQryError. ConnectDataSource связывает FDataSource.DataSet с FQuery. Тем не менее, это делается в первичном потоке с помощью метода TThread.Synchronize. ShowQryError обрабатывает исключение в контексте первиного потока, также используя метод Synchronize. Конструктор Create и метод Execute снабжены подробными комментариями.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Советы по Delphi. Версия 1.4.3 от 1.1.2001»

Представляем Вашему вниманию похожие книги на «Советы по Delphi. Версия 1.4.3 от 1.1.2001» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Советы по Delphi. Версия 1.4.3 от 1.1.2001»

Обсуждение, отзывы о книге «Советы по Delphi. Версия 1.4.3 от 1.1.2001» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x