2 / 2 / 0
Регистрация: 16.02.2017
Сообщений: 117
1

Корректное отображение списка изменяющего размер при пересечении с другим списком

08.03.2017, 07:35. Показов 1494. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня,

Есть список изменяющий высоту при наведении (из этой темы) и все хорошо до момента когда он перекрывает другой список.
Становится невозможно выбрать что либо из той части под которой находится другой список (фокус при клике переходит на список слоем ниже). Иногда раскрывающийся список просто скрывается за нижерасположеным.

Как быть, можно ли исправить такое поведение?
Миниатюры
Корректное отображение списка изменяющего размер при пересечении с другим списком  
Вложения
Тип файла: zip intersecting lists.zip (24.2 Кб, 4 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.03.2017, 07:35
Ответы с готовыми решениями:

Связать каждую ячейку списка с другим списком
Помогите пожалуйста. перечитала кучу информации, но поскольку VBA не владею вообще, то не смогу...

Переименование элементов списка в соответствии с другим списком
Есть список, содержащий номера вида preds И список содержащий слова, на которые эти номера...

Убрать из одного списка все совпадения с другим списком
У меня есть список данных: List<Data> DataList; public class Data { public int...

Отображение списка в зависимости от элемента в поле со списком
Здравствуйте. Помогите пожалуйста решить проблему. На форму поместил элементом "Поле со списком" и...

15
9703 / 4890 / 1191
Регистрация: 05.10.2016
Сообщений: 13,761
Записей в блоге: 1
08.03.2017, 08:20 2
И родилась такая мысля:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Private h01 As Integer
 
Private Sub Form_Load()
    h01 = Me.lstAutoHeight.Height
End Sub
Private Sub lstAutoHeight_DblClick(Cancel As Integer)
    Me!lst2.Visible = True
    Me!lst2.SetFocus
    Me.lstAutoHeight.Height = h01
    Me!lst3.Visible = True
End Sub
 
'-------------------------
'--- вариант 1 от Capi ---
'-------------------------
Private Sub lstAutoHeight_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Me.ActiveControl.Name = "lstAutoHeight" Then
        If Me!lstAutoHeight.Height <> Me!lstAutoHeight.ListCount * 300 Then
            Me!lstAutoHeight.Height = Me!lstAutoHeight.ListCount * 300
            Me!lst2.Visible = False
            Me!lst3.Visible = False
        End If
    End If
 
End Sub
Хотя зачем? - когда можно как в форме "List02", но может я чего не знаю ...
Вложения
Тип файла: zip intersecting lists_v02.zip (26.7 Кб, 3 просмотров)
0
9703 / 4890 / 1191
Регистрация: 05.10.2016
Сообщений: 13,761
Записей в блоге: 1
08.03.2017, 08:38 3
Ой!
(Простите)
Файл не получился чего то - форму "List02" лучше смотреть тут:
Вложения
Тип файла: zip intersecting lists_v03.zip (34.3 Кб, 5 просмотров)
0
2 / 2 / 0
Регистрация: 16.02.2017
Сообщений: 117
08.03.2017, 08:49  [ТС] 4
Вариант с возвращение размера к изначальному по даблклику любопытный, но проблема в том что по сингл-клику в списке выделяются элемены (мультиселект) и их значения потом сохраняются. Ну и это слегка выбивается из привычного юзер экспириенса когда список изменяет размер при on/off_hover. Первое о чем я подумал бы что что-то сломалось, а что оно так сворачивается вряд ли додумался бы без доп указаний над списком )

Зачем? Просто на форме довольно много всего в том числе и разных списков (которые не стоит выносить в отдельные формы) и чтобы не скролить в узком окошке, он разворачивается.
0
9703 / 4890 / 1191
Регистрация: 05.10.2016
Сообщений: 13,761
Записей в блоге: 1
08.03.2017, 09:00 5
Цитата Сообщение от userzero Посмотреть сообщение
Просто на форме довольно много всего в том числе и разных списков (которые не стоит выносить в отдельные формы)
Спасибо за картинку = ПОНРАВИЛОСЬ!
Что то в этом есть.

Знакома ситуёвина ....
Выкручиваюсь по разному - иногда открытием формы со списком + дв. клик = вбивка данных (но это "тяжёлый" вариант)
Мыслей больше нет ...
0
2 / 2 / 0
Регистрация: 16.02.2017
Сообщений: 117
08.03.2017, 09:05  [ТС] 6
И вам спасибо что пытались )
Как вариант, можно конечно просто увеличивать высоту списка на чуть чуть, чтобы не доставал до ниже нижележащего. Но возможно у кого-нибудь будут идеи..

зы. картинка да, жизненная.
0
шапоклякистка 8-го дня
3674 / 2234 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
08.03.2017, 09:10 7
userzero, обычные способы борьбы за место на экране такие:

1) по двойному клику на элементе, который пользователь хотел бы расширить, открывается модальная форма, содержащая этот же эелемент с этими же данными и выбором. Когда пользователь закончил работу с элементом - закрывает модальную форму и работает дальше с основной.

2) элементы можно расположить на вкладках, это делает площать формы значительно больше, можно расположить так, чтобы ничто ничего не перекрывало и было всегда большим.

3) если уж так нравиться менять размеры элемента сразу на форме - сделайте рядом с элементов "кнопки" развернуть и свернуть (не обязаны быть именно кнопками, могут быть надписи или картинки или одна двухпозиционная кнопка).
1
2 / 2 / 0
Регистрация: 16.02.2017
Сообщений: 117
08.03.2017, 09:27  [ТС] 8
Цитата Сообщение от texnik-san Посмотреть сообщение
обычные способы борьбы за место на экране такие
Так точно, и они почти все уже применяются в разных местах проекта.

Просто не хочется лишний раз на контролы тыкать раз есть on_hover. Хотя готов смириться с тем что так его использовать не выйдет.
0
шапоклякистка 8-го дня
3674 / 2234 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
08.03.2017, 09:28 9
Ну и свой вариант реации на движение мышки: если убрать мышку с развернутого списка - он свернется.
Вложения
Тип файла: rar intersecting lists_v04.rar (40.3 Кб, 6 просмотров)
0
2 / 2 / 0
Регистрация: 16.02.2017
Сообщений: 117
08.03.2017, 09:58  [ТС] 10
Цитата Сообщение от texnik-san Посмотреть сообщение
Ну и свой вариант
Да, так уже ближе к истине. А перерисовку/мигание когда просто елозишь мышкой по форме можно частично убрать добавив Application.Echo False/True в Detail_MouseMove.

Единственный момент, я проглядел и не помянул, что в варианте от Eugene-LS, он выровнял ширину всех списков, а она неспроста такая была кривенькая как на первой картинке)) В реальности нижние списки раза в два шире чем верхний разврачивающийся и их скрытие бросается в глаза.
0
9703 / 4890 / 1191
Регистрация: 05.10.2016
Сообщений: 13,761
Записей в блоге: 1
08.03.2017, 10:05 11
Цитата Сообщение от userzero Посмотреть сообщение
В реальности нижние списки раза в два шире чем верхний разврачивающийся и их скрытие бросается в глаза.
Вы уж извините меня пожалуста, что я по недоумию своему отвлёк ваше время.
Ну... не знал я таких тонкостей.
Прошу великодушно простить меня.
0
2 / 2 / 0
Регистрация: 16.02.2017
Сообщений: 117
08.03.2017, 10:13  [ТС] 12
Цитата Сообщение от Eugene-LS Посмотреть сообщение
Прошу великодушно простить меня.
Да бросьте. На самом деле это я прощения прошу что пример не очевидный в этом месте и в тексте не упомянута эта особенность.
0
шапоклякистка 8-го дня
3674 / 2234 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
08.03.2017, 10:58 13
Цитата Сообщение от userzero Посмотреть сообщение
и их скрытие бросается в глаза.
Ну закомментируйте все строки, содержащие .Visible, делов-то.
0
2 / 2 / 0
Регистрация: 16.02.2017
Сообщений: 117
08.03.2017, 11:29  [ТС] 14
Цитата Сообщение от texnik-san Посмотреть сообщение
Ну закомментируйте все строки, содержащие .Visible
так тогда мы вернемся к тому что было в самом начале - некорректному поведению расширяемого списка (нельзя выбрать в тех частях что находятся поверх других списков).
0
шапоклякистка 8-го дня
3674 / 2234 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
08.03.2017, 12:04 15
Лучший ответ Сообщение было отмечено userzero как решение

Решение

Тогда у вас нет другого выхода, кто открытия расширенного списка все-так в модальной форме. Потому что элемент сделать модальным нельзя.
0
2 / 2 / 0
Регистрация: 16.02.2017
Сообщений: 117
08.03.2017, 12:11  [ТС] 16
Ок, спасибо.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.03.2017, 12:11
Помогаю со студенческими работами здесь

Корректное отображение числа при переводе во Float
Всем доброго здравия. Как мне корректно перевести число из строки во Float: a =...

Корректное отображение сайта при защищенном протоколе
Здравствуйте! такая проблема - почему сайт отображается некорректно при указании защищенного...

Контакты outlook 2013 - отображение списка контактов единым списком
Добрый день, подскажите пожалуйста, в контактах outlook 2013 есть несколько разных папок,...

Отображение данных при запуске формы содержащей фильтр по полю со списком
Доброго дня. Такой вопрос. Имеется База данных с формой в которую вставлен фильтр по полю со...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru