Чтение онлайн

ЖАНРЫ

Советы по Delphi. Версия 1.0.6

Озеров Валентин

Шрифт:

9. Нажимаем кнопку OK и закрываем окно редактора.

10. В компоненте TQuery свойству DatabaseName присваиваем 'MyNewAlias'.

11. В компоненте TDataSource свойству DataSet присваиваем 'Query1'.

12. В компоненте DBGrid свойству DataSource присваиваем 'DataSource1'.

13. Создаем в компоненте TButton обработчик события OnClick.

procedure TForm1.Button1Click(Sender: TObject);

begin

 Query1.SQL.Clear;

 Query1.SQL.ADD('SELECT DISTINCT * FROM CUSTOMER C, SALES S WHERE (S.CUST_NO = C.CUST_NO) ORDER BY C.CUST_NO, C.CUSTOMER');

 Query1.Active:= True;

end;

14.

Запускаем приложение.

Пример #3: Ввод псевдонима пользователем

Этот пример выводит диалоговое окно и создает псевдоним на основе информации, введенной пользователем.

Директория, имя сервера, путь, имя базы данных и другая необходимая информация для получения псевдонима может быть получена приложением из диалогово окна или конфигурационного .INI файла.

1. Выполняем шаги 1-11 из примера #1.

2. Пишем следующий обработчик события OnClick компонента TButton:

procedure TForm1.Button1Click(Sender: TObject);

var

 NewString: string;

 ClickedOK: Boolean;

begin

 NewString:= 'C:\';

 ClickedOK:= InputQuery('Database Path', 'Path: –> C:\DELPHI\DEMOS\DATA', NewString);

 if ClickedOK then begin

Database1.DatabaseName:= 'MyNewAlias';

Database1.DriverName:= 'STANDARD';

Database1.Params.Clear;

Database1.Params.Add('Path=' + NewString);

Table1.DatabaseName:= 'MyNewAlias';

Table1.TableName:= 'CUSTOMER';

Table1.Active:= True;

DataSource1.DataSet:= Table1;

DBGrid1.DataSource:= DataSource1;

 end;

end;

3. Запускаем приложение.

Информация о псевдонимах BDE

Как через конфигурацию IDAPI получить физический каталог расположения базы данных, зная ее псевдоним?

Обратите внимание на метод GetAliasParams класса TSession.

Возвращенная строка будет содержать искомый путь.

Я пользуюсь следующей функцией:

uses DbiProcs, DBiTypes;

function GetDataBaseDir(const Alias : string): String;

(* Возвращает каталог расположения базы данных по заданному псевдониму

(без обратного слеша) *)

var

 sp: PChar;

 Res: pDBDesc;

begin

 try

New(Res);

sp:= StrAlloc(length(Alias)+1);

StrPCopy(sp,Alias);

if DbiGetDatabaseDesc(sp,Res) = 0 then Result:= StrPas(Res^.szPhyName)

else Result:= '';

 finally

StrDispose(sp);

Dispose(Res);

 end;

end;

Мультимедиа

Аудио-компакт

Получение

идентификатора диска

Как получить идентификатор находящегося в CD-ROM'е аудио-компакта?

const

 MCI_INFO_PRODUCT = $00000100;

 MCI_INFO_FILE = $00000200;

 MCI_INFO_MEDIA_UPC = $00000400;

 MCI_INFO_MEDIA_IDENTITY = $00000800;

 MCI_INFO_NAME = $00001000;

 MCI_INFO_COPYRIGHT = $00002000;

{ блок параметров для командного сообщения MCI_INFO }

type

 PMCI_Info_ParmsA = ^TMCI_Info_ParmsA;

 PMCI_Info_ParmsW = ^TMCI_Info_ParmsW;

 PMCI_Info_Parms = PMCI_Info_ParmsA;

 TMCI_Info_ParmsA = record

dwCallback: DWORD;

lpstrReturn: PAnsiChar;

dwRetSize: DWORD;

 end;

 TMCI_Info_ParmsW = record

dwCallback: DWORD;

lpstrReturn: PWideChar;

dwRetSize: DWORD;

 end;

 TMCI_Info_Parms = TMCI_Info_ParmsA;

Идентификатор возвращается функцией MCI_INFO_MEDIA_IDENTITY в виде строки с десятичным числом. Для получения дополнительной информации обратитесь к электронной справке (Win32 и компонент TMediaPlayer).

Аппаратное обеспечение

CD-ROM

Открытие и закрытие привода CD-ROM

Есть ли Win32 API функция, позволяющая не только открыть НО И ЗАКРЫТЬ CD-ROM? Хотелось бы не тянуться ручками к РС, а нажать мышкой на кнопку. Компонентом TMediaPlayer пользоваться не хочу, тем более компакт он может только извлечь…

Для закрытия CD-ROM:

mciSendString('Set cdaudio door open wait', nil, 0, handle);

Для открытия CD-ROM:

mciSendString('Set cdaudio door closed wait', nil, 0, handle);

Не забудьте включить MMSystem в список используемых модулей (uses).

Операционная система

Буфер обмена

Просмотр буфера обмена

Пример на основе простого модуля-класса, осуществляющего просмотр буфера обмена.

unit ClipboardViewer;

Поделиться с друзьями: