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

Тут можно читать онлайн Валерий Борисок - Delphi. Трюки и эффекты - бесплатно ознакомительный отрывок. Жанр: Программы. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Delphi. Трюки и эффекты
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4.11/5. Голосов: 91
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

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

Delphi. Трюки и эффекты - описание и краткое содержание, автор Валерий Борисок, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

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

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

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

Интервал:

Закладка:

Сделать

end;

В этой функции реализована обработка сообщения WMPAINT – запроса на перерисовку содержимого окна. Обработка сообщения WMCLOSE предусмотрена для того, чтобы при закрытии главного окна происходил выход из приложения. Для всех остальных сообщений выполняется обработка по умолчанию.

Обратите особое внимание на прототип этой функции: типы возвращаемых значений, типы параметров и способ вызова функции должны быть именно такими, как в листинге 2.5. Возвращаемое значение зависит от конкретного сообщения. Чаще всего это SOK (константа, равная 0) в случае успешной обработки сообщения.

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

...

Листинг 2.6.

Регистрация и создание окна. Цикл обработки сообщений

program Window;

uses

Windows, Messages;

{$R *.res}

var

hMainWnd: HWND;

mess: MSG;

begin

//Создание окна

if not RegisterWindow() then Exit;

hMainWnd := CreateWindow(

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

\'Главное окно\', //Заголовок окна

WS_VISIBLE or WS_OVERLAPPEDWINDOW,//Стиль окна

//(перекрывающееся, видимое)

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

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

CW_USEDEFAULT, //Ширина по умолчанию

CW_USEDEFAULT, //Высота по умолчанию

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

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

GetModuleHandle(nil),

nil);

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

while (Longint(GetMessage(mess, HWND(nil), 0, 0)) <> 0)

do begin

TranslateMessage(mess);

DispatchMessage(mess);

end;

end.

В приведенном листинге 2.6 на месте многоточия должны находиться коды функций WindowFunc и RegisterWindow. При создании окна использовались только стили WS_VISIBLE и WS_OVERLAPPEDWINDOWS. Но это далеко не все возможные стили окон. В приложении 2 приводится список всех стилей окон (если другого не сказано, то стили можно комбинировать при помощи оператора or). Кроме функции CreateWindow, для создания окон можно использовать фyнкциюCreateWindowEx. При этом появится возможность указать дополнительный (расширенный) стиль окна (первый параметр функции CreateWindowEx). Список расширенных стилей приводится все в том же приложении 2.

В конце листинга 2.6 расположен цикл обработки сообщений:

...

while (Longint(GetMessage(mess, hMainWnd, 0, 0)) > 0)

do begin

TranslateMessage(mess);

DispatchMessage(mess);

end;

Здесь API-функция GetMessage возвращает значения больше 0, пока в очереди не обнаружится сообщение WMQUIT. В случае возникновения какой-либо ошибки функция GetMessage возвращает значение-1. Функция TranslateMessage преобразует сообщения типа WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN и WM_ SYSKEYUP В сообщения СИМВОЛЬНОГО ввода (WM_CHAR, WM_SYSCHAR, WM_DEADCHAR, WM_SYSDEADCHAR). Функция DispatchMessage в общем случае (за исключением сообщения WMTIMER) вызывает функцию обработки сообщений нужного окна.

Внешний вид самого окна, созданного в этом примере, приводится на рис. 2.2.

Рис. 2.2. Окно, созданное вручную

Кстати, пока размер приложения всего 16 Кбайт.

2.3. Окно с элементами управления

После того как мы рассмотрели создание простейшего окна, самое время позаботиться о его наполнении элементами управления. Для стандартных элементов управления в системе уже зарегистрированы классы окон. Их перечень следующий:

• BUTTON – оконный класс, реализующий работу обычной кнопки, флажка, переключателя и даже рамки для группы элементов управления (GroupBox);

• СОМВОВОХ – раскрывающийся список;

• EDIT – текстовое поле, может быть как однострочным, так и многострочным, с полосами прокрутки или без;

• LISTBOX – список;

• SCROLLBAR – полоса прокрутки;

• STATIC – статический текст (он же Label, надпись, метка и пр.), кроме текста, может содержать изображение.

Ввиду большого количества возможных стилей окон элементов управления их перечень здесь не приводится, но его можно найти в приложении 2.

Создание элементов управления

Целесообразно написать более краткие функции создания элементов управления, чтобы, формируя интерфейс формы «на лету», не приходилось «украшать» код громоздкими вызовами функций CreateWindow tumCreateWindowEx. Этим мы сейчас и займемся. Сразу необходимо отметить: предполагается, что все функции помещены в модуль (модуль Controls в файле Controls.pas), в котором объявлены глобальные переменные hAppInst и hParentWnd. Эти переменные инициализируются перед вызовом первой из перечисленных ниже процедур или функций создания и работы с элементами управления (инициализацию можно посмотреть в листинге 2.21).

...

Внимание!

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

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

...

Листинг 2.7.

Создание кнопки

function CreateButton(x, y, width, height, id:Integer;

caption : String):HWND;

begin

CreateButton :=

CreateWindow(\'BUTTON\', PAnsiChar(caption), WS_CHILD or

WS_VISIBLE or BS_PUSHBUTTON or WS_TABSTOP,

x, y, width, height, hParentWnd, HMENU(id),

hAppInst, nil);

end;

Приведенная в листинге 2.8 функция создает флажок и устанавливает его.

...

Листинг 2.8.

Создание флажка

function CreateCheck(x, y, width, height, id: Integer;

caption: String; checked: Boolean):HWND;

var

res: HWND;

begin

res :=

CreateWindow(\'BUTTON\', PAnsiChar(caption), WS_CHILD or

WS_VISIBLE or BS_AUTOCHECKBOX or WS_TABSTOP,

x, y, width, height, hParentWnd, HMENU(id),

hAppInst, nil);

if ((res <> 0) and checked) then

SendMessage(res, BM_SETCHECK, BST_CHECKED, 0);

//Флажок установлен

CreateCheck := res;

end;

Следующая функция (листинг 2.9) создает переключатель. Если нужно, то он устанавливается. Новый переключатель может начинать новую группу переключателей, для чего нужно параметру group присвоить значение True.

...

Листинг 2.9.

Создание переключателя

function CreateOption(x, y, width, height, id: Integer;

caption: String; group: Boolean;

checked: Boolean):HWND;

var

res: HWND;

nGroup: Integer;

begin

if (checked) then nGroup := WS_GROUP else nGroup := 0;

res :=

CreateWindow(\'BUTTON\', PAnsiChar(caption), WS_CHILD or

WS_VISIBLE or BS_AUTORADIOBUTTON or nGroup or

WS_TABSTOP, x, y, width, height, hParentWnd,

HMENU(id), hAppInst, nil);

if ((res <> 0) and checked) then

//Переключатель установлен

SendMessage(res, BM_SETCHECK, BST_CHECKED, 0);

CreateOption := res;

end;

Для создания подписанной рамки, группирующей элементы управления, можно воспользоваться функцией CreateFrame, приведенной в листинге 2.10.

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

Интервал:

Закладка:

Сделать


Валерий Борисок читать все книги автора по порядку

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




Delphi. Трюки и эффекты отзывы


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


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

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