|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
От какого TrackBar'a пришло сообщение о прокрутке
Здравствуйте.
Не могу понять как организовать вывод положение 2-х трэкбаров в 2-х Static'ах. Делал по справке. Если делаю так(сразу после запуска, static'и пусты): Код:
function GetPosTrackBar(TB : HWND): Integer; begin Result := SendMessage(TB, TBM_GETPOS, 0, 0); end; ..... WM_HSCROLL: begin case LOWORD(wParam) of TB_THUMBTRACK, TB_THUMBPOSITION, TB_LINEDOWN, TB_LINEUP: begin SetWindowText(Stat1, PChar(IntToStr(GetPosTrackBar(TB1)))); SetWindowText(Stat2, PChar(IntToStr(GetPosTrackBar(TB2)))); end; end; А так не работает: Код:
WM_HSCROLL: begin case LOWORD(wParam) of TB_THUMBTRACK, TB_THUMBPOSITION, TB_LINEDOWN, TB_LINEUP: begin case LParam of Tb1ID: SetWindowText(Stat1, PChar(IntToStr(GetPosTrackBar(TB1)))); Tb2ID: SetWindowText(Stat2, PChar(IntToStr(GetPosTrackBar(TB2)))); end; Вопрос наверное уже понятен, но на всякий случай: Как узнать от какого TrackBara поступило Сообщение об изменение позиции, т.е. если Static'и пусты(при создание текста нет), то при прокрутки одного трэкбара не было опроса второго? Пока что сделал так Код:
SetDlgItemText(Wnd, GetDlgCtrlID(LParam) + 1, PChar(IntToStr(SendDlgItemMessage(Wnd, GetDlgCtrlID(LParam), TBM_GETPOS, 0, 0)))); Но не думаю что это выход из положения. Последний раз редактировалось Stalker2-42, 03.01.2015 в 00:36. |
#2
|
||||
|
||||
Явных ошибок в коде нет, единственное, опрашиваются не все сообщения от TrackBar-ов.
Код:
case LoWord(wParam) of TB_PAGEUP, TB_LINEUP, TB_LINEDOWN, TB_PAGEDOWN, TB_TOP, TB_BOTTOM, TB_ENDTRACK, TB_THUMBPOSITION, TB_THUMBTRACK: begin Хотя нет, ошибка всё же есть. Tb1ID судя по всему ID трекбара, а должен быть хендл. Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. Последний раз редактировалось angvelem, 03.01.2015 в 00:46. |
#3
|
||||
|
||||
Цитата:
Пробовал. Выдает ошибку --[DCC Error] E2026 Constant expression expected. Или нужно Handle'ы сделать константами? |
#4
|
||||
|
||||
Не нужно
Код:
if lParam = Longint(GetDlgItem(Wnd, Tb1ID)) then begin end else if lParam = Longint(GetDlgItem(Wnd, Tb2ID)) then Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#5
|
||||
|
||||
Цитата:
Нет реакции. Остановлюсь на этом. Код:
SetDlgItemText(Wnd, GetDlgCtrlID(LParam) + 1, PChar(IntToStr(SendDlgItemMessage(Wnd, GetDlgCtrlID(LParam), TBM_GETPOS, 0, 0)))); Код:
Tb1= 300; st1 = 301; tb2 = 302; st2 = 303; И, прокручиваю один трэкбар, реакция идет только с него. По крайней мере как видно по итогам. Последний раз редактировалось Stalker2-42, 03.01.2015 в 01:22. |
#6
|
||||
|
||||
Цитата:
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#7
|
||||
|
||||
Да. Или я не так обозвал?
|
#8
|
||||
|
||||
Нужно увидеть весь код. Сейчас напишу в личку.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |