Форум программистов, компьютерный форум, киберфорум C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 03.02.2024
Сообщений: 9
1

Отображение на форму бинарной маски

03.02.2024, 08:19. Показов 2566. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток.
Есть два 16битных регистра. Требуется вывести на форму их состояния побитно, при этом один только для чтения, другой с возможностью редактирования.
Пока вывел их в шестнадцатеричном формате в Edit, временно пойдет для отладки.
Но надо всё-таки вывести побитно.
Первая мысля - это куча чекбоксов.
Вторая -это нарисовать Аля светодиодики.
Прежде чем колхозить что-то, решил спросить.
Может есть какой-то готовый компонент, желательно стандартный, для этого? Идеально было бы отображение физического dip переключателя.
Спасибо.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.02.2024, 08:19
Ответы с готовыми решениями:

Некрасивое отображение значения в TDBEditEh при использовании маски
У меня в БД Firebird в таблице есть поле с типом «NUMERIC(9,1)». Мне нужно, чтоб в приложении...

Отображение данных, введенных пользователем в форму и не только
В общем, сначала на странице отображается форма с текстовыми полями, кнопкой. Нужно чтобы при...

отображение контрола на форму при добавлении программным способом
хочу добавить контрол на форму программным способом, пытаюсь добавить таким кодом: PictureBox pb...

Отображение файлов в папке в TTreeView и вывод содержимого на форму
Здравствуйте. У меня есть программа которая читает файлы содержащие данные, мне нужно, что бы эти...

13
2129 / 1212 / 503
Регистрация: 11.10.2018
Сообщений: 6,138
03.02.2024, 08:40 2
Можешь на канве нарисовать квадратики и по щелчку на него меняется состояние на противоположное. Но тут нужно будет координаты высчитывать. Событие: OnClick. Переключение состояние на противоположное: Toggle, реализуется с помощью операции XOR(Исключающее ИЛИ)^.
0
0 / 0 / 0
Регистрация: 03.02.2024
Сообщений: 9
03.02.2024, 09:11  [ТС] 3
Цитата Сообщение от Z_h_e
Вторая -это нарисовать Аля светодиодики.
Ну я и имел ввиду канву. Тот же dip переключатель можно, но это надо рисовать .
А если уже есть компонент, который готов или почти готов под вывод битовых значений, то будет обидно за потраченное время.
0
39 / 27 / 6
Регистрация: 21.10.2022
Сообщений: 333
Записей в блоге: 2
03.02.2024, 12:24 4
Нет такого компонента. Самое простое это поставить пару прямоугольных контролов типа Label или Panel с границами на каждый бит и менять, допустим, фоновый цвет. Будет похоже на dip.
А, впрочем, под 10 win и под FMX есть некий переключатель Switch. Можно из них собрать, еще проще будет.
0
0 / 0 / 0
Регистрация: 03.02.2024
Сообщений: 9
03.02.2024, 12:29  [ТС] 5
Ну может быть, можно подумать. Но лабелы только для вывода. Для редактирования видимо все равно рисовать что-то.

Можно еще попробовать ТаскБар применить , если получится его уменьшить до маленьких размеров. Поставить кучу вертикально, правда это по сути получатся те же чекбоскы.
0
39 / 27 / 6
Регистрация: 21.10.2022
Сообщений: 333
Записей в блоге: 2
03.02.2024, 12:36 6
Цитата Сообщение от Z_h_e Посмотреть сообщение
Ну может быть, можно подумать. Но лабелы только для вывода. Для редактирования видимо все равно рисовать что-то.
Нет. У лабела есть onClick. Его спокойно можно использовать как чекбокс.
1
0 / 0 / 0
Регистрация: 03.02.2024
Сообщений: 9
03.02.2024, 12:40  [ТС] 7
Цитата Сообщение от didgik Посмотреть сообщение
А, впрочем, под 10 win и под FMX есть некий переключатель Switch
Можно чуть-чуть прояснить, это кто?
0
39 / 27 / 6
Регистрация: 21.10.2022
Сообщений: 333
Записей в блоге: 2
03.02.2024, 12:46 8
Цитата Сообщение от Z_h_e Посмотреть сообщение
Можно чуть-чуть прояснить, это кто?
Я сам не знаю. Просто увидел в списке компонентов в Билдере 11. Видимо как чекбокс, только нарисовано в виде переключателя.
0
0 / 0 / 0
Регистрация: 03.02.2024
Сообщений: 9
03.02.2024, 12:51  [ТС] 9
Ок, обращу внимание. Правда у меня Win7.

Добавлено через 2 минуты
Я еще пробовал бегунки для эквалайзера поискать, типа одним компонентом. Ничего не получилось.

Добавлено через 1 минуту
Цитата Сообщение от didgik Посмотреть сообщение
некий переключатель Switch
Класс то как называется, TSwitch?
0
39 / 27 / 6
Регистрация: 21.10.2022
Сообщений: 333
Записей в блоге: 2
03.02.2024, 12:58 10
Цитата Сообщение от Z_h_e Посмотреть сообщение
Класс то как называется, TSwitch?
TToggleSwitch. Но он какой то кривой. Не подогнать под дизайн.
А для бегунка есть TTrackBar, но опять же, если надо по красоте, то либо самому рисовать либо пробовать FXM.
1
0 / 0 / 0
Регистрация: 03.02.2024
Сообщений: 9
03.02.2024, 13:03  [ТС] 11
Ну красоту шибко не надо. Лично мне даже в шестнацатиричной форме все понятно, но конечно все равно неудобно.

Когда я написал ТаскБар, я имел ввиду Трекбар, очепятался.

Цитата Сообщение от didgik Посмотреть сообщение
либо пробовать FXM
Это кто?
0
39 / 27 / 6
Регистрация: 21.10.2022
Сообщений: 333
Записей в блоге: 2
03.02.2024, 13:16 12
Цитата Сообщение от Z_h_e Посмотреть сообщение
Это кто?
FireMonkey. В последних версиях Студии стало модно.
1
Практикантроп
4840 / 2725 / 533
Регистрация: 23.09.2011
Сообщений: 5,795
03.02.2024, 18:04 13
Лучший ответ Сообщение было отмечено Z_h_e как решение

Решение

Стандартного компонента нет, но я уверен, что можно найти компонент "третьей стороны", - что-то типа "dip-16". Впрочем, даже наскоро несложно это реализовать, скажем, через компонент TPanel.
C++Выделить код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//---------------------------------------------------------------------------
void __fastcall TForm1::FormShow(TObject *Sender)
{
    USHORT  wrd1=0x3D14;
    TPanel *pn[16] = { Panel2,Panel4,Panel6,Panel8,Panel10,Panel12,Panel14,Panel16,
             Panel18,Panel20,Panel22,Panel24,Panel26,Panel28,Panel30,Panel32};
    for(int j=1,i=0;i<16;j+=j,i++) pn[15-i]->Top = (wrd1&j)==0 ? 20 : 0; 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Panel1Click(TObject *Sender)
{
    TPanel *P = (TPanel*)Sender;
    ((TPanel*)P->Controls[0])->Top ^= 20;
}
//---------------------------------------------------------------------------
Вот практически вся программа. Обработчик FormShow иллюстрирует, как вывести содержимое регистра 16 бит, а Panel1Click (общий для всех 16 панелей) переключает состояния "битов". Более культурно будет применить вектор TPanel* и сразу работать с массивом.
Пояснение: в качестве dip-переключателя используется панель высотой 40 пксл, имеющая "на себе" панель высотой 20 пксл более темного цвета.
Миниатюры
Отображение на форму бинарной маски  
1
0 / 0 / 0
Регистрация: 03.02.2024
Сообщений: 9
03.02.2024, 18:37  [ТС] 14
Я уже на чекбосках почти сделал, но самому не нравится. Хорошая идея с панелями, спасибо. Потом переделаю, пока основной функционал допилю, а после украшательство.

Отдельное спасибо за массив указателей на объекты, то же хорошая идея, сам не догадался.
0
03.02.2024, 18:37
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.02.2024, 18:37
Помогаю со студенческими работами здесь

Добавление ProgressBar на форму и отображение прогресса внешней программы
Всем привет! У меня возникло несколько вопросов по элементу управления ProgressBar 1. Я добавил...

Отображение изображения типа BLOB в форму oracle apex 5.1.3
Здравствуйте, может кто подскажет, долго не получается сделать отображение изображения типа BLOB в...

Работа с DataGridView: фильтрация, отображение фото, передача в другую форму
Доброго времени суток. Совсем отчаялся, поэтому прошу помощи. На основании лабораторной работы...

Отображение содержимого html в компоненте TWebBrowser при переходе на новую форму
Нужно сделать так, чтобы отобразилось содержимое html-страницы в компоненте TWebBrowser при...

Внедрение в форму (или отображение на форме) избранных подтаблиц (внедрённых форм) по выбору пользователя
Здравствуйте! Подскажите пожалуйста, можно ли макросом или свойствами элементов управления...

Логистическое отображение (также известное, как квадратичное отображение или отображение Фейгенбаума) даётся ф
Логистическое отображение (также известное, как квадратичное отображение или отображение...

Маски и строки. Соотнести символы маски и символы строки
Доброго времени суток! На учебе дали такое задание: Через консоль вводится маска, в которой &quot;?&quot; -...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Как подключить JavaScript файл в другом JavaScript файле
InfoMaster 20.01.2025
В современной веб-разработке организация кодовой базы играет ключевую роль в создании масштабируемых и поддерживаемых приложений. Модульность и правильное структурирование кода стали неотъемлемыми. . .
Как откатить изменения в исходниках, не внесенные в Git
InfoMaster 20.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с необходимостью отменить внесенные изменения в исходном коде. Особенно актуальной становится ситуация, когда изменения еще. . .
В чем разница между px, in, mm, pt, dip, dp, sp
InfoMaster 20.01.2025
В мире цифрового дизайна и разработки интерфейсов правильный выбор единиц измерения играет ключевую роль в создании качественного пользовательского опыта. История развития систем измерений для. . .
Как изменить адрес удалённого репозитория (origin) в Git
InfoMaster 20.01.2025
В терминологии Git термин origin является стандартным именем для основного удаленного репозитория, с которым взаимодействует локальная копия проекта. Когда разработчик клонирует репозиторий с. . .
Как переместить последние коммиты в новую ветку (branch) в Git
InfoMaster 20.01.2025
При работе над проектом часто возникают ситуации, когда необходимо изолировать определенные изменения от основной линии разработки. Это может быть связано с экспериментальными функциями, исправлением. . .
Как вернуть результат из асинхронной функции в JavaScript
InfoMaster 20.01.2025
Асинхронное программирование представляет собой фундаментальную концепцию в JavaScript, которая позволяет выполнять длительные операции без блокировки основного потока выполнения программы. В. . .
Какой локальный веб-сервер выбрать
InfoMaster 19.01.2025
В современной веб-разработке локальные веб-серверы играют ключевую роль, предоставляя разработчикам надежную среду для создания, тестирования и отладки веб-приложений без необходимости использования. . .
Почему планшеты и iPad уже не так популярны, как раньше
InfoMaster 19.01.2025
Эра революционных инноваций История планшетов началась задолго до того, как эти устройства стали привычными спутниками нашей повседневной жизни. В начале 1990-х годов появились первые прототипы,. . .
Как самому прошить BIOS ноутбука
InfoMaster 19.01.2025
BIOS (Basic Input/ Output System) представляет собой важнейший компонент любого компьютера или ноутбука, который обеспечивает базовое взаимодействие между аппаратным и программным обеспечением. . .
Какой Linux выбрать для домашнего компьютера
InfoMaster 19.01.2025
Современные реалии выбора операционной системы В современном мире выбор операционной системы для домашнего компьютера становится все более важным решением, которое может существенно повлиять на. . .
Как объединить два словаря одним выражением в Python
InfoMaster 19.01.2025
В мире программирования на Python работа со словарями является неотъемлемой частью разработки. Словари представляют собой мощный инструмент для хранения и обработки данных в формате "ключ-значение". . . .
Как без исключения проверить существование файла в Python
InfoMaster 19.01.2025
При разработке программного обеспечения на Python часто возникает необходимость проверить существование файла перед выполнением операций с ним. Это критически важная задача, которая помогает избежать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru