Вверх ↑
Этот топик читают: Гость
Ответов: 263
Рейтинг: 18
#1: 2020-05-21 11:59:51 ЛС | профиль | цитата
Всем здравствуйте.
Столкнулся с такой проблемой, если в проекте использовать более одного ToolBar-а, то событие onTBDropDown выдает не правильные индексы. Точнее, первый экземпляр ToolBar работает как надо, а остальные к индексу прибавляют количество кнопок на всех ToolBar-ах стоящих ниже по Z-координатам до текущей. Надеюсь правильно объяснил, на видео лучше видно, что происходит.
Видео
Схема
Из-за иконок схема не влезла на форум.
https://yadi.sk/d/acE8TnUxJ3WIjA
Еще хуже дела обстоят если свойство панелей FirstUsage = True, тогда индексы меняются в зависимости от очередности инициализации панелей.

Вопрос, так и должно быть или нельзя использовать в схеме более одного ToolBar-а?

Редактировалось 2 раз(а), последний 2020-05-21 14:33:26
карма: 3

0
vip
#1.1контекстная реклама от партнеров
Ответов: 8887
Рейтинг: 823
#2: 2020-05-21 12:42:29 ЛС | профиль | цитата
fox-video, так вы сами поставили по 9 кнопок, из них три не обозначенных, но ToolBar-то их считает (он считает всех сусликов )
ЛишниеКнопки.jpg
карма: 19

0
Ответов: 263
Рейтинг: 18
#3: 2020-05-21 12:47:58 ЛС | профиль | цитата
Это же разделители между кнопками! Убрав их ситуация не изменилась
карма: 3

0
Ответов: 56
Рейтинг: 2
#4: 2020-05-21 14:27:09 ЛС | профиль | цитата
fox-video писал(а):
Вопрос, так и должно быть или нельзя использовать в схеме более одного ToolBar-а?

Этого я не знаю... А если с помощью Math, просто отнимать ненужное значение индекса?


Редактировалось 1 раз(а), последний 2020-05-21 14:28:01
карма: 2
На этом форуме, самые умные и добрые люди, всегда помогут! СПАСИБО!
0
Ответов: 263
Рейтинг: 18
#5: 2020-05-21 14:31:34 ЛС | профиль | цитата
Основная боль в том, что при FirstUsage = True неизвестно какая панель какие индексы будет выдавать.

Редактировалось 1 раз(а), последний 2020-05-21 14:31:57
карма: 3

0
Ответов: 8887
Рейтинг: 823
#6: 2020-05-21 14:43:39 ЛС | профиль | цитата
fox-video писал(а):
Это же разделители между кнопками!

Возвращение блудного попугая писал(а):
Это же Бубль-гум!

Индекс5.jpg
карма: 19

0
Ответов: 263
Рейтинг: 18
#7: 2020-05-21 14:52:50 ЛС | профиль | цитата
Леонид, с кнопками все в порядке. Индекс выпадающего списка моросит. Индекс выпадающего списка у кнопки с индексом 4 должен быть тоже 4. У первого ToolBar так и есть. У других - значения 22 и 13.

Редактировалось 1 раз(а), последний 2020-05-21 14:53:26
карма: 3

0
Ответов: 8887
Рейтинг: 823
#8: 2020-05-21 16:18:38 ЛС | профиль | цитата
fox-video, у меня HiAsm 186, компилятор Дельфи, все индексы кнопок и панели соответствуют (см. картинку в предыдущем посте).
карма: 19

0
Ответов: 263
Рейтинг: 18
#9: 2020-05-21 16:39:03 ЛС | профиль | цитата
Леонид, а вот в такой схеме какие индексы выпадающих списков у Вас получаются?

Схема


Add(MainForm,15259463,49,84)
{
Width=326
Height=218
}
Add(ChildPanel,5409318,126,98)
{
link(onEvent1,15043047:doWork2,[])
link(onEvent2,6821164:doWork1,[(221,111)])
}
BEGIN_SDK
Add(EditMulti,5797011,21,21)
{
EventCount=2
}
Add(Panel,13055694,119,42)
{
Left=10
Top=8
Width=90
Height=89
BevelOuter=1
Point(doBringToFront)
}
Add(ToolBar,6100339,186,42)
{
Left=10
Top=10
Width=75
Height=44
Wrapable=1
Buttons=['^Столбцы'=[]]
Point(onTBDropDown)
link(onClick,5797011:onEvent1,[(270,48)(270,27)])
link(onTBDropDown,5797011:onEvent2,[(270,55)(270,34)])
}
Add(Label,2874834,119,91)
{
Left=7
Top=60
Width=75
Height=24
Font=[MS Sans Serif,12,0,0,1]
Caption="Панель 1"
}
END_SDK
Add(ChildPanel,4424614,126,133)
{
link(onEvent1,11110962:doWork2,[])
link(onEvent2,6821164:doWork2,[])
}
BEGIN_SDK
Add(EditMulti,11615427,21,21)
{
EventCount=2
}
Add(Panel,8065885,119,42)
{
Left=190
Top=8
Width=90
Height=89
BevelOuter=1
Point(doBringToFront)
}
Add(ToolBar,4987667,186,42)
{
Left=10
Top=10
Width=75
Height=44
Wrapable=1
Buttons=['^Столбцы'=[]]
Point(onTBDropDown)
link(onClick,11615427:onEvent1,[(270,48)(270,27)])
link(onTBDropDown,11615427:onEvent2,[(270,55)(270,34)])
}
Add(Label,1393447,119,91)
{
Left=7
Top=60
Width=75
Height=24
Font=[MS Sans Serif,12,0,0,1]
Caption="Панель 3"
}
END_SDK
Add(ChildPanel,7283483,126,168)
{
link(onEvent1,11110962:doWork3,[(242,174)])
link(onEvent2,6821164:doWork3,[(221,181)])
}
BEGIN_SDK
Add(EditMulti,9254565,21,21)
{
EventCount=2
}
Add(Panel,2481026,119,42)
{
Left=100
Top=8
Width=90
Height=89
BevelOuter=1
Point(doBringToFront)
}
Add(ToolBar,5600633,186,42)
{
Left=10
Top=10
Width=75
Height=44
Wrapable=1
Buttons=['^Столбцы'=[]]
Point(onTBDropDown)
link(onClick,9254565:onEvent1,[(270,48)(270,27)])
link(onTBDropDown,9254565:onEvent2,[(270,55)(270,34)])
}
Add(Label,12709757,119,91)
{
Left=7
Top=60
Width=75
Height=24
Font=[MS Sans Serif,12,0,0,1]
Caption="Панель 2"
}
END_SDK
Add(Label,15956629,49,126)
{
Left=85
Top=110
Width=84
Height=17
Caption="Индекс кнопки:"
}
Add(Label,9506597,49,168)
{
Left=10
Top=130
Width=159
Height=17
Caption="Индекс выпадающего списка:"
}
Add(Label,4945718,413,98)
{
Left=172
Top=111
Width=28
Height=17
Caption="none"
}
Add(Label,16651902,413,140)
{
Left=172
Top=130
Width=28
Height=17
Caption="none"
}
Add(HubEx,6821164,217,140)
{
link(onEvent,6998968:doEvent1,[])
}
Add(HubEx,15043047,238,98)
{
link(onEvent,8535614:doEvent1,[])
}
Add(HubEx,11110962,238,133)
{
Angle=3
link(onEvent,15043047:doWork3,[])
}
Add(Timer,6665950,322,105)
{
Enable=1
AutoStop=1
link(onTimer,80687:doWork3,[(375,111)])
}
Add(Hub,8535614,273,98)
{
link(onEvent1,80687:doWork2,[])
link(onEvent2,6665950:doTimer,[])
}
Add(HubEx,80687,371,98)
{
link(onEvent,4945718:doText,[])
}
Add(Timer,3683400,322,147)
{
Enable=1
AutoStop=1
link(onTimer,8925869:doWork3,[(375,153)])
}
Add(Hub,6998968,273,140)
{
link(onEvent1,8925869:doWork2,[])
link(onEvent2,3683400:doTimer,[])
}
Add(HubEx,8925869,371,140)
{
link(onEvent,16651902:doText,[])
}

У меня 0, 2 и 1
карма: 3

0
Ответов: 8887
Рейтинг: 823
#10: 2020-05-21 17:13:29 ЛС | профиль | цитата
fox-video, все кнопки -- "0", а индексы выпадающих списков в панелях никуда не подключены
карма: 19

0
Ответов: 263
Рейтинг: 18
#11: 2020-05-21 18:12:56 ЛС | профиль | цитата
Леонид писал(а):
индексы выпадающих списков в панелях никуда не подключены

Ничего не пойму, как так? У меня HiAsm 186 компилятор делфи, рабочая копия 2317, Windows 10.
В схеме из сообщения всё подключено.
Видео
карма: 3

0
Ответов: 2197
Рейтинг: 673
#12: 2020-05-21 23:01:15 ЛС | профиль | цитата
fox-video писал(а):
событие onTBDropDown выдает не правильные индексы.

У меня тоже не правльные индексы выдает.

--- Добавлено в 2020-05-21 23:13:08

fox-video, а измените в процедуре _OnTBDropDown два CurItem на CurIndex.
procedure THIToolBar._OnTBDropDown(Obj:PObj);
var
pos: TPoint;
r: TRect;
dtidx, dtpos: TData;
begin
r := Control.TBButtonRect[Control.CurIndex];
pos.x := r.left;
pos.y := r.bottom;
pos := Control.Client2Screen(pos);
dtInteger(dtidx, Control.CurIndex mod 100);
dtInteger(dtpos, pos.y shl 16 + pos.x);
dtidx.ldata := @dtpos;
_hi_onEvent_(_event_onTBDropDown, dtidx);
end;

Редактировалось 2 раз(а), последний 2020-05-21 23:13:31
карма: 11

1
Голосовали:Galkov
Ответов: 263
Рейтинг: 18
#13: 2020-05-22 05:40:11 ЛС | профиль | цитата
sla8a писал(а):
измените в процедуре _OnTBDropDown два CurItem на CurIndex.


Спасибо sla8a, всё работает. Получается, что это ошибка в компоненте?

Редактировалось 2 раз(а), последний 2020-05-22 05:47:59
карма: 3

0
Ответов: 2197
Рейтинг: 673
#14: 2020-05-22 11:22:52 ЛС | профиль | цитата
fox-video, это не совсем ошибка, индекс все-же CurItem выдаёт. Вчера не успел прочитать разницу и нормально протестировать. Сейчас с телефона пишу. Так что сейчас точно не скажу. Но предположу что с CurIndex будет нормально работать. Вот только (mod 100) будет лишним. Постараюсь вечером проверить основательней. Ну или кто раньше проверит.
карма: 11

0
Ответов: 263
Рейтинг: 18
#15: 2020-05-23 11:57:25 ЛС | профиль | цитата
В рабочем проекте, CurIndex работает корректно.

Проект

В схеме 11 ToolBar-ов.
карма: 3

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)