Главная страница
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.027 c
6-1114320808
X-Disa
2005-04-24 09:33
2005.07.31
TIdHTTP - прервать получение


6-1113831876
Быстрый Шу
2005-04-18 17:44
2005.07.31
Indy проблема(терь здесь постану)


3-1119607989
Viktop
2005-06-24 14:13
2005.07.31
Добавление данных (SQL)


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


1-1121098808
Mameluke
2005-07-11 20:20
2005.07.31
Определение папки, откуда запущено приложение