Текущий архив: 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.47 MB
Время: 0.045 c