Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.07.31;
Скачать: [xml.tar.bz2];

Вниз

Перерисовка в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.035 c
4-1117649455
vi.ki.ng-vku
2005-06-01 22:10
2005.07.31
Перехват нажатия клавиши


14-1120477436
vadims
2005-07-04 15:43
2005.07.31
Психиатрия: МДП . Нужен совет


1-1121347326
Начинающий2
2005-07-14 17:22
2005.07.31
Есть 2 вопроса, 1 по ошибке, 2 по ShellExecute.


14-1121038345
Soft
2005-07-11 03:32
2005.07.31
Где грань между наукой и инженерным проектом.


1-1120736586
Stanislav
2005-07-07 15:43
2005.07.31
Диаграмма Гантта





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский