![]() |
|
![]() ![]() ![]() |
|
Bima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 15.8.2006 Репутация: 2 Всего: 2 |
Есть ToolBar и PopupMenu. Кнопки ToolBar привязаны к соответствующим пунктам меню.
Задумка такая: если нажать на кнопку в ToolBar то она должна стать неактивной, до тех пор, пока не отработает подпрограмма подвешаная на нажатие этой кнопки. Задумка, задумкой а выходит следущее: я нажимаю кнопку, программа успевает отработать до того, как я ее отпущу и она под курсором сначала становится неактивной, а потом активной в нажатом состоянии. То есть в результате на ToolBar вместо обыкновенной кнопки получается кнопка нажатая и отжать ее я не знаю как. ![]() варианты:
Пробовал, не помогают. Может есть способ отжать кнопку программно? а то как то не красиво смотрится ![]() Добавлено @ 15:06 P.S. по форуму полазил ничего не нашел ![]() -------------------- Чтобы дойти до цели, надо идти. Клавиатура и мышь - это главные инструменты прогресса. |
|||
|
||||
Vyacheslav |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
для таких вещей изпользут TSpeedButton
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
Bima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 15.8.2006 Репутация: 2 Всего: 2 |
Интересно, а ToolBar для чего используют??? Это что нужно самому создавать панель ToolBar на основе панели и кнопок TSpeedButton ??? Что-то кривоватый подход на мой взгляд? -------------------- Чтобы дойти до цели, надо идти. Клавиатура и мышь - это главные инструменты прогресса. |
|||
|
||||
Vyacheslav |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Извините, не обратил внимание на ToolBar. Тогда вопрос в другом. Как Вам вообще удалось ее сделать ее неотжимаемой ? Стиль tbsCheck установили что ли. Или программно с Down что творите? По умолчанию он отжимается сразу после нажатия
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
SpeedButton на ToolBare плохо смотрятся, если привязаны к акциям, у которой установлен Caption. Немного похожую задачу я реализовывал с помощью SpeedButton на обычной панели, у которой выравнивание стоит alTop. По виду от ToolBar не отличается. Мне правда нужно было залипание кнопок в нажатом состоянии. |
|||
|
||||
Bima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 15.8.2006 Репутация: 2 Всего: 2 |
Стиль стоит tbsButton
c Down не играю. у меня только одни догадки. В подпрограмме, которая висит на кнопке я запускаю потоки. Перед запуском потоков, я делаю Enabled=false; сама подпрограмма заканчивается а потоки еще работают. После того как все потоки отработают, последний поток посылает сообщение формы и в обработчике сообщения я делаю Enabled=true. Может это быть причиной залипания кнопок, если да, то как можно избежать этого??? -------------------- Чтобы дойти до цели, надо идти. Клавиатура и мышь - это главные инструменты прогресса. |
|||
|
||||
Vyacheslav |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Вообще то, даже задисабленная кнопка будет отжата. Я в недоумении
Добавлено @ 17:56 Опс. Я понял. У Вас в обработчике зацикливается отсновной поток Вот при таком ракладе кнопка остается нажатой
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
Bima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 15.8.2006 Репутация: 2 Всего: 2 |
Интересно, каким образом он зацикливается? Если я правильно понял, то происходит следущее... Запускается подпрограмма, выставляется Enabled=false, а потом еще раз запускается подпрограмма(в момент ее работы)??? -------------------- Чтобы дойти до цели, надо идти. Клавиатура и мышь - это главные инструменты прогресса. |
|||
|
||||
default_user |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 27.12.2006 Где: Москва Репутация: 1 Всего: 1 |
Самому создавать не нужно. Просто на пустой тулбар шлепаешь TSpeedButton. У него есть свойство Down, которое можно менять программно. Кстати, у SpeedButton есть свойство Flat=true, с помощью которого панель можно сделать симпотишнее, попробуй.
Это легко решается - на Action свойство Caption не указывается, а в пунктах меню прописывается самостоятельно. |
||||
|
|||||
Bima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 15.8.2006 Репутация: 2 Всего: 2 |
Переделал, все заработало (даже не прибегая к свойствам Down) .
Только вот все как то разношерстно получается ![]() Я вставлял иконки на меню и на кнопки в ToolBare. А SpeedButton принимает только bmp ![]() Как нибудь можно при инициализации программы вытащить рисунки из ImageList и вставить их на SpeedButton? или может не стоит этого делать, так как код скомпилированный превысит вес самих рисунков? Добавлено @ 10:58 Я сделал такой код:
но проблема с маской остается... можно указать конкретный пиксель для маски или цвет??? -------------------- Чтобы дойти до цели, надо идти. Клавиатура и мышь - это главные инструменты прогресса. |
|||
|
||||
Vyacheslav |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Вообще то я все ,в том числе и иконки , присваиваю в Action ( ActionList )
Добавлено @ 16:49 И как Вы это переделали? Добавлено @ 16:53
Без разницы. Кнопка задисаблится но будет отжата. Я вообще не понимаю, как Вам удалось добиться такого эффекта. К тому же у Вас сама Action срабатывает моментально, поскольку он просто запускает поток. Самое плохое, что должно случиться, так это получить задисайбленную отжатую кнопку. -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Если привязка SpeedButton идет к акции - то она вытаскивает из ImageList картинку. Но проблема с Caption остается (см. мой пост выше). Причем если у SpeedButton Caption обнулить - в дизайнтайме все отлично. При запуске - он опять эти заголовки тянет. Как вариант обнулять их при запуске (не пробовал). Был совет:
Тогда теряется весь смысл использования списка акций - надо помнить где что изменять, как минимум основное меню, PopUp меню и т.п. |
|||
|
||||
Bima |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 15.8.2006 Репутация: 2 Всего: 2 |
удалил все кнопки с ToolBar, вставил туда кнопки SpeedButton. OnClick этих кнопок привязал соответствующим пунктам меню. Сконвертировал иконки в bmp (установив предварительно у нижнего левого пикселя цвет - цвет фона). и все, все заработало, без существенной переделки кода. код изменил: только заменой названия кнопок!!!
я сам не понимаю, но эффект был. Почему SpeedButton работает иначе чем кнопки ToolBar, я не понимаю.
Если честно, я с такой проблемой не сталкивался, и в моем проекте я ее не заметил ![]() -------------------- Чтобы дойти до цели, надо идти. Клавиатура и мышь - это главные инструменты прогресса. |
||||||
|
|||||||
default_user |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 27.12.2006 Где: Москва Репутация: 1 Всего: 1 |
Ну, допустим, прям весь смысл акций не теряется ![]() |
|||
|
||||
Anikmar |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Я тоже очень удивился. Если Caption-а нет - все отлично. А если есть, то SpeedButton пфтается и картинку запихать и Caption. В дизайнтайме обнуляю, запускаю прогу - опять вылезли. Я не стал подробно разбираться с этим, почему так происходит, обошел другим способом. Может это у меня билдер какой-то глючный - не знаю.
Ну это естественно, я тут немного переборщил, но все равно - подход какой-то неправильный. У меня на главной форме порядка полусотни акций, как-то лень вручную дважды записывать. - и в основное меню и в PopUp... |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |