Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > ОС и железо
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.01.2015, 23:36
Аватар для Stalker2-42
Stalker2-42 Stalker2-42 вне форума
Новичок
 
Регистрация: 28.09.2013
Сообщения: 94
Версия Delphi: 2010
Репутация: 10
По умолчанию От какого 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;
то естественно, в Stat1 и Stat2 будут записаны положение 1 и 2 трэкбара.

А так не работает:
Код:
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  
Старый 03.01.2015, 00:40
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Явных ошибок в коде нет, единственное, опрашиваются не все сообщения от 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  
Старый 03.01.2015, 01:05
Аватар для Stalker2-42
Stalker2-42 Stalker2-42 вне форума
Новичок
 
Регистрация: 28.09.2013
Сообщения: 94
Версия Delphi: 2010
Репутация: 10
По умолчанию

Цитата:
Сообщение от angvelem
Хотя нет, ошибка всё же есть. Tb1ID судя по всему ID трекбара, а должен быть хендл.

Пробовал. Выдает ошибку --[DCC Error] E2026 Constant expression expected.

Или нужно Handle'ы сделать константами?
Ответить с цитированием
  #4  
Старый 03.01.2015, 01:11
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Не нужно
Код:
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  
Старый 03.01.2015, 01:20
Аватар для Stalker2-42
Stalker2-42 Stalker2-42 вне форума
Новичок
 
Регистрация: 28.09.2013
Сообщения: 94
Версия Delphi: 2010
Репутация: 10
По умолчанию

Цитата:
Сообщение от angvelem
Код:
      case LoWord(wParam) of
	TB_PAGEUP, TB_LINEUP, TB_LINEDOWN, TB_PAGEDOWN, TB_TOP,
	TB_BOTTOM, TB_ENDTRACK, TB_THUMBPOSITION, TB_THUMBTRACK:
	begin
        if lParam = Longint(GetDlgItem(Wnd, Tb1ID)) then
begin
end
else if lParam = Longint(GetDlgItem(Wnd, Tb2ID)) then

Нет реакции.

Остановлюсь на этом.
Код:
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  
Старый 03.01.2015, 01:22
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Stalker2-42
Нет реакции...
Идентификаторы присутствуют при создании трекбаров?
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #7  
Старый 03.01.2015, 01:30
Аватар для Stalker2-42
Stalker2-42 Stalker2-42 вне форума
Новичок
 
Регистрация: 28.09.2013
Сообщения: 94
Версия Delphi: 2010
Репутация: 10
По умолчанию

Да. Или я не так обозвал?
Ответить с цитированием
  #8  
Старый 03.01.2015, 01:32
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Нужно увидеть весь код. Сейчас напишу в личку.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:31.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter