![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Есть 16 чекбоксов по OnClic на любом из чекбоксов нужно преобразовать их состояние в шестнадцатеричную систему и поместить в Edit.text
я сделал это в лоб: Код:
Нужно будет делать и обратное преобразование (по OnExit преобразовывать из Edit.text и заполнять чекбоксы, но над этим я пока не думал) |
#2
|
||||
|
||||
![]() О майн гад. Скажи, З А Ч Е М нужны 16 чекбоксов?! Это требование программы или решение от безвыходности? Если 1 - то оптимизировать можно только убрав "else"-ы и использовав поиск компонентов через Tag например (причем вполне возможно оптимизация получится только по кол-ву строк, а не по скорости). Можно использовать состояние Checked в вычислениях, чтобы избавиться от IF-ов, но не факт, что это даст прирост скорости.
Если 2 - то надо гуглить примеры нормального перевода. jmp $ ; Happy End! The Cake Is A Lie. Последний раз редактировалось Bargest, 02.11.2012 в 02:17. |
#3
|
|||
|
|||
![]() Цитата:
Наверное больше от безвыходности Есть железка (контроллер шаговых двигателей) инструкцие к ней на корейском, с помощью переводчика можно приблизительно понять о чем речь. у железяки 8 регистров на вход и столько же на выход Оптимизация для того чтобы не делать еще 15 таких процедур. А вся эта бодяга для того, чтобы после запроса состояния железки были видны состояния управляющих битов. И чтобы в рабочей программе не заниматься побитной сборкой числа, а сразу подставлять нужное значение (чертить битовые таблички и переводить самому из 2х в16х (или 10) просто лень) |
#4
|
||||
|
||||
![]() А как насчёт edit, в котором будут только 1 или 0? И никаких костылей с CheckBox-ами, вызов одной процедуры преобразует строку вида '01101001' в Integer = 0x69 = 105. Функция гуглится по фразе "bin to dec delphi"
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#5
|
|||||||
|
|||||||
![]() Цитата:
Код:
После этого можно просто положить на главную форму 16 таких фреймов (для 8 регистров на вход и 8 на выход). Ещё вместо фреймов и чекбоксов можно воспользоваться компонентом TCheckListBox - ложим их 16 штук на форму и ещё 16 TEdit'ов. На событие OnClickCheck всех TCheckListBox'ов делаем один единственный обработчик: Код:
Код:
Также CheckBox'ы есть у компонента TListView. Принцип похож на предыдущий, с той лишь разницей, что у него ещё можно несколько колонок добавить и можно не заполнять его в OnCreate формы, а вместо этого заполнить прямо в дизайнере. |
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
митрийG (02.11.2012)
|
#6
|
|||
|
|||
![]() Цитата:
|
#7
|
||||
|
||||
![]() В TMaskEdit вполне удобно.
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |