Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: VB6. Проблемы с отрисовкой комбобокса.  (Прочитано 13985 раз)
0 Пользователей и 1 Гость смотрят эту тему.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« : 15-08-2007 13:36 » 

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

Вопросы такие:
1. Решается ли это в рамках VB6, или нужно переходить на версию посвежее?
2. Наблюдал ли кто такой дефект в VB.NET?

В атаче пример дефекта.

* combo.png (6.71 Кб - загружено 888 раз.)
« Последнее редактирование: 15-08-2007 13:50 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #1 : 16-08-2007 06:08 » 

может сделать Refresh формы?
Записан

I Have Nine Lives You Have One Only
THINK!
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 16-08-2007 07:03 » 

Эффект проявляется не каждый раз и не понятно, при каких условиях. Чтобы сделать скриншот к теме я минуты две тыкал форму. У кого-то он проявляется часто, у меня редко.

HandKot, спасибо - я тоже так думаю. Пока не знаю, при каком событии можно сделать рефреш. Попробую на lostfocus комбика повесить.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #3 : 16-08-2007 08:06 » 

а СП последний (кажется 6ой) стоит?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 16-08-2007 08:30 » 

Джон, компоненты "штатные" - программка использует COM-объекты ОС. ОС повсеместно стоит XP Pro SP2. Студия у меня 6-я с SP5.

Поставил VS6SP6 - не смог добится глюка на своей машине. Посмотрим, что будет дальше...
« Последнее редактирование: 16-08-2007 09:22 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 16-08-2007 10:29 » 

Нашли систему!
При одних условиях список в комбике длинее, чем при других. Открываем и закрываем сперва длинный список, потом меняем условия и открываем короткий. Первым делом он рисует рамку и заливку как будто список остался длинным, а потом поверх рисует еще раз короткий список.

В аттаче картинка только что открывшегося комбика.

Refresh формы ничего не дал ни при GotFocus, ни при LostFocus комбика.

* combo2.png (1.41 Кб - загружено 887 раз.)
« Последнее редактирование: 16-08-2007 10:45 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #6 : 16-08-2007 11:26 » 

может где то внутри в контроле не уменьшается автоматом высота выпадающей части, и как-то надо сбрасывать её в ноль , когда список свернули ?
Записан

RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 16-08-2007 12:05 » 

Отдельного параметера высоты для открытого комбика нет. Если поменять Height, то измениться размер закрытого контрола. VB-компоненты очень бедны по части управления.
Подозрение вызывают след. свойства: Index, ListIndex, NewIndex, TopIndex. Если с Index ясно, то остальные пока не ясны...
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #8 : 20-08-2007 06:10 » 

Попробуйте поиграться со св-вом ListCount
а МСДН ничего по этому поводу не говорит?
Записан

I Have Nine Lives You Have One Only
THINK!
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 20-08-2007 08:33 » 

В MSDN про VB6 уже ничего не найти - спошь VB.NET и сравнение его с VB6. Студия у меня коцаная стоит - без MSDN.

Я выполняю очистку и заполняю заново комбик. Соотв., ListCount при этом меняется. Поле это readonly.

Я пробовал анализировать ситуацию, при которой происходит эта хрень.
1. Фокус в комбике Streets. Выбираю другое значение.
2. Кликаю на комбик Builds.
3. Streets теряет фокус, проверяет введенное и перезаливает список домов в Builds.

Видимо, Builds получает фокус и отрисовывается раньше, чем Streets получает событие LostFocus...
Какое же Г этот VB6... Пробовал - не понравилось
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #10 : 20-08-2007 13:45 » 

насколько я понял, то комбик Builds обновляет свои данные на св-ве ЛостФокус комбика Streets
может попробовать заливать комбик Builds  на собитиях Change или Exit комбика Streets ?
ЗЫЖ в любов случае не будет лищней перезаливки комбика Builds
вроде так(проверить не могу Басика нет Жаль  )
Записан

I Have Nine Lives You Have One Only
THINK!
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 20-08-2007 14:04 » 

События Exit для комбика нет. Change не подходит - пользовательский интерфейс программы задан не мной и вносить разнобой не хочется (конечно, если другого выхода не будет...). Программа существует и давно используется, а я правлю лишь customization dll, которая может подменять какие-либо процедуры.
Выбор LostFocus, я так думаю, связан прежде всего с тем, что софтина построена на клиент-сервер с исп. DCOM - очень медленно все это работает.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines