Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

неприодалимый глюк погите разобраться в VCL


Страницы:   1 2 3

koha! ©   (2008-10-21 04:40:00) 

Описание глюка: Есть на форме ListView у него свойства "anhors" akLeft=true, akRight=true, akTop=true, akBottom=true; то есть компонент должен растягиваться во всю вместе с формой, но этого не происходит, то он растянется, то нет,  повисает и  при чем основательно,
http://webfile.ru/2329861- выглядит это так, еще может вообще свернуться в комок или маленькое окошечко 100х100 пиксел где-то, по ни понятным мне причинам.  
Как этот глюк преодолеть? Писано на ВDS2006.


Сергей М.   (2008-10-23 08:41:00) [1]

Кр.того, см. OnDataHint


Сергей М.   (2008-10-23 08:40:00) [2]


> Ну и ничего нет


Читаем справку:

OnData Occurs immediately before an item is displayedin the list view control.

Set the Count when the list view's OwnerData property is true to set the virtual number of items that the control contains


koha!   (2008-10-23 01:37:00) [3]


> Сергей М. ©   (22.10.08 19:13) [42]
> > в каких случаях он вызывается? так же как и CustomDrawДа


Чего то не заметел. создал пустую procedure
TMainFrm.LVData(Sender: TObject; Item: TListItem);
begin
 SendDebugMsg('LVData');
end;

Ну и ничего нет... два раза сработало и то непонятно на какие события не связанные с перерисовкой контрола.


Сергей М.   (2008-10-22 19:13:00) [4]


> в каких случаях он вызывается? так же как и CustomDraw


Да


clickmaker   (2008-10-22 11:18:00) [5]

можно ведь DBGrid взять. Там комбики без проблем можно использовать, а внешний вид вполне можно и под листвью подогнать, в т.ч. и иконки рисовать


clickmaker   (2008-10-21 17:11:00) [6]

> Ну если скрола нет то их все равно передвигать нуно, так
> как они не стоят наместе, если я фору буду растягивать и
> наоборот

OnResize
HDN_TRACK


koha!   (2008-10-21 17:05:00) [7]


> clickmaker ©   (21.10.08 14:33) [34]
> > ответ на скролл, - может быть, что список не полный и
> скрола > просто нетну так в этом случае и передвигать их
> не надопо-любому, наворачивать такой зубодробительный код
> в событие перерисовки - не есть хорошо


Ну если скрола нет то их все равно передвигать нуно, так как они не стоят наместе, если я фору буду растягивать и наоборот..., сами они следовать за колонками не умеют..


> Сергей М. ©   (21.10.08 14:41) [36]
> > что его вызывает?Кого "его" ?


Т.е. имел ввиду onData - событие,  в каких случаях он вызывается? так же как и CustomDraw


koha!   (2008-10-21 16:47:00) [8]


> Anatoly Podgoretsky ©   (21.10.08 15:35) [37]
> > koha!  (21.10.2008 12:34:20)  [20]Главная часть самолета
> парашут.


Всегда поражался, у вас ум острый как лезвие, свалили меня на повал с одной фразы.... я поднял лапки у уже сдаюсь..... :-)


Anatoly Podgoretsky   (2008-10-21 15:35:00) [9]

> koha!  (21.10.2008 12:34:20)  [20]

Главная часть самолета парашут.


Сергей М.   (2008-10-21 14:41:00) [10]


> что еговызывает?


Кого "его" ?


koha!   (2008-10-21 14:39:00) [11]


> Сергей М. ©   (21.10.08 14:09) [32]
> > koha!   (21.10.08 14:06) [31]Читай про св-во OwnerData
> пока не поздно


Пока еще не разобрался с ownerdata но уж разбираюсь, при  том методе что ранее использоваль у меня взникал еще один глюк: в момент прорисовки любого из комбобокса вызывалась CustomDraw, который в свою очередь снова прорисовывал контрол и так возникал бесконечный цикл, который все вешал, а как это обстоят дела с ownerdata по какому событию он возникает т.е. что его вызывает?


clickmaker   (2008-10-21 14:33:00) [12]

> ответ на скролл, - может быть, что список не полный и скрола
> просто нет

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


koha!   (2008-10-21 14:17:00) [13]


> Johnmen ©   (21.10.08 13:30) [28]
> Дело в том, что подтормаживаем на ожидании ответа от SendMessage(LV.
> Handle, LVM_GETCOUNTPERPAGE, 0, 0), когда в очереди полно
> других сообщений, типа WM_PAINT.Комментарь как хочешь вызов
> ListItemIsVisible и смотри...


SendMessage(LV.Handle, LVM_GETCOUNTPERPAGE, 0, 0) - забил ее временно, глюки не исчезают


> clickmaker ©   (21.10.08 13:30) [27]
> > [25] koha!   (21.10.08 13:18)двигаешь комбики при каждой
> перерисовке?а почему не в ответ на скролл, к примеру?и что
> - они должны быть видны всегда, а не только в момент выбора?
>


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


Сергей М.   (2008-10-21 14:09:00) [14]


> koha!   (21.10.08 14:06) [31]


Читай про св-во OwnerData пока не поздно


koha!   (2008-10-21 14:06:00) [15]


> Сергей М. ©   (21.10.08 13:48) [30]
> > koha!Тебя поджидает засада - с увеличением кол-ва элементов
> списка его перерисовка (связанная с чем угодно, в т.ч. с
> изменением размера кл.области контрола) будет происходить
> все медленнее и медленнее.


по этому поводу уже думал не раз, и думаю, что необходимо  сделать так, что бы перерисовывалить только те которые находятся в области видимости, а это на сколькоэкран позволяет, ну не более 40 контролов иожно определять так:  получи верхний видимый + количество видимых вот и можно в цикле перерисовать например от 31 до 57 те что видимы.


Сергей М.   (2008-10-21 13:48:00) [16]


> koha!


Тебя поджидает засада - с увеличением кол-ва элементов списка его перерисовка (связанная с чем угодно, в т.ч. с изменением размера кл.области контрола) будет происходить все медленнее и медленнее.


koha!   (2008-10-21 13:47:00) [17]


> Сергей М. ©   (21.10.08 13:25) [26]
> Если закомментировать тело обработчика LVCustomDraw,
>  то якорная ситуация меняется ?


якорная ситуация => исчезло


Johnmen   (2008-10-21 13:30:00) [18]

Дело в том, что подтормаживаем на ожидании ответа от SendMessage(LV.Handle, LVM_GETCOUNTPERPAGE, 0, 0), когда в очереди полно других сообщений, типа WM_PAINT.
Комментарь как хочешь вызов ListItemIsVisible и смотри...


clickmaker   (2008-10-21 13:30:00) [19]

> [25] koha!   (21.10.08 13:18)

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


Сергей М.   (2008-10-21 13:25:00) [20]


> только пожалуйста не смейтесь


Что ж ты такой закомплексованный-то ?)

Если закомментировать тело обработчика LVCustomDraw, то якорная ситуация меняется ?


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо