Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Trackbar и scrollbox проблема с фокусом / 18 сообщений из 18, страница 1 из 1
15.10.2018, 11:06
    #39717439
Tech N9ne
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trackbar и scrollbox проблема с фокусом
Добрый день, делаю программку, для прослушивания радиостанций.
на форме:
trackbar - которым регулирую громкость
scrollbox - в него создаю speedbuttonЫ, по нажатию которых, начинает воспроизводится радиостанция.
кнопок на скролбаре может быть до 50.
соответственно нужно крутить скроллом этот скроллбар.

пытался искать код в интернете, который реализует эту возможность, но при скроллинге скролбар не реагирует, так как фокус находится у трэкбара.
в on_change трэкбара, делал
Код: pascal
1.
scrollbar1.SetFocus;


и вроде работало. Но после того, как дописал сохранение позиции трэкбара в ини файл, выскакивает ошибка, Cannot focus a disabled or invisible window.

вопрос, собсно))
как мне прокручивать скроллбар (скроллом), если трэкбар перехватывает фокус?
...
Рейтинг: 0 / 0
15.10.2018, 11:15
    #39717448
Tech N9ne
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trackbar и scrollbox проблема с фокусом
Tech N9ne,
тьфу ты.. перепутал в первом сообщении scrollbox со scrollbar`ом.

Речь конкретно о scrollbox.

Если не внятно объяснил, киньте на форму trackbar и scrollbox
в scrollbox накидайте чего нибудь и попробуйте скроллить колесом
...
Рейтинг: 0 / 0
15.10.2018, 11:44
    #39717470
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trackbar и scrollbox проблема с фокусом
Tech N9neпосле того, как дописал сохранение позиции трэкбара в ини файл, выскакивает ошибка, Cannot focus a disabled or invisible window.Код сохранения будет?
...
Рейтинг: 0 / 0
15.10.2018, 11:55
    #39717480
Tech N9ne
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trackbar и scrollbox проблема с фокусом
_Vasilisk_Tech N9neпосле того, как дописал сохранение позиции трэкбара в ини файл, выскакивает ошибка, Cannot focus a disabled or invisible window.Код сохранения будет?
Та дело не в коде сохранения. Там всё ок сохраняется, делал 100 раз))
На on_change в трэкбаре, делал scrollbox.setfocus. B всё работало.
После того как сделал сохранение позиции трэкбара в ini, стала выскакивать эта ошибка.
НО, если стереть "scrollbox.setfocus" - всё ок.
но scrollbox.setfocus мне нужен, так как без этого не могу скроллить колесом scrollbox.

Ну и если вы настаиваете)
Код: pascal
1.
2.
3.
4.
5.
6.
7.
 {FormCreate} ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+'RadioSettings.ini');
 sTrackBar1.Position := ini.ReadInteger( 'Громкость' , 'Уровень громкости' , sTrackBar1.Position );
ini.free
{-------------------------------------------------------}
{Destroy} ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+'RadioSettings.ini');
   ini.WriteInteger( 'Громкость' , 'Уровень громкости' , sTrackBar1.Position );
  ini.Free;
...
Рейтинг: 0 / 0
15.10.2018, 12:02
    #39717489
Tech N9ne
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trackbar и scrollbox проблема с фокусом
_Vasilisk_,


вот кручу скролл, а крутится трэкбар, за место scrollboxa
на гифке не видно курсора, он находится над кнопками скролбокса
...
Рейтинг: 0 / 0
15.10.2018, 12:03
    #39717490
goldmi45
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trackbar и scrollbox проблема с фокусом
Tech N9ne,

в момент создания формы нельзя устанавливать фокус на компоненты. Перенесите код в OnShow.
...
Рейтинг: 0 / 0
15.10.2018, 12:12
    #39717497
Tech N9ne
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trackbar и scrollbox проблема с фокусом
goldmi45Tech N9ne,

в момент создания формы нельзя устанавливать фокус на компоненты. Перенесите код в OnShow.
Это будет работать, если никогда не притрагиваться к трэкбару.
по этому я в On_Change вставил
...
Рейтинг: 0 / 0
15.10.2018, 12:14
    #39717499
Tech N9ne
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trackbar и scrollbox проблема с фокусом
Окей ребят, я боюсь запутать вас. Если есть возможность, откройте дельфу, киньте трэкбар и скорллбокс на форму.
накидайте чего нибудь в скролбокс, что бы появилась полоса прокрутки. скомпильте и попробуйте поскроллить скроллом мыши.

Как вы решите эту проблему у себя?))
...
Рейтинг: 0 / 0
15.10.2018, 12:18
    #39717505
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trackbar и scrollbox проблема с фокусом
Код: pascal
1.
2.
3.
4.
5.
procedure TForm1.ScrollBox1MouseWheel(Sender: TObject; Shift: TShiftState;
  WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
  ScrollBox1.VertScrollBar.Position := ScrollBox1.VertScrollBar.Position - WheelDelta;
end;
...
Рейтинг: 0 / 0
15.10.2018, 12:20
    #39717509
Tech N9ne
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trackbar и scrollbox проблема с фокусом
DimaBr
Код: pascal
1.
2.
3.
4.
5.
procedure TForm1.ScrollBox1MouseWheel(Sender: TObject; Shift: TShiftState;
  WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
  ScrollBox1.VertScrollBar.Position := ScrollBox1.VertScrollBar.Position - WheelDelta;
end;


Неа, ведь фокус то на трэкбаре
...
Рейтинг: 0 / 0
15.10.2018, 12:22
    #39717513
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trackbar и scrollbox проблема с фокусом
...
Рейтинг: 0 / 0
15.10.2018, 12:24
    #39717514
Tech N9ne
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trackbar и scrollbox проблема с фокусом
DimaBr

кинь еще трэкбар на форму. Не в скроллбокс, а чисто на форму
...
Рейтинг: 0 / 0
15.10.2018, 12:28
    #39717520
goldmi45
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trackbar и scrollbox проблема с фокусом
Tech N9negoldmi45Tech N9ne,

в момент создания формы нельзя устанавливать фокус на компоненты. Перенесите код в OnShow.
Это будет работать, если никогда не притрагиваться к трэкбару.
по этому я в On_Change вставил
вы устанавливаете позицию трекбару в OnCreate формы, а на изменение позиции трекбара у вас код на установку фокуса в скроллбокс. Перенесите код установки позиции трекбара из OnCreate в OnShow. Тогда установка курсора на скроллбокс при изменении позиции трекбара будет работать.
...
Рейтинг: 0 / 0
15.10.2018, 12:33
    #39717524
Tech N9ne
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trackbar и scrollbox проблема с фокусом
goldmi45Tech N9neпропущено...

Это будет работать, если никогда не притрагиваться к трэкбару.
по этому я в On_Change вставил
вы устанавливаете позицию трекбару в OnCreate формы, а на изменение позиции трекбара у вас код на установку фокуса в скроллбокс. Перенесите код установки позиции трекбара из OnCreate в OnShow. Тогда установка курсора на скроллбокс при изменении позиции трекбара будет работать.
бляха-муха))))))))
спасибо, спасибо всем за потраченное на меня время))
...
Рейтинг: 0 / 0
15.10.2018, 12:36
    #39717527
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trackbar и scrollbox проблема с фокусом
Tech N9neНеа, ведь фокус то на трэкбаре
Когда фокус на TrackBar1, то скролится он.
...
Рейтинг: 0 / 0
15.10.2018, 12:39
    #39717531
goldmi45
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trackbar и scrollbox проблема с фокусом
Tech N9ne,

У скролбокса есть событие OnMouseEnter - вот в нём и можно переводить фокус на себя.
...
Рейтинг: 0 / 0
15.10.2018, 12:48
    #39717536
Tech N9ne
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trackbar и scrollbox проблема с фокусом
goldmi45,
Спасибо) так даже удобней.
...
Рейтинг: 0 / 0
15.10.2018, 13:19
    #39717577
Сергей N
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Trackbar и scrollbox проблема с фокусом
Не надо дергать фокус. Фиксируйте нахождение мыши на трэкбаре (например, создав переменную MouseOnTrackBar, и устанавливая ее в True/False при событиях OnMouseEnter/OnMouseLeave). Тогда перенаправление события скроллинга формы будет выглядеть примерно так:
Код: pascal
1.
2.
3.
4.
5.
Tform1.FormMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
  if MouseOnTrackBar then begin
    ... // управление позицией трэкбара
    Handled:= True;
  end;
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Trackbar и scrollbox проблема с фокусом / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]