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

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

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

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

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

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

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

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

Интервал:

Закладка:

Сделать

end;

Каждый элемент массива styles хранит информацию об определенном оконном стиле. Объявление этого массива, так же, как структуры Stylelnfo и прочих рассмотренных в этом разделе типов данных, находится в модуле WindowData, расположенном на диске в папке с номером главы.

Ниже приведено объявление массива styles (флаги стиля, являющиеся комбинацией других флагов, в массив не попали) (листинг 10.7).

...

Листинг 10.7.

Массив с информацией об оконных стилях

styles: array [0..17] of StyleInfo =

(

(value: WS_BORDER; name: \'WS_BORDER\'),

(value: WS_CAPTION; name: \'WS_CAPTION\'),

(value: WS_CHILD; name: \'WS_CHILD\'),

(value: WS_CLIPCHILDREN; name: \'WS_CLIPCHILDREN\'),

(value: WS_DISABLED; name: \'WS_DISABLED\'),

(value: WS_DLGFRAME; name: \'WS_DLGFRAME\'),

(value: WS_HSCROLL; name: \'WS_HSCROLL\'),

(value: WS_MAXIMIZE; name: \'WS_MAXIMIZE\'),

(value: WS_MAXIMIZEBOX; name: \'WS_MAXIMIZEBOX\'),

(value: WS_MINIMIZE; name: \'WS_MINIMIZE\'),

(value: WS_MINIMIZEBOX; name: \'WS_MINIMIZEBOX\'),

(value: WS_OVERLAPPED; name: \'WS_OVERLAPPED\'),

(value: WS_POPUP; name: \'WS_POPUP\'),

(value: WS_SYSMENU; name: \'WS_SYSMENU\'),

(value: WS_TABSTOP; name: \'WS_TABSTOP\'),

(value: WS_THICKFRAME; name: \'WS_THICKFRAME\'),

(value: WS_VISIBLE; name: \'WS_VISIBLE\'),

(value: WS_VSCROLL; name: \'WS_VSCROLL\')

);

Процедура LoadWindowExStyle реализована практически так же, как и процедура LoadWindowStyle. Только она заполняет cnncKHlstExStyle HlstAvailExStyle и обращается к массиву exstyles, а не styles. Поэтому приведем объявление только массива exstyles (листинг 10.8).

...

Листинг 10.8.

Массив с информацией о дополнительных оконных стилях

exstyles: array [0..18] of StyleInfo =

(

(value: WS_EX_ACCEPTFILES; name: \'WS_EX_ACCEPTFILES\'),

(value: WS_EX_APPWINDOW; name: \'WS_EX_APPWINDOW\'),

(value: WS_EX_CLIENTEDGE; name: \'WS_EX_CLIENTEDGE\'),

(value: WS_EX_CONTEXTHELP; name: \'WS_EX_CONTEXTHELP\'),

(value: WS_EX_CONTROLPARENT; name: \'WS_EX_CONTROLPARENT\'),

(value: WS_EX_DLGMODALFRAME; name: \'WS_EX_DLGMODALFRAME\'),

(value: WS_EX_LAYERED; name: \'WS_EX_LAYERED\'),

(value: WS_EX_LEFT; name: \'WS_EX_LEFT\'),

(value: WS_EX_LEFTSCROLLBAR; name: \'WS_EX_LEFTSCROLLBAR\'),

(value: WS_EX_MDICHILD; name: \'WS_EX_MDICHILD\'),

(value: WS_EX_NOACTIVATE; name: \'WS_EX_NOACTIVATE\'),

(value: WS_EX_NOINHERITLAYOUT; name: \'WS_EX_NOINHERITLAYOUT\'),

(value: WS_EX_NOPARENTNOTIFY; name: \'WS_EX_NOPARENTNOTIFY\'),

(value: WS_EX_RIGHTSCROLLBAR; name: \'WS_EX_RIGHTSCROLLBAR\'),

(value: WS_EX_STATICEDGE; name: \'WS_EX_STATICEDGE\'),

(value: WS_EX_TOOLWINDOW; name: \'WS_EX_TOOLWINDOW\'),

(value: WS_EX_TOPMOST; name: \'WS_EX_TOPMOST\'),

(value: WS_EX_TRANSPARENT; name: \'WS_EX_TRANSPARENT\'),

(value: WS_EX_WINDOWEDGE; name: \'WS_EX_WINDOWEDGE\')

);

Изменение оконных стилей

Изменение стилей окна «на лету» производится не сложнее, чем их определение: с помощью API-функций GetWindowLong и SetWindowsLong. Пример добавления флага, обозначение которого выбрано в списке доступных стилей, приводится в листинге 10.9.

...

Листинг 10.9.

Добавление оконного стиля

procedure TfrmWindowProp.cmbAddStyleClick(Sender: TObject);

var

style: DWORD;

addstyle: DWORD;

begin

if lstAvailStyle.ItemIndex = –1 then Exit;

//Удаление выбранного стиля окна

//..определяем, какой стиль удалить

addstyle := styles[GetStyleIndex(lstAvailStyle.ItemIndex,

False)].value;

//..вычисляем и устанавливаем новое значение стиля окна

style := GetWindowLong(wnd, GWL_STYLE);

style := style or addstyle;

SetWindowLong(wnd, GWL_STYLE, style);

//..перерисуем все окна

InvalidateRect(0, nil, True);

//Обновим список стилей окна

LoadWindowStyle();

end;

Удаление флага стиля производится аналогично добавлению, просто над битами стиля окна выполняется другая операция (листинг 10.10).

...

Листинг 10.10.

Удаление оконного стиля

procedure TfrmWindowProp.cmbDelStyleClick(Sender: TObject);

var

style: DWORD;

delstyle: DWORD;

begin

if lstStyle.ItemIndex = –1 then Exit;

//Удаление выбранного стиля окна

//..определяем, какой стиль удалить

delstyle := styles[GetStyleIndex(lstStyle.ItemIndex, True)].value;

//..вычисляем и устанавливаем новое значение стиля окна

style := GetWindowLong(wnd, GWL_STYLE);

style := style and not delstyle;

SetWindowLong(wnd, GWL_STYLE, style);

//..перерисуем все окна

InvalidateRect(0, nil, True);

//Обновим список стилей окна

LoadWindowStyle();

end;

После удаления или добавления оконного стиля вызывается перерисовка всех окон, чтобы проявился результат проведенной операции. Удаление и добавление дополнительных (расширенных) оконных стилей осуществляется аналогично. Только при этом используются массив exstyles, функция GetExStylelndex и константа GWL_EXSTYLE, передаваемая в функции GetWindowLongи SetWindowLong.

Что же за функция GetStylelndex используется в листинге 10.10? Она позволяет определить положение в массиве styles стиля, выбранного в списке доступных или используемых стилей (верхний список) (листинг 10.11).

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

Интервал:

Закладка:

Сделать

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

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


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

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

x