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

Вниз

Изменение размера формы   Найти похожие ветки 

 
Grumd ©   (2010-04-25 16:42) [0]

Нужно сделать что бы можно было менять размер формы только за нижний правый угол (или еще за нижний и правый края). Подскажите, что делать, эксперты?)


 
sdrf   (2010-04-25 17:05) [1]

наверняка функции работы с элементами оформления есть в WinApi


 
DVM ©   (2010-04-25 17:31) [2]

WM_NCHITTEST


 
Grumd ©   (2010-04-25 17:35) [3]

уф... жаль я в в нем не разбираюсь. но буду тогда гуглить по винапи


 
DVM ©   (2010-04-25 17:42) [4]


> Grumd ©   (25.04.10 17:35) [3]

все довольно просто: когда пользователь водит мышкой по бордюру окна, окну приходят многочисленные WM_NCHITTEST. Вот для определенных координат ты должен возвращать, например, HTCLIENТ, тогда в этих координатах не будет возможности начать изменение размеров окна.


 
Grumd ©   (2010-04-25 17:45) [5]

в принципе это понятно, я просто не знаю как перехватить эти WM_NCHITTEST


 
DVM ©   (2010-04-25 17:50) [6]


unit Unit1;

interface

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

type
 TForm1 = class(TForm)
 private
   procedure OnNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.OnNCHitTest(var Message: TWMNCHitTest);
begin
 Message.Result := HTCLIENT;
end;

end.



 
DVM ©   (2010-04-25 17:52) [7]

И не забывай, сто бордюр окна вещь непостоянной ширины - его ширину надо получать (GetSystemMetrics вроде)


 
Grumd ©   (2010-04-25 18:09) [8]

теперь буду знать, как перехватывать сообщения ..
   private
procedure OnNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;

а определять, где курсор надо как? вытащить из WM_NCHITTEST всякие HTBORDER?..


 
Grumd ©   (2010-04-25 18:10) [9]

If Message.Result=HTBORDER then
будет работать?


 
DVM ©   (2010-04-25 18:24) [10]


> If Message.Result=HTBORDER then
> будет работать?

нет


 
Grumd ©   (2010-04-25 18:26) [11]

уже разобрался.
unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   procedure FormActivate(Sender: TObject);
 private
   procedure OnNCHitTest(var Msg: TMsg; var Handled: Boolean);
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

procedure TForm1.OnNCHitTest(var Msg: TMsg; var Handled: Boolean);
 var i :integer;
begin
 Form1.Caption:=IntToStr(Msg.Message);
 //Msg.message:=HTCLIENT;
end;

{$R *.dfm}

procedure TForm1.FormActivate(Sender: TObject);
begin
 Application.OnMessage:=OnNCHitTest;
end;

end.


 
DVM ©   (2010-04-25 18:31) [12]


> уже разобрался.

и что это?

вот так надо:

procedure TForm1.OnNCHitTest(var Message: TWMNCHitTest);
var
 pt: TPoint;
begin
 pt.x := Message.XPos;
 pt.Y := Message.YPos;
 pt := ScreenToClient(pt);
 if pt.x < GetSystemMetrics(SM_CYBORDER) then
   Message.Result := HTCLIENT
 else
   inherited;
end;


 
Grumd ©   (2010-04-25 18:32) [13]

спасибо)



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

Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.061 c
15-1265220403
Jeltok
2010-02-03 21:06
2010.08.27
Помогите в 1 строчке по паскалю))


2-1268672321
NBAH1990
2010-03-15 19:58
2010.08.27
IP сканер


15-1271410495
vajo
2010-04-16 13:34
2010.08.27
Outlook. Отказано в доступе


15-1264596540
dars73
2010-01-27 15:49
2010.08.27
SQL Возможно ли?


2-1271936513
RWolf
2010-04-22 15:41
2010.08.27
Сравнение переменных процедурного типа





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский