Валерий Борисок - Delphi. Трюки и эффекты

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

Delphi. Трюки и эффекты: краткое содержание, описание и аннотация

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

«Delphi. Трюки и эффекты», как и все издания данной серии, адресована тем, кто хочет научиться делать с помощью уже знакомых программных пакетов новые, интересные вещи. В первой части книги многое говорится о среде разработки Delphi (самых последних версий) и программировании на языке Object Pascal. Благодаря этому издание подходит и новичкам, и начинающим программистам. Вторая (основная) часть книги описывает удивительные возможности, скрытые в языке, и на примерах учит читателя программистским фокусам – от «мышек-невидимок» и «непослушных окон» до воспроизведения МРЗ и управления офисными программами Word и Excel из приложений Delphi. Купив эту книгу, вы пройдете непростой путь к вершинам программистского мастерства весело и интересно.

Delphi. Трюки и эффекты — читать онлайн ознакомительный отрывок

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

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

Интервал:

Закладка:

Сделать
...

Листинг 10.3.

Добавление элемента, соответствующего окну, в дерево

function AddWindowToTree(wnd: HWND): TTreeNode;

var

caption, classname: String;

text: String;

node: TTreeNode;

begin

//Получение текста окна

SetLength(caption, SendMessage(wnd, WM_GETTEXTLENGTH, 0, 0) + 1);

SetLength(caption, SendMessage(wnd, WM_GETTEXT, Length(caption),

Integer(PAnsiChar(caption))));

//Имя класса окна

SetLength(classname, 1024);

SetLength(classname, GetClassName(wnd, PAnsiChar(classname),

100));

//Формирование текста для элемента и добавление его в дерево

text := \'"\' + caption + \'" \' + classname;

node := enInfo.tree.Items.AddChild( enInfo.parent, text );

node.Data := Pointer(wnd); //Не забываем запомнить

//дексриптор окна

AddWindowToTree := node;

end;

Вот, собственно, и все, что требуется для построения полного дерева окон, показанного на рис. 10.3.

Получение информации об окне

Следующей функцией «оконного шпиона» является определение более-менее полной информации об окне, выбранном в дереве. Форма с информацией о выделенном в дереве окне (в данном случае это пресловутая кнопка Пуск) показана на рис. 10.4.

Рис. 10.4. Форма свойств окна

Начинается все с того, что по команде меню Правка → Свойствавызывается метод ShowWindowProp созданного при запуске программы объекта f rmWindowProp. Этот метод принимает в качестве параметра дескриптор окна, информацию о котором нужно отобразить (дескриптор сохраняется в поле Data каждого элемента при построении дерева) (листинг 10.4).

...

Листинг 10.4.

Подготовка формы свойств выбранного окна

procedure TfrmWindowProp.ShowWindowProp(window: HWND);

begin

wnd := window;

LoadWindowInfo();

ShowModal(); //Не забываем показать сами себя

end;

Переменная wnd, в которой сохраняется переданный BShowWindowProp дескриптор окна, является членом класса Tf rmWindowProp. Она нужна для того, чтобы другие методы формы Tf rmWindowProp могли получать доступ к дескриптору окна.

Определение заголовка, имени класса, идентификатора окна, а также области экрана, занимаемой окном, осуществляется в процедуре LoadWindowInf о (листинг 10.5).

...

Листинг 10.5.

Определение общей информации об окне

procedure TfrmWindowProp.LoadWindowInfo();

var

rect: TRect;

buffer: String;

begin

//Сбор сведений об окне

//..имя класса

SetLength(buffer, 1024);

SetLength(buffer, GetClassName(wnd, PAnsiChar(buffer), 1024));

txtClassName.Text := buffer;

//..имя (заголовок) окна

SetLength(buffer, SendMessage(wnd, WM_GETTEXTLENGTH, 0, 0) + 1);

SendMessage(wnd, WM_GETTEXT, Length(buffer),

Integer(PAnsiChar(buffer)));

txtWindowName.Text := buffer;

//..идентификатор (или дескриптор меню) окна

txtId.Text := IntToStr(GetWindowLong(wnd, GWL_ID));

//..оконный прямоугольник

GetWindowRect(wnd, rect);

txtWindowRect.Text :=

\'(\' + IntToStr(rect.Left) + \',\' + IntToStr(rect.Top) + \')\' +

\' – \' +

\'(\' + IntToStr(rect.Right) + \',\' + IntToStr(rect.Bottom) + \') \' +

IntToStr(rect.Right–rect.Left) + \'x\' + IntToStr(rect.Bottom –

rect.Top);

//Определение стиля окна

LoadWindowStyle();

LoadWindowExStyle();

end;

Если вы внимательно просмотрели листинг 10.5, то могли заметить вызовы двух процедур в двух последних строках кода. Процедура LoadWindowStyle заполняет списки используемых и доступных оконных стилей (см. рис. 10.4), а процедура LoadWindowExStyle соответственно заполняет списки используемых и доступных дополнительных (или расширенных) стилей окна.

Реализация процедуры LoadWindowStyle приводится в листинге 10.6

...

Листинг 10.6.

Заполнение списков оконных стилей

procedure TfrmWindowProp.LoadWindowStyle();

var

i: Integer;

style: DWORD;

begin

style := GetWindowLong(wnd, GWL_STYLE);

lstStyle.Clear();

lstAvailStyle.Clear();

//Выделение из 32-битного значения составляющих стиля окна

for i := 0 to 17 do

if styles[i].value and style <> 0 then

begin

//Стиль используется

lstStyle.Items.Add(styles[i].name);

styles[i].used := True;

end

else

begin

//Стиль не используется

lstAvailStyle.Items.Add(styles[i].name);

styles[i].used := False;

end;

end;

Вместо громоздкой проверки наличия в значении, возвращенном API-функцией GetWindowLong, битов каждого возможного стиля при помощи, например, case здесь используется глобальный массив styles структур Styleinf о. Объявление типа структуры (записи) Styleinf о выглядит следующим образом:

...

type

StyleInfo = record

value: DWORD; //Код стиля

name: String; //Текстовое обозначение стиля

used: Boolean; //Служебное поле

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

Интервал:

Закладка:

Сделать

Похожие книги на «Delphi. Трюки и эффекты»

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


Отзывы о книге «Delphi. Трюки и эффекты»

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

x