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

Вниз

СРОЧНО: нужна помощь по потомку TGraphicControl   Найти похожие ветки 

 
xn0bys ©   (2002-12-28 11:49) [0]

Может кто-нить мне помочь, такая промблема: есть компонент потомок TGraphicControl и форма которая таскается по WM_NCHITTEST, надо чтобы компонент определялся в этой процедуре не как htClient, или же вообще не определялся бы (как TButton).


 
Игорь Шевченко ©   (2002-12-28 12:02) [1]

unit main;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TfMain = class(TForm)
Label1: TLabel;
Label2: TLabel;
private
procedure WMNCHitTest (var Message : TWMNCHitTest); message WM_NCHITTEST;
end;

var
fMain: TfMain;

implementation

{$R *.DFM}

{ TfMain }

procedure TfMain.WMNCHitTest(var Message: TWMNCHitTest);
var
MyControl : TControl;
begin
MyControl := ControlAtPos(ScreenToClient(SmallPointToPoint(Message.Pos)),
false, false);
if MyControl IS TLabel then
Message.Result := HTNOWHERE
else
Message.Result := HTCAPTION;
end;

end.


Примерно так. На форме две метки - вся форма таскается за любое место, кроме этих меток.


 
Игорь Шевченко ©   (2002-12-28 12:18) [2]

Маленькое исправление:
procedure TfMain.WMNCHitTest(var Message: TWMNCHitTest);
var
MyControl : TControl;
P : TPoint;
begin
P := ScreenToClient(SmallPointToPoint(Message.Pos));
if not PtInRect(ClientRect, P) then
inherited
else begin
MyControl := ControlAtPos(P, false, false);
if MyControl IS TLabel then
Message.Result := HTNOWHERE
else
Message.Result := HTCAPTION;
end;
end;


В предыдущем случае форма не закрывалась :-)))


 
xn0bys ©   (2002-12-28 13:53) [3]

Это конечно всё рулез, но я хотел бы, чтобы в форме никаких преверок не делать, чтобы по умолчанию мой компонент был бы как-бы кнопочка, т.е. в обработчике (см. выше) он бы по умолчанию был бы не Клиентом (извяните за был бы, я после рабочего празднования HNY 2003).


 
xn0bys ©   (2002-12-28 13:57) [4]

хотя последний пример всё-таки рулез, так-как сколько-бы ни было компоненторв, все они возвращают TLabel.
BIG THNX Игорь Шевченко!!!!!!!!!!!!!!!!!!!!!!!!!!!!!



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

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

Наверх




Память: 0.47 MB
Время: 0.012 c
1-24865
msgipss
2002-12-26 13:59
2003.01.09
А как можно присвоить один типизированный массив другому


1-24839
viper
2002-12-27 13:45
2003.01.09
Ошибка при запуске программы


14-25040
OlDemon
2002-12-20 07:12
2003.01.09
Сайт по VBA


1-24829
dRake
2002-12-27 11:59
2003.01.09
обнуление массива


4-25135
Cosmic
2002-11-20 20:10
2003.01.09
Перехват клавиш