Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.31;
Скачать: CL | DM;

Вниз

Перерисовка в TListView   Найти похожие ветки 

 
Kastusik   (2005-07-07 23:12) [0]

Мастера, такой трабл. В TListView установлен свой обработчик OnDrawItem и когда изменяешь размеры заголовка (стоит ViewStyle = vsReport) данные заново не прорисовываются и получается, что заголовки по новому стоят а данные по старому и только когда начинаешь выделять эти записи тогда они прорисовываются. Вопрос: можно ли сделать так, чтоб перерисовывалось окно сразу во время изменения размеров заголовка?)


 
GanibalLector ©   (2005-07-08 00:59) [1]

ListView1.Refresh ???


 
Sergeich   (2005-07-08 10:32) [2]

Invalidate


 
Kastusik   (2005-07-08 11:40) [3]

2GanibalLector
ListView1.Refresh ???
не помогает

2Sergeich
Invalidate
объясни? не поянл.


 
Kastusik   (2005-07-08 11:48) [4]

фишка вся в том, что после изменения размеров заголовка новая информация не сразу попадает в ColWidth, а только тогда, когда начинается работа с самим TListView окном там где строки


 
isasa ©   (2005-07-08 12:43) [5]

Update method (TWinControl) - Forces the control to update.


 
Игорь Шевченко ©   (2005-07-08 13:17) [6]

unit main;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 ComCtrls;

type
 TForm1 = class(TForm)
   ListView: TListView;
   procedure FormCreate(Sender: TObject);
 private
   FListViewInstance: Pointer;
   FOldListViewProc: Pointer;
   procedure ListViewWndProc (var Message: TMessage);
 end;

var
 Form1: TForm1;

implementation
uses
 CommCtrl;

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
 FListViewInstance := MakeObjectInstance(ListViewWndProc);
 FOldListViewProc := Pointer(SetWindowLong (ListView.Handle, GWL_WNDPROC,
   LongInt(FListViewInstance)));
end;

procedure TForm1.ListViewWndProc(var Message: TMessage);
begin
 Message.Result := CallWindowProc(FOldListViewProc, ListView.Handle,
   Message.Msg, Message.Wparam, Message.Lparam);
 if (Message.Msg = WM_NOTIFY) and
    (PNMHDR(Message.Lparam)^.Code = HDN_ENDTRACK) then
   ListView.Update;
end;

end.


 
Kastusik   (2005-07-08 16:44) [7]

Неа, оба не подходит. да все это про Update верно, но у меня в OnDrawItem все рисуется в зависимости от ширины заголовков. и возможно получается, что когда изменяется размер то ЭТО НЕ ОТОБРАЖАЕТСЯ НЕКОТОРОЕ ВРЕМЯ В ПЕРЕМЕННЫХ. вообще, как узнать, что пользователь изменяет размеры заголовков?


 
Игорь Шевченко ©   (2005-07-08 17:51) [8]


> вообще, как узнать, что пользователь изменяет размеры заголовков?


> if (Message.Msg = WM_NOTIFY) and
>     (PNMHDR(Message.Lparam)^.Code = HDN_ENDTRACK) then


или HDN_STARTTRACK или HDN_TRACK.


 
B-S-G   (2005-07-10 16:56) [9]

Функция InvalidateRect();


 
Kastusik   (2005-07-11 14:20) [10]

HDN_STARTTRACK говорит, что неизвестная переменная,
HDN_TRACK - не работает ???


 
Kastusik   (2005-07-11 14:34) [11]

отлично.  InvalidateRect(); +  HDN_ENDTRACK суперски работает.
осталось выяснить, как сдеалть, чтоб HDN_TRACK заработало и как узнать что пользователь скролбар двигает?


 
Kastusik   (2005-07-11 23:51) [12]

Со скрол баром все ок. осталось, чтоб кто-нить подсказал как сдеалть, чтоб HDN_TRACK заработало. а то Spy++ на передвижение заголовка показывает WM_USER.


 
Кастусик   (2005-07-12 18:41) [13]

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



Страницы: 1 вся ветка

Текущий архив: 2005.07.31;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.034 c
3-1119601614
Валерий
2005-06-24 12:26
2005.07.31
DBGrid - полный, а DBListBox - пустой


14-1120813496
dmtr
2005-07-08 13:04
2005.07.31
Перевод строки в теле SMS сообщения


4-1114684149
MadGhost
2005-04-28 14:29
2005.07.31
Как узнать какие программы на компьютере установлены? и как вывес


3-1118912565
Лиса
2005-06-16 13:02
2005.07.31
Разграничение прав пользователей


14-1120652379
Empleado
2005-07-06 16:19
2005.07.31
The Source