Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.01.09;
Скачать: [xml.tar.bz2];

Вниз

СРОЧНО: нужна помощь по потомку 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.008 c
14-25056
AL2002
2002-12-20 16:57
2003.01.09
Что делает файл Alevir.exe?


3-24812
alex_dorin
2002-12-17 09:29
2003.01.09
формат отображения в DBGrid


1-24915
alvin
2002-12-24 07:28
2003.01.09
Skin


1-24879
pavel_ak
2002-12-28 12:51
2003.01.09
Просветите непросвещенного


6-24990
ruslan_as
2002-11-11 12:45
2003.01.09
Как узнать вошел ли компьютер в сеть





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский