Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Полосы прокрутки фреймов 
:(
    Опции темы
Timi
Дата 7.6.2007, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 23.1.2007

Репутация: нет
Всего: нет



Народ есть фрейм у которого автоматиски созданы только вертикальные полосы проктутки. 
Как сделать чтобы полосы прокручивались при вращении колесика, а также при удержании кнопок Page UP/Page Down. и кнопок верх вниз.!!!

P.S прога написана на delphi. Модеры извените забыл  написатьв заголовке.!

Это сообщение отредактировал(а) Timi - 7.6.2007, 19:03
PM MAIL   Вверх
Sunvas
Дата 8.6.2007, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Timi, ну так отлавливай соответствующие сообщения кнопок и перемещай ползунки.


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Alexeis
Дата 8.6.2007, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Нужно сделать следующие обработчики фрейму

Код

procedure TFrame2.FrameMouseWheelDown(Sender: TObject; Shift: TShiftState;
  MousePos: TPoint; var Handled: Boolean);
begin
   Perform(WM_VSCROLL, SB_LINEUP, 0);
end;

procedure TFrame2.FrameMouseWheelUp(Sender: TObject; Shift: TShiftState;
  MousePos: TPoint; var Handled: Boolean);
begin
  Perform(WM_VSCROLL, SB_LINEDOWN, 0);
end;



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Timi
Дата 8.6.2007, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 23.1.2007

Репутация: нет
Всего: нет



Цитата(Alexeis @ 8.6.2007,  11:31)
Нужно сделать следующие обработчики фрейму

Код

procedure TFrame2.FrameMouseWheelDown(Sender: TObject; Shift: TShiftState;
  MousePos: TPoint; var Handled: Boolean);
begin
   Perform(WM_VSCROLL, SB_LINEUP, 0);
end;

procedure TFrame2.FrameMouseWheelUp(Sender: TObject; Shift: TShiftState;
  MousePos: TPoint; var Handled: Boolean);
begin
  Perform(WM_VSCROLL, SB_LINEDOWN, 0);
end;

так не получилось! Сдела вот как:
Код

procedure TForm3.FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
  MousePos: TPoint; var Handled: Boolean);
begin
  form3.Frame41.VertScrollBar.Position:=  form3.Frame41.VertScrollBar.Position+5;
end;

procedure TForm3.FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
  MousePos: TPoint; var Handled: Boolean);
begin
  form3.Frame41.VertScrollBar.Position:=  form3.Frame41.VertScrollBar.Position-5;
end;


Пробовал поступить с клавишами таким макаром:
Код


procedure TForm3.FormKeyPress(Sender: TObject; var Key: Char);
begin


if (key=#34) or (key =#40) then
  form3.Frame41.VertScrollBar.Position:=  form3.Frame41.VertScrollBar.Position+5;
if (key=#33) or (key =#38) then
  form3.Frame41.VertScrollBar.Position:=  form3.Frame41.VertScrollBar.Position-5;

 end;

не получилось...
PM MAIL   Вверх
Alexeis
Дата 8.6.2007, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Timi, Определитесь что нужно прокручивать, фрейм или форму. Мой пример для фрейма в котом не вмещаются все компоненты. А тут вижу что прокручивается сама форма.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Timi
Дата 9.6.2007, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 23.1.2007

Репутация: нет
Всего: нет



Цитата(Alexeis @ 8.6.2007,  20:14)
Timi, Определитесь что нужно прокручивать, фрейм или форму. Мой пример для фрейма в котом не вмещаются все компоненты. А тут вижу что прокручивается сама форма.

Почему форму! Я отработчик событий ставлю на форму, а фрейм прокручиваю! 
Ставил твой код! Фрейм ни как не реарировал! Нещнаю почему!
PM MAIL   Вверх
Alexeis
Дата 9.6.2007, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(Timi @  9.6.2007,  08:27 Найти цитируемый пост)
Почему форму! Я отработчик событий ставлю на форму, а фрейм прокручиваю! 

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

  Раз обработчики сделались у формы значит все таки фрем больше формы и полосы прокрутки самой формы.

Добавлено через 11 минут и 40 секунд
АА я понял в чем глюк! Полосы прокрутки таки у фрейма а обработчики почему-то сделаны у формы!
  Вот это то и неверно. Нужно залезть в свойства фрейма, а не формы и там создать обработчики. См. на приведенный код 

 TFrame2.FrameMouseWheelDown

Не работало потому что Perform(WM_VSCROLL, SB_LINEUP, 0); - производится для того кому принадлежит метод (обработчик) . Т.о. их нужно создавать в модуле самого фрейма.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Timi
Дата 9.6.2007, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 23.1.2007

Репутация: нет
Всего: нет



Ок!
С скролом разобрались!!
Но остались кнопочки 
Page UP/Page Down. и кнопок верх вниз.!!!
Код

procedure TForm3.FormKeyPress(Sender: TObject; var Key: Char);
begin
if (key=#34) or (key =#40) then
  form3.Frame41.VertScrollBar.Position:=  form3.Frame41.VertScrollBar.Position+5;
if (key=#33) or (key =#38) then
  form3.Frame41.VertScrollBar.Position:=  form3.Frame41.VertScrollBar.Position-5;

 end;


Вот так не работает! 
А если  заметить строку
Код

if (key=#34) or (key =#40) then

на
Код

if key='w' then

полосы будут опускаться, принажатии клавиши "w" 
У меня есть прога определяющая код нажатой клавиши. 
Результат:
34 - page down
33 - page up
40 стрелка вниз
38 стрелка вверх
 Беру эти коды и не чё не получается!...:(

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0789 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.