Главная страница
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.068 c
1-1088294261
Yegorchic
2004-06-27 03:57
2004.07.11
Поиск текста в окне IE


14-1087993301
Igorek
2004-06-23 16:21
2004.07.11
Пара вопросов бывалым разработчикам


14-1087797463
ПсихЪ
2004-06-21 09:57
2004.07.11
Глюки форума при рефреше (F5)


3-1086944771
Manfred8
2004-06-11 13:06
2004.07.11
Вопрос по Sql


1-1088121010
MIGUR
2004-06-25 03:50
2004.07.11
Выделение в MEMO и RichEdit