|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
||||||
Разноцветнопульсирующий ListBox04.09.2012, 15:15. Показов 4682. Ответов 5
Метки нет (Все метки)
Господа, вот бьюсь тут над развеселым подсвечиванием строк в ListBoxe. В интернете куча однотипной информации по этому поводу и при чем в основном на делфях. По образу и подобию получилось соорудить следующее:
Свойство Style у все того же ListBox-а установлено в lbOwnerDrawFixed Результатом всего этого действительно является вывод разноцветных строк. Но вот только при первом отображении можно наблюдать, что строка с начальной цифрой 3 выделилась цветом, хотя в обработчике вроде написано искать 2 (самая левая миниатюра). Дальше больше! Передвигая позицию курсора вверх-вниз, видим, что строки начинают выделяться вообще непонятным образом. И продолжая уже беспощадно хаотично тыкать мышкой в строки сходящего с ума ListBoxa добиваемся полной инверсии цветового выделения. Отсюда закономерный вопрос: может я где-то ошибся? Подскажите пожалуйста. И еще вопрос вдогонку: по каким конкретно событиям обновляется ListBox? Сдается мне, что тут не все так просто.
0
|
||||||
| 04.09.2012, 15:15 | |
|
Ответы с готовыми решениями:
5
При выделении строки в ListBox отображать ее в Edit, где можно отредактировать и заменить в ListBox-е Перенести данные из ListBox на форме в Listbox на PageСontrol Возможно ли при выборе через opendialog заносить в ListBox имена файлов, а при чтении из ListBox получать путь к файлам? |
|
0 / 0 / 0
Регистрация: 30.08.2012
Сообщений: 11
|
||||||
| 04.09.2012, 16:04 | ||||||
|
Ну во первых:
Во вторых, ты выбрал строчку (мышкой) и тут же ищешь по всему листбоксу первый символ. Вдумайся в логику: Я программа, я выделила строчку, начинаю поиск, нашла выделенную строчку, проверила = "нет!", на первом месте "1" не "2", значит начинаю выполнять "else", меняю цвет у всего листбокса (именно у всего, так как ты обращаешься к свойству не строки а бокса целиком). 1)Я бы писал это не в событие выбора строчки, а где ни будь в создании листбокса или в его заполнении. 2)Если я правильно помню "Rect" это прямоугольник выделения (кароче строка которая щас выделена), вот ему и надо цвет менять.
0
|
||||||
|
Супер-модератор
|
||||||||
| 04.09.2012, 16:40 | ||||||||
Решение - тривиально:
1
|
||||||||
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
||||||||||||||||
| 04.09.2012, 16:54 [ТС] | ||||||||||||||||
|
Так.
Вроде бы событие ListBox1DrawItem происходит при каждом изменении самого ListBox-а. Но что-то мне подсказывает, что пресловутое изменение это не только добавление, удаление или отображение в нем чего-либо. И да, я меняю цвет у всего ListBox-а. Всмысле он меняется у всего. Когда же FillRect, согласно справке, должен отрисовывать прямоугольник. Хотя по той же справке как-то туманно написано про верхний и левый угол. Это получается что он рисует прямоугольник от заданных границ слева и сверху до бесконечности вправо и вниз? Я предполагаю, что
В сам метод
Но по скольку у меня что-то не правильно работает, значит где-то я рассуждаю неправильно. Добавлено через 2 минуты UI, чтоб я без тебя делал. ![]() Добавлено через 1 минуту UI, а что ж он без канвы пытался такого замутить? Просто уже интересно даже. Добавлено через 10 минут Просто наблюдение: при выставлении в Style свойств lbOwnerDrawFixed и lbOwnerDrawVariable выделение работает одинаково и корректно.
0
|
||||||||||||||||
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
||||||
| 11.01.2013, 15:56 [ТС] | ||||||
|
В продолжении темы. Пытаюсь сделать, чтобы по разноцветно выделенному листбоксу можно было бы передвигаться выделением. Не просто курсором, а чтобы строка, в которую ткнули, подсвечивалась.
На миниатюрах ниже слева просто отображенный список, справа натыканый мышом на первые три строки. Как было обнаружено, событие DrawItem обрабатывается раньше чем присваивается ItemIndex. То есть DrawItem в своем теле еще не знает значение выбранной строки листбокса. Ровно как ItemIndex заполняется только после завершения DrawItem-а. (даже больше: DrawItem обрабатывается раньше чем MouseDown) Вот собственно вопрос в том, как можно опередить DrawItem? Ну или как-то по другому сделать.
0
|
||||||
|
Супер-модератор
|
||||||
| 12.01.2013, 15:17 | ||||||
|
SatanaXIII, проверяй, выделена ли строка, которая сейчас рисуется, или нет, через State.Contains(odSelected). Вот так:
1
|
||||||
| 12.01.2013, 15:17 | |
|
Помогаю со студенческими работами здесь
6
Выбранный элемент ListBox одной формы перенести в ListBox на другую форму Копировать выделенные строки из listbox в listbox с большим кол-вом колонок MVVM. Как прибиндить TextBox к вложенному ListBox в ListBoxItem основного ListBox В ListBox вводится последовательность строк. Вывести их в ListBox в обратном порядке ListBox как сделать что бы элемент ListBox выполнял действия Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|