![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Фиксированое полжение кнопки. [Delphi, Windows]
Ugrael © (2004-06-21 17:10:00)Доброго времени суток.
Что то не найду,точнее нашел, но снова не пойму как сделать фиксированое нажатин кнопки ? У BitBtn нашел в option bboFixed. Но как пользоваться ...что то не доходит. спасибо.
ecm (2004-10-29 22:25:00) [1]На всякий случай тоже для 1.99
http://kolibdb.100free.com/kolmck199BitBtn.zip
ecm (2004-10-29 18:45:00) [2]З.Ы. Это фикс исправляет только прорисовку БитБуттона в ситуации
когда он должен быть "постоянно утоплен" Checked = TRUE
Владимир Кладов (2004-10-29 18:43:00) [3]ладно гляну, скачл. Но потом, версия все равно уже вышла.
ecm (2004-10-29 18:37:00) [4]LikeSpeedButton на "залипание" (bboFixed) BitBtn влияния не оказывает.
Тулбар - это хорошо и красиво но не всегда подходит...
Да и по-моему мои исправления код не увеличивают - а пользователь получает более осмысленное поведение.
И без этих исправлений механизм fChecked+bboFixed для
BitBtn-a ИМХО просто висит мертвым грузом.
Владимир Кладов (2004-10-29 18:26:00) [5]А картинка на кнопку можно и на обычную кнопку положить. Правда, не проверял как оно и тект и картинка. Лучший вариант - положить панель без краев, а на нее Toolbar. С одной кнопкой. Изврат - но самый красивый вариант.
Владимир Кладов (2004-10-29 18:25:00) [6]LikeSpeedButton в MCK гляньте - оно не только для Button, оно и для BitBtn, и для EditBox (вот!) подойдет.
ecm (2004-10-29 17:24:00) [7]Позволю себе вернуться снова к этой теме.
BS_PUSHLIKE - это здорово (минимум кода и функционально)
Но...
Иногда хочется добится такого же поведения именно от BitBtn.
(хотелось бы иметь еще и картинку на кнопке). Тем более, что
все необходимое в коде КОЛ вроде бы есть.
Правда мне пришлось немного подправить чтобы все стало на
свои места...
Предагаю внести следующие исправления в код
function WndProcBitBtn - пока только ПАС-версия
fc Kol.pas(доработанный) KOL.PAS(1.98)
Сравнение файлов Kol.pas и KOL.PAS.000.OLD
***** Kol.pas
DIS := Pointer( Msg.lParam );
IsDown := (DIS.itemState and ODS_SELECTED <> 0) or
((bboFixed in Self_.fBitBtnOptions) and Self_.fChecked);
IsDefault := DIS.itemState and ODS_FOCUS <> 0;
***** KOL.PAS.000.OLD
DIS := Pointer( Msg.lParam );
IsDown := DIS.itemState and ODS_SELECTED <> 0;
IsDefault := DIS.itemState and ODS_FOCUS <> 0;
*****
***** Kol.pas
G := 0;
if IsDown then
G := 1;
***** KOL.PAS.000.OLD
G := 0;
if IsDown and not(bboFixed in Self_.fBitBtnOptions)
or (bboFixed in Self_.fBitBtnOptions) and Self_.fChecked then
G := 1;
*****
Теперь при установке bboFixed кнопка будет правильно отрисовываться после клика и после установки Checked!
т.е. Оставаться в нажатом состоянии.
И еще одно замечание к зеркалу BitBtn-a:
Цитата из KOL.PAS -
Note: if You use bboFixed Style, use OnChange event instead of OnClick,
because <D Checked> state is changed immediately however OnClick occure
only when mouse or space key released (and can be not called at all if
mouse button is released out of BitBtn bounds).
Но в инспекторе объектов для BitBtn событие OnChange - отсутствует.. :)
Предлагаю учесть этит поправки в следующей версии КОЛ-МСК.
Все эти исправления я упаковал в UPD-файл
http://kolibdb.100free.com/kolmck198plus.zip
Или я что-то не понял в технологии использования BitBtn?
Gandalf (2004-07-12 18:39:00) [8]Я собсвенно на вопрос про SpeedButton отвечал, про BS_PUSHLIKE - Speller не раз отвечал.
Vladimyr (2004-07-10 10:07:00) [9]
CheckBox1.Style := CheckBox1.Style or BS_PUSHLIKE
Какой изврат, а!.. %-]
Но работает, как это ни прикольно :)
Gandalf (2004-06-30 19:49:00) [10]Нет ее - не родное это для API - а что для API не родное для KOL... Есть BitBtn - о это не то :) Я использую ToolBar - он и темы держит и картинки
Ugrael (2004-06-28 14:18:00) [11]Что то в KOL&MCK я не нашел SpeedButton.Может и искал плохо,конечно ... но упоминание нигде нет.
Cardinal (2004-06-28 13:32:00) [12]SpeedButton
SPeller (2004-06-21 23:55:00) [13]Можно использовать простой чекбокс, задав ему стиль BS_PUSHLIKE.