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

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

Падение TTreeView при смене пользователя


Дмитрий Белькевич ©   (28.02.18 14:27

Всем доброго дня. Может кто знает, почему падает TTreeView при смене пользователя.
Вот тестовый-проект:
http://www.sql.ru/forum/actualfile.aspx?id=21224976
Delphi XE6, операционка - точно пробовали под 7 Ultimate.
Достаточно переключиться ненадолго на другого пользователя и назад.
Спасибо за идеи.


sniknik ©   (28.02.18 15:37[1]

http://www.sql.ru/images/hotlinking.gif


Rouse_ ©   (28.02.18 18:13[2]

Ну вот на скорую под отладчиком погонял
http://rouse.drkb.ru/tmp/123.gif


Дмитрий Белькевич ©   (02.03.18 14:58[3]

Насколько выяснилось на sql.ru, винда при смене пользователя пересоздаёт дерево. Полностью или частично. Само собой - все ссылки (указатели) становятся невалидными. Как я понимаю, внутри VCL в том числе.
Переложил проект:
https://yadi.sk/d/5S4se_-R3SwQTY


а ларчик просто открывался ...   (02.03.18 17:39[4]

procedure TForm.TestButtonClick(Sender: TObject);
begin
PostMessage(Connections.Handle, CM_SysColorChange, 0, 0);                        // -> RecreateWnd
end;

procedure TForm.FormCreate(Sender: TObject);
begin
Connections.Items.Clear;
Connections.Items.AddFirst(nil, 'Top');                                          // !
Connections.Items.AddChildFirst(Connections.Items[0], 'Active Sessions');
Connections.Items.AddChild(Connections.Items[0], 'History');
Connections.Items[0][0].ImageIndex := {FTVImageIndexes.ActiveSessions}5;
Connections.Items[0][0].SelectedIndex := {FTVImageIndexes.ActiveSessions}5;
Connections.Items[0][1].ImageIndex := {FTVImageIndexes.SessionHistory}6;
Connections.Items[0][1].SelectedIndex := {FTVImageIndexes.SessionHistory}6;
Connections.DoubleBuffered := True;
end;

procedure TForm.TimerTimer(Sender: TObject);
begin
 Inc(FCount);
 Connections.Items.BeginUpdate;
 Connections.Items.AddChildObject(Connections.Items[0][0], 'test' + FCount.ToString, nil);
 while Connections.Items[0][0].Count > 3 do Connections.Items[0][0][0].MoveTo(Connections.Items[0][1], naAddChild);
 while Connections.Items[0][1].Count > 5 do Connections.Items[0][1][0].Delete;
 Connections.Items.EndUpdate;
end;


Rouse_ ©   (02.03.18 18:42[5]

Вообще забавно конечно, я свой проект под фастсвичем не тестировал, чую рога повылазят такого плана в самых неожиданных местах


Дмитрий Белькевич ©   (02.03.18 20:00[6]

Вообще обхохочешься :) Не только фастсвич. Заход по RDP тоже подвержен (мой случай). Фастсвич просто проще вызвать.


Rouse_ ©   (03.03.18 08:37[7]

RDP у нас запрещен, кроме терминальной версии, но его я вроде гонял - ошибок такого плана небыло (иначе насовали бы полный рот огурцов - его госы использую типа Русгидро/Газпром - у этих не замаешь)


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

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

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







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


Наверх

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