Как перехватить сообщения прокрутки в TScrollBox?
Следующий пример перехватывает сообщения о прокрутке компонента TScrollBox и синхронизирует обе линейки прокрутки. Сообщения прокрутки перехватываются с помощью переопределения окнной процедуры (WinProc) ScrollBox'а.
{Declare a variable to hold the window procedure we are replacing} var OldWindowProc : Pointer;
function NewWindowProc(WindowHandle : hWnd; TheMessage : WParameter; ParamW : WParameter; ParamL : LParameter) : LongInt {$IFDEF WIN32} stdcall; {$ELSE} ; export; {$ENDIF} var TheRangeMin : integer; TheRangeMax : integer; TheRange : integer; begin if TheMessage = WM_VSCROLL then begin {Get the min and max range of the horizontal scroll box} GetScrollRange(WindowHandle, SB_HORZ, TheRangeMin, TheRangeMax); {Get the vertical scroll box position} TheRange := GetScrollPos(WindowHandle, SB_VERT); {Make sure we wont exceed the range} if TheRange < TheRangeMin then TheRange := TheRangeMin else if TheRange > TheRangeMax then TheRange := TheRangeMax; {Set the horizontal scroll bar} SetScrollPos(WindowHandle, SB_HORZ, TheRange, true); end; if TheMessage = WM_HSCROLL then begin {Get the min!
and max range of the horizontal scroll box} GetScrollRange(WindowHandle, SB_VERT, heRangeMin, TheRangeMax); {Get the horizontal scroll box position} TheRange := GetScrollPos(WindowHandle, SB_HORZ); {Make sure we wont exceed the range} if TheRange < TheRangeMin then TheRange := TheRangeMin else if TheRange > TheRangeMax then TheRange := TheRangeMax; {Set the vertical scroll bar} SetScrollPos(WindowHandle, SB_VERT, TheRange, true); end;
{Call the old Window procedure to allow processing of the message.} NewWindowProc := CallWindowProc(OldWindowProc, WindowHandle, TheMessage, ParamW, ParamL); end;
procedure TForm1.FormCreate(Sender: TObject); begin {Set the new window procedurefor the control and remember the old window procedure.} OldWindowProc := Pointer(SetWindowLong(ScrollBox1.Handle, GWL_WNDPROC, LongInt(@NewWindowProc))); end;
procedure TForm1.FormDestroy(Sender: TObject); begin {Set the window procedure back to the old window procedure.} SetWindowLong(ScrollBox1.Handle, GWL_WNDPROC, LongInt(OldWindowProc)); end;
Пример чата на основе сокетов.
Целью данной статьи, в отличие от предыдущих на эту тему, будет изучение различных методов и приемов работы с сокетами на наглядном примере. Здесь мы рассмотрим практический пример приложения-чата для локальной сети...
Delphi 6. Базы данных и приложения
В книге предпринята попытка дать читателю целостное представление о процессе разработки программного обеспечения для реляционных баз данных. В рамках поставленной цели авторами решены следующие задачи: рассмотрены основы языка Object Pascal на примере создания консольных приложений; рассмотрены объектно-ориентированные возможности языка Object Pascal и технология визуального программирования; описаны основные принципы работы с SQL-ссрвером InterBase; изложена методика взаимодействия программ, созданных в среде Delphi, с базами данных различного типа, в частности, SQL-сервером InterBase: рассмотрены основы проектирования баз данных с использованием программы ERwin; описана "методика разработки клиентского приложения для доступа к базам данных с использованием библиотек динамической загрузки, а также популярных программ Word и Excel для создания отчетов. На примере БД "Учебные компьютерные курсы" рассмотрен процесс разработки программного обеспечения, начиная с вопросов проектирования и заканчивая подготовкой отчетов. Книга может быть использована в качестве основы курса лекции по соответствующей дисциплине. Книга предназначена для старшеклассников, студентов, аспирантов, преподавателей и пользователей ПК, интересующихся программированием.
Автор: Кандзюба С. "ДиаSoft"
Программы, исходники и ... ;) музычка от SunSB. Несколько полезных программ с исходными кодами. Программы достаточно сложные и большие. Исходники будут полезны не только новичкам. Делфи без компонент, Делфи и DirectX, Делфи и написание игр. Ваши ...
Давно витающая в воздухе нашего сайта идея создания журнала, посвященного всеми нами любимой среде разработки Delphi, похоже, обретает зримую форму. Несомненно, ваше мнение о необходимости такого журнала, содержании рубрик и темах отдельных статей поможет сделать журнал более полезным и интересным. Высказать свое мнение, проголосовать или же подписаться вы можете на сайте. Без вашего участия, нам будет трудно сделать правильный журнал!
Для души
Хокку дня
Пруд густ выдохами тумана зажелтели на кромке воды первые кораблики осени.
Афоризмы
"Совесть болит только у нравственно больных." (Артур Васильев)
Фраза дня
Давайте сами дуть в свои паруса.
И на закуску коротенький анекдот
Забрели как-то ребята на сайт "Плейбоя". Идет длинный ряд моделей с их "ТТХ", вдруг кто-то озадачивается: бюст 34 дюйма - это как, много или не очень? После напряженной тишины один с просветленным лицом восклицает: - Да это ж как два 17-дюймовых монитора!