Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.02 c
10-1019029082
s_alexander
2002-04-17 11:37
2004.07.11
Как сделать соединение с сервером приложений из внешней сети?


1-1088292852
Suomi
2004-06-27 03:34
2004.07.11
Инсталляция компонентов


14-1087717818
Anatoly Podgoretsky
2004-06-20 11:50
2004.07.11
С днем рождения 19.06.2004


1-1088288639
TGrey
2004-06-27 02:23
2004.07.11
Как сохранить TList в файле


1-1088264007
Damager
2004-06-26 19:33
2004.07.11
Total Commander 6




   Наверх