Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> мерцание в ListView, Как убрать??? 
:(
    Опции темы
ne0n
  Дата 3.6.2007, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

Репутация: 1
Всего: 11



Вообщем ситуация такова, в лист вью периодически должна обновляться информация(ну примерно 1 сек), ну я это сделал по таймеру, и каждый раз в обработчике таймера ощищаю лист вью,а затем вызываю процедуру которая сообственно заполняет его заново, при этом возникает эффект мирцания, и при этом если выделить какуюту строку(ViewStyle=vsReport) то после выполнения кода таймера она становеться уже не выделенной. вообщем подскажите как избавиться от этих недостатков или как можно это переделать  smile 
PM MAIL ICQ   Вверх
mr.Anderson
Дата 3.6.2007, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



Код

ListView1.DoubleBuffered = True;



--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
skyboy
Дата 3.6.2007, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 4
Всего: 260



Цитата(ne0n @  3.6.2007,  15:20 Найти цитируемый пост)
в обработчике таймера ощищаю лист вью,а затем вызываю процедуру которая сообственно заполняет его заново

Цитата(ne0n @  3.6.2007,  15:20 Найти цитируемый пост)
после выполнения кода таймера она становеться уже не выделенной

чему удивляться? ты же удалил строку, которая была выделенной. Как комп за тебя догадается, какую строку надо заново выделить? установить выделенную строку можно и вручную - либо через Selected, либо через itemIndex
PM MAIL   Вверх
sw04
Дата 3.6.2007, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 372
Регистрация: 22.1.2007
Где: Ufa

Репутация: нет
Всего: 18



ne0n, может надо выключить таймер когда получаешь фокус на ListView? 
и зачем перестраивать содержимое так быстро? Пользователь выбрал одно, через секунду его выделенный элемент имеет другое значение.


--------------------
<удалено администрацией>
PM   Вверх
Bose
Дата 4.6.2007, 03:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



Цитата(ne0n @  3.6.2007,  16:20 Найти цитируемый пост)
вообщем подскажите как избавиться от этих недостатков или как можно это переделать

не делать полной очистки ListView.



PM MAIL WWW Skype   Вверх
MetalFan
Дата 4.6.2007, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



используй Listview в Virtual режиме. обновляешь связанные данные, потом Listview.Refresh и вуаля


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Rennigth
Дата 4.6.2007, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 49
Всего: 76



ne0n, 
На счет выделения сам недавно сталкивался с этой проблемой.
Самый лутший способ это юзать примерно вот такую:
Код

  with SomeListView do
    if Items.Count > 0 then
    begin
      if CanFocus then
        SetFocus;
      ItemIndex := SomeIndex; //SomeIndex сохраняй перед обновлением списка
      Items[SomeIndex].MakeVisible(True);
    end;

штуку.

А насчет обновления, ты делаешь Items.BeginUpdate/Items.EndUpdate?

Это сообщение отредактировал(а) Rennigth - 4.6.2007, 11:47


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
MetalFan
Дата 4.6.2007, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



кстати, а как очищаешь? поэлементно?
надо использовать макрос
ListView_DeleteAllItems
из CommCtrl


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
ne0n
Дата 5.6.2007, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

Репутация: 1
Всего: 11



Цитата(MetalFan @  4.6.2007,  12:43 Найти цитируемый пост)
кстати, а как очищаешь? поэлементно?надо использовать макросListView_DeleteAllItemsиз CommCtrl

вот так почему нельзя?
Код

lv.Items.Clear;


ща попробуем то что вы мне насоветовали.... smile 


Это сообщение отредактировал(а) ne0n - 5.6.2007, 17:15
PM MAIL ICQ   Вверх
ne0n
Дата 7.6.2007, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

Репутация: 1
Всего: 11



Блин че то ни фига не получаеться, мне понравилось два способа, первый это приостанавливать таймер во время работы с содержимым лист вью(но существует вероятность что пока таймер приостановлен данные изменяться вообщем тоже не айс), второй это запоминать индекс выделенной строки, но этот вариан не катит если у меня меняеться количество строк :( Мож че подскажите еще!!! Rennigth,  как ты справился с этим?
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.2745 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.