Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник
Коллекция курьезных вопросов из форумов
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

Даже не знаю где спросить, потому тут. Про TComboBox


ВладОшин ©   (11.09.20 13:04

Есть наследник, сообщения не перекрыты.
Просто внедрены некоторые private переменные для бизнеса. И на OnChage повешен код

Симптомы - при выборе из выпадающего списка значения, вдруг становится выбрано другое, обычно, первая строка
Отключил колесо мышки, повесил лог на кнопки
На OnChage повесил запись в лог.

В логе происходит OnChage, потом без видимых причин, еще раз он же происходит

OnChage
OnChage
"одновременно", даже gettickcount не меняется

Работа происходит на виртуалках. Оператор подключается по RDP или wmware-машину, ОС на виртуалках - win7

Сам пробовал несколько раз - повторить не удалось.

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

я уже сделал от отчаяния восстановление значения, если быстро сменилось

procedure TqComboBox.CBChange(Sender: TObject);

 AddToLog('*debug      * TqComboBox.CBChange Text=' + Text);
 MessageStack.ClearMsgStack; // это другое, не про те Message в смысле win
 if GetTickCount - FLastTickCount < 500 then
 begin
   AddToLog('*debug      * TqComboBox.CBChange Cancel change by FLastTickCount');
   ItemIndex := FLastIdx;
   Text :=  FLastText;
   Exit;
 end;
 FLastTickCount := GetTickCount;
 FLastIdx := ItemIndex;
 FLastText:= Text;


но пишут, что опять такое бывает. Лог правда еще не смотрел
Что может быть?


Inovet ©   (11.09.20 14:09[1]

Может, мышку поменять? Физическую.


ВладОшин ©   (11.09.20 14:46[2]

Думал..
а почему же тогда смена виртуалки помогает?

а, может, соединение лагает как-то так хитро..
Да вообще бред потому что. Видео даже прислали вот. Там видно, как берет 5-6 строку, а текст - первая строка

в логе
12:44:26 #      15 # *debug      * TqComboBox.CBChange Text=Собственник
12:44:26 #       0 # *debug      * TqComboBox.CBChange Cancel change by FLastTickCount
12:44:26 #       0 # *debug      * TqComboBox.CBChange Text=Собственник
12:44:26 #       0 # *debug      * TqComboBox.CBChange Cancel change by

12:44:26 #      15 #
время # тиков прошло с предыдущей записи#


ВладОшин ©   (11.09.20 14:59[3]

блин, так не onchange надо юзать, а сам change перекрыть..
ведь слделал дома правильно, а на работе не туда написал..

Это не решает причину, но  проблему побороть должно


manaka ©   (11.09.20 16:39[4]


> Это не решает причину, но  проблему побороть должно

Это без пол-литры не понять...


ВладОшин ©   (11.09.20 17:28[5]

https://www.youtube.com/watch?v=6hi0etcrqO8&t=4048
Ну что не понятного было ?! ))

Проблема останется не выясненной, но такой же прием в перекрытом методе Change ее погасит.
а чаще чем раз в пол-секунды все равно не надо выбирать нормальному человеку


manaka ©   (11.09.20 22:45[6]

Как в нашей рекламе: "Это лекарство великолепно борется с симптомами болезни!".
А лечить-то надо болезнь.


Inovet ©   (11.09.20 22:47[7]

> [6] manaka ©   (11.09.20 22:45)

Та ладно, симтомы тоже надо купировать, чтобы не помереть или осложнения не получить. Вот не забыть после о причинах... Но это высокая наука.


Inovet ©   (11.09.20 23:10[8]

Я сначала за смену мышки, на заведомо рабочую в таких же условиях. А дальше по усложнению.


Inovet ©   (11.09.20 23:18[9]

Это такой технарский подход, оправданный в большинстве случаев. Есть другой подход всё в целом понять и выяснить, но ещё никто его не осилил.


Германн ©   (12.09.20 03:03[10]


> ВладОшин ©   (11.09.20 13:04)
>
> Есть наследник, сообщения не перекрыты.

Код в студию!
Отвыкли вы от нормального общения на программистских форумах. Телепатов на них как не было, так и до сих пор нет.


ВладОшин ©   (12.09.20 14:44[11]

не могу код дать, даже если вырежу больше половины

Все, вроде не жалуются, похоже помогло.
Если что выясню - подниму тему потом )


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо