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

Вниз

ListView изменение ширины столбца?   Найти похожие ветки 

 
AndrewVolkov   (2004-06-26 02:29) [0]

Доброго всем вечера.

Столкнулся с проблемой. Хочу отловить момент изменения ширины столбца у листВью в режиме vsReport. Смотрю, что он не посылает никаких сообщений в момент когда я изменяю ширину столбца. Если кто сталкивался с такой пролемой, подскажите...


 
Mim1 ©   (2004-06-26 04:03) [1]


> , что он не посылает никаких сообщений

Можно проверять изменилась ли ширина столбца в onmouseup событии.


 
AndrewVolkov   (2004-06-26 12:34) [2]

Почему то заголовок не является частью самого Листвью. У них разные хендлы. Поэтому отлавливая событие онМаусАп - я ничего не вижу, если МаусАп происходит с заголовком


 
Mim1 ©   (2004-06-26 18:55) [3]

unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   ListView1: TListView;
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 OldWndProc : Integer;

implementation

{$R *.dfm}

function MessageDlgWndProc(wnd:Hwnd; Message:integer;Wparam:WPARAM;
                    LParam:LParam):LongInt; stdcall;
 Procedure z;begin
   if OldWndProc <> 0 then
     Result := CallWindowProc(ptr(OldWndProc),wnd,Message,wParam,lParam);
 end;
begin
 case message of
   WM_LBUTTONUP : Form1.Caption := DateTimeToStr(now);
 end;
 z;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 OldWndProc := SetWindowLong(getwindow(ListView1.Handle,GW_CHILD),GWL_WNDPROC,integer(@MessageDlgWndProc));
end;

end.


 
AndrewVolkov   (2004-06-26 23:28) [4]

to Mim1

если не сложно, можно в двух словах как это работает

function MessageDlgWndProc(wnd:Hwnd; Message:integer;Wparam:WPARAM;
                   LParam:LParam):LongInt; stdcall;
Procedure z;begin
  if OldWndProc <> 0 then
    Result := CallWindowProc(ptr(OldWndProc),wnd,Message,wParam,lParam);
end;
begin
case message of
  WM_LBUTTONUP : Form1.Caption := DateTimeToStr(now);
end;
z;
end;


Почему она не объявляется и что там внутри делает процедура z

и
OldWndProc := SetWindowLong(getwindow(ListView1.Handle,GW_CHILD),GWL_WNDPROC,integer(@MessageDlgWndProc));

что мы получаем здесь.
Спасибо


 
Mim1 ©   (2004-06-27 01:13) [5]

getwindow(ListView1.Handle,GW_CHILD) \\ ищем дескриптор дочернего окна (шапки таблицы)

OldWndProc := SetWindowLong(getwindow(ListView1.Handle,GW_CHILD),GWL_WNDPROC,integer(@MessageDlgWndProc)); \\ заменяем оконную процедуру для найденого окна, и созраняетм адрес старой в переменной


> Почему она не объявляется


кто не обявляется?

и что там внутри делает процедура
> z

вызывает старую оконную процедуру.


 
AndrewVolkov   (2004-06-27 12:56) [6]

не объявляется в Type

Спасибо, в принципе все ясно. Но жутко мудренно.
Без подсказки сам такое через неделю не напишу...



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

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

Наверх




Память: 0.48 MB
Время: 0.035 c
8-1082855383
Dr.zlo
2004-04-25 05:09
2004.07.11
Хорошие хинты


1-1088423777
AlexanderSK
2004-06-28 15:56
2004.07.11
Сохранение строки в TStream


14-1087993576
vecna
2004-06-23 16:26
2004.07.11
Не пятница, но тем не менее...


4-1085487564
Kristy
2004-05-25 16:19
2004.07.11
Получение нажатий клавиш в Windows с помощью WH_JOURNALRECORD


1-1088442016
XeLax
2004-06-28 21:00
2004.07.11
Когда модуль вне папки ...