Форум: "Основная";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.034 c