OwnerDraw ListView

3 отговора 144 прегледа
#1

OwnerDraw ListView

Искам да сложа TGauge в една от колоните на ListView s viewstyle := vsReport.
Създавам го в
Item.Data := TGauge.Create(listView);
TGauge ( Item.Data ).Parent := ListView1;
След това му сетвам координатите

rec := li.DisplayRect( drBounds );

TGauge( li.Data ).SetBounds ( rec.Left + ListView1.Column[0].Width + 1,
li.Top + 1,
ListView1.Column[1].Width - 2,
rec.Bottom - rec.Top - 2);

Така до тук всичко изглежда супер Gauge се появява точно където и както искам. Недай си боже обаче да resize-на формата или колоната, става мазало.
Всъщност gauge се resize-ва правилно в момента на следващия ресайз на колоната.

Дайте някакви идеи как да го оправя. пробвал съм почти всички комбинации от събития и OwnerDraw.


Отговор
в отговор на Songbird #2

Re: OwnerDraw ListView

Май няма да ти помогна много много - но от борбата си то4но с този компонент (аз си пиша ТDBListView - модификация на грид с възможности да изглежда то4но като ListView) проблема е 4е нещо не е доизпипан компонента. Т.е. даже и като написах вси4ки необходими методи за Owner draw - пак нещата не се полу4иха.
Един съвет - потърси компонент който да е 4ист VCL - а не тази мацаница която са сътворили с Win ComControls. Май това е проблема - аз намерих няколко компонента, но съм доста зает за момента да ги тествам, ина4е бих ти препоръ4ал нещо.

---
Е т'ва е живот!
Отговор
в отговор на Songbird #3

Re: OwnerDraw ListView

Zdrasti !!!

Prihwanal si parwilnoto sybitie (onCustomDrawItem).
Problemyt e che izpolzwash harakteristikata Columns.Width. Tq ne se opresnqwa dokato promenqsh razmera na kolonata a chak na sledwashiat resaiz.
Zatowa ako napishesh slednoto niama da imash problemi

w:Integer;

funkciata e ot modula CommCtrl (w Delphi5):

w:=ListView_GetColumnWidth(Sender.Handle,0{-->nomer na kolonata});

rec := li.DisplayRect( drBounds );

TGauge( li.Data ).SetBounds ( rec.Right - w,r.Top + 1, w - 2, rec.Bottom - rec.Top - 2);

Pri men raboti.

Nadiawas se da sam pomognal

Отговор
в отговор на tpt #4

Re: OwnerDraw ListView

Работи перфектно
Мерси много.

Отговор