Александр Чиртик - Программирование в Delphi. Трюки и эффекты

Тут можно читать онлайн Александр Чиртик - Программирование в Delphi. Трюки и эффекты - бесплатно ознакомительный отрывок. Жанр: comp_programming, издательство Array Издательство «Питер», год 2010. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Программирование в Delphi. Трюки и эффекты
  • Автор:
  • Жанр:
  • Издательство:
    Array Издательство «Питер»
  • Год:
    2010
  • Город:
    Санкт-Петербург
  • ISBN:
    978-5-49807-118-3
  • Рейтинг:
    5/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 100
    • 1
    • 2
    • 3
    • 4
    • 5

Александр Чиртик - Программирование в Delphi. Трюки и эффекты краткое содержание

Программирование в Delphi. Трюки и эффекты - описание и краткое содержание, автор Александр Чиртик, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
Как и все издания данной серии, эта книга адресована тем, кто хочет научиться делать с помощью уже знакомых программных пакетов новые интересные вещи. Издание будет полезно и новичкам, и опытным программистам. Автор описывает удивительные возможности, скрытые в языке, и на примерах учит читателя программистским фокусам – от «мышек-невидимок» и «непослушных окон» до воспроизведения MP3 и управления офисными программами Word и Excel из приложений Delphi. Купив эту книгу, вы пройдете непростой путь к вершинам программистского мастерства весело и интересно.

Программирование в Delphi. Трюки и эффекты - читать онлайн бесплатно ознакомительный отрывок

Программирование в Delphi. Трюки и эффекты - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Александр Чиртик
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

pidl:= SHBrowseForFolder(choose);

if (pidl <> nil) then

begin

//Получение полного пути выбранной папки

SHGetPathFromIDList(pidl, PAnsiChar(buffer));

ShowChooseFolder:= buffer;

DeletePIDL(pidl);

end

else

ShowChooseFolder:= '';

end;

Представленная в листинге 2.28 функция ShowChooseFolder возвращает полный путь указанной папки, если она выбрана, и пустую строку в противном случае. Само окно Обзор папок показано на рис. 2.5.

Рис 25 Окно для выбора папки Особенностью использованной в данном примере - фото 26

Рис. 2.5. Окно для выбора папки

Особенностью использованной в данном примере функции SHBrowseForFolder является то, что она возвращает не путь выбранной папки, а указатель на структуру ItemlDList (что-то вроде внутреннего представления путей). Для извлечения построения пути по содержимому этой структуры используется функция SHGetPathFromIDList. После этого структура становится больше не нужна, и ее следует удалить (с использованием специального интерфейса IMalloc). Для этого используется процедура DeletePIDL, реализованная в листинге 2.29.

Листинг 2.29. Удаление структуры ItemlDList

procedure DeletePIDL(pidl: PItemIDList);

var

pMalloc: IMalloc;

begin

SHGetMalloc(pMalloc);

if (pMalloc <> nil) then

begin

pMalloc.Free(pidl);

pMalloc._Release();

end;

end;

Функцию SHBrowseForFolder (листинг 2.28) можно использовать и для указания принтеров или компьютеров. Для этого достаточно установить флаги BIF_ BROWSEFORCOMPUTER и BIF_BROWSEFORPRINTER соответственно:

choose.ulFlags:= BIF_BROWSEFORCOMPUTER;

и

choose.ulFlags:= BIF_BROWSEFORPRINTER;

Чтобы в окне отображались еще и значки файлов, нужно установить флаг BIF_ BROWSEINCLUDEFILES.

Окна подключения и отключения сетевого ресурса

Часто бывает удобно осуществлять доступ к сетевым папкам так же, как и к локальным дискам компьютера (с использованием того же принципа построения пути). Окна подключения и отключения сетевого ресурса дают пользователю возможность выбрать, какие папки считать сетевыми дисками и какие сетевые диски можно отключить.

Вид окна подключения сетевого ресурса в Windows XP показан на рис. 2.6.

Рис 26 Окно подключения сетевого диска Для вызова окна подключения сетевого - фото 27

Рис. 2.6. Окно подключения сетевого диска

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

Листинг 2.30. Окно подключения сетевого ресурса

function ShowConnection(): BOOL;

begin

ShowConnection:=

WNetConnectionDialog(hParentWnd, RESOURCETYPE_DISK) = NO_ERROR;

end;

Функция ShowConnection возвращает значение True в случае удачного подключения и False – в противном случае.

Окно отключения сетевого диска показано на рис. 2.7.

Рис 27 Отключение сетевого ресурса Функция показывающая окно отключения - фото 28

Рис. 2.7. Отключение сетевого ресурса

Функция, показывающая окно отключения сетевого диска, приведена в листинге 2.31.

Листинг 2.31. Окно отключения сетевого ресурса

function ShowDisconnect(): BOOL;

begin

ShowDisconnect:=

WNetDisconnectDialog(hParentWnd, RESOURCETYPE_DISK) = NO_ERROR;

end;

Аналогично ShowConnection функция ShowDisconnect возвращает значение True, если отсоединен хотя бы один диск, и False – в противном случае.

Системное окно О программе

Этот последний и довольно специфический пример приведен на тот случай, если возникнет желание или необходимость использовать окно О программе, которое выводится для самой операционной системы Windows и ее компонентов. Процедура, выводящая это окно, приведена в листинге 2.32.

Листинг 2.32. Окно О программе

procedure ShowAbout(strAppName: string; strInfo: string);

begin

ShellAbout(hParentWnd, PAnsiChar(strAppName), PAnsiChar(strInfo),

LoadIcon(0, IDI_ASTERISK));

end;

Правда, в окне О программе Windows XP на информацию о приложении отведено всего две строки (и место для значка). Все остальное место занимают информация о регистрации операционной системы и фирменная эмблема Microsoft Windows XP.

Демонстрационное приложение

Теперь пришла очередь рассмотреть небольшое приложение, использующее описанные выше окна (проект StandartWindows). Окно этого приложения показано на рис. 2.8.

Рис 28 Окно демонстрационного приложения Размер EXEфайла приложения равен - фото 29

Рис. 2.8. Окно демонстрационного приложения

Размер EXE-файла приложения равен 22 Кбайт.

В листинге 2.33 приведены объявления используемых глобальных переменных, код, реализующий создание окна и элементов управления в нем, а также цикл обработки сообщений (файл StandartWindows.dpr). Функции работы с рассмотренными выше окнами вынесены в отдельный модуль StdWindows (файл StdWindows.pas).

В листингах 2.33-2.34 используются уже знакомые вам функции из модуля Controls.

Листинг 2.33. Глобальные переменные, код создания окна и цикл обработки сообщений

program StandartWindows;

{$R *.res}

uses

Windows, Messages, CommDlg,

Controls in 'Controls.pas',

StdWindows in 'StdWindows.pas';

var

hMainWnd: HWND;

hInst: Cardinal;

mess: MSG;

curColor: COLORREF;

font: LOGFONT;

hCurFont: HFONT;

...

function RegisterWindow():Boolean;

...

begin

hInst:= GetModuleHandle(nil);

//Регистрация и создание главного окна

if not RegisterWindow() then Exit;

hMainWnd:= CreateWindow(

'MyWindowClass', //Имя класса окна

'Стандартные окна Windows', //Заголовок окна

WS_CAPTION or WS_SYSMENU or WS_CLIPCHILDREN or WS_CLIPSIBLINGS,

CW_USEDEFAULT, //Координата X по умолчанию

CW_USEDEFAULT, //Координата Y по умолчанию

470, 420,

HWND(nil), //Нет родительского окна

HMENU(nil), //Нетменю

hInst,

nil);

if (hMainWnd = HWND(nil)) then Exit;

//Инициализация модуля Controls для работы с главным окном приложения

Controls.hParentWnd:= hMainWnd;

Controls.hAppInst:= hInst;

//Инициализация модуля StdWindows для работы с главным окном приложения

StdWindows.hParentWnd:= hMainWnd;

StdWindows.hAppInst:= hInst;

//Создание кнопок для открытия окон

CreateButton(2 0, 20, 200, 30, 1001, 'Открытие файла');

CreateButton(2 0, 60, 200, 30, 1002, 'Сохранение файла');

CreateButton(2 0, 100, 200, 30, 1003, 'Выбор цвета');

CreateButton(2 0, 140, 200, 30, 1004, 'Выбора шрифта');

CreateButton(2 0, 180, 200, 30, 1005, 'Окно поиска текста');

CreateButton(2 0, 22 0, 200, 30, 1006, 'Окно поиска и замены');

CreateButton(23 0, 20, 22 0, 30, 1010, 'Выбор папки');

CreateButton(23 0, 60, 22 0, 30, 1011, 'Подключение сетевого ресурса');

CreateButton(23 0, 100, 22 0, 30, 1012, 'Отключение сетевого ресурса');

CreateButton(23 0, 140, 22 0, 30, 1013, 'Системное окно "О программе"');

//Текстовое поле для результата

CreateMemo (20, 270, 430, 100, 2001);

ShowWindow(hMainWnd, SW_NORMAL);

//Запуск цикла обработки сообщений

while (Longint(GetMessage(mess, 0, 0, 0)) <> 0) do

begin

if (IsDialogMessage(hMainWnd, mess) = False) then

begin

TranslateMessage(mess);

DispatchMessage(mess);

end;

end;

end.

Код функции RegisterWindow опущен, поскольку он аналогичен приведенному в листинге 2.4. Функции работы с рассмотренными ранее окнами вынесены в модуль StdWindows(файл StdWindows.pas).

Особенностью цикла обработки сообщений в этом примере является использование API-функции IsDialogMessage, которая позволяет реагировать на некоторые действия пользователя так, как это делается в рассмотренных выше окнах. Примером может служить перемещение фокуса между окнами при нажатии клавиши Tab.

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

Интервал:

Закладка:

Сделать


Александр Чиртик читать все книги автора по порядку

Александр Чиртик - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Программирование в Delphi. Трюки и эффекты отзывы


Отзывы читателей о книге Программирование в Delphi. Трюки и эффекты, автор: Александр Чиртик. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x