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

Вниз

Resize формы при при bsNone   Найти похожие ветки 

 
Алексей А. ©   (2003-07-11 12:31) [0]

У моей формы свойство BorderStyle равно bsNone, но мне нужно, чтобы размеры формы можно было изменить...
На этот счет у меня есть 2 соображения: Нужно либо эмулировать движение мыши по краям формы, либо убрать Caption, и border сделать под цвет фона.
Что лучше(проще) и как это сделать???


 
Poirot ©   (2003-07-11 12:34) [1]

Первое лучше! Эмулировать необязательно! Просто при зажатии кнопки и удержании... а при движении меняйразмеры... самы просто способ... т.е. надо 2 евента обрабатывать MouseDown b MouseMove


 
Юрий Федоров ©   (2003-07-11 12:34) [2]

Этот вопрос пора заносить в Чаво уже :-)
Нужно обработать WM_NCHITTEST


 
Игорь Шевченко ©   (2003-07-11 12:50) [3]

Юрий Федоров © (11.07.03 12:34)


> Нужно обработать WM_NCHITTEST


В каком месте ? :)))


 
Юрий Федоров ©   (2003-07-11 12:57) [4]

>>Игорь Шевченко © (11.07.03 12:50)
Возможно я погорячился, каюсь. Хотя не уверен, а проверять лень :-)


 
Игорь Шевченко ©   (2003-07-11 13:01) [5]

Юрий Федоров © (11.07.03 12:57)

Нет, не погорячился, можно и через NCHITTEST, но очень долго. Надо отслеживать координаты мыши относительно краев формы и возвращать HTTOPLEFT, HTBOTTOMLEFT, HTLEFT, и еще 9 комбинаций.

Лучше бы, наверное, при создании формы указать-таки стиль WS_SIZEBOX


 
stone ©   (2003-07-11 14:07) [6]

Я это делал так:

unit AnTxtPrg;

interface

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

type
Tfm_AnTxtPrg = class(TForm)
Animate: TAnimate;
la_Message: TLabel;
Panel1: TPanel;
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
protected
procedure CreateParams(var Params: TCreateParams); override;
private
{ Private declarations }
public
{ Public declarations }
end;

var
fm_AnTxtPrg: Tfm_AnTxtPrg;

implementation

{$R *.dfm}

var
Moving: Boolean;
OldX, OldY: Integer;

procedure Tfm_AnTxtPrg.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do
Style := Style or WS_BORDER or WS_THICKFRAME;
end;

procedure Tfm_AnTxtPrg.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then
begin
OldX := X;
OldY := Y;
Moving := true;
end;
end;

procedure Tfm_AnTxtPrg.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then
Moving := false;
end;

procedure Tfm_AnTxtPrg.FormMouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
if Moving then
Self.SetBounds(Self.Left+X - OldX, Self.Top + Y - OldY, Self.Width, Self.Height);
end;

end.


 
Игорь Шевченко ©   (2003-07-11 14:23) [7]

stone © (11.07.03 14:07)

Это вроде не resize...Это вроде move...


 
stone ©   (2003-07-11 14:27) [8]


> Это вроде не resize...Это вроде move...


Совершенно верно, но resize тоже работает :))
Могу выслать пример.


 
Алексей А. ©   (2003-07-12 11:51) [9]

Все неплохо, но рамка мне все же не нужна...



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

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

Наверх




Память: 0.49 MB
Время: 0.015 c
14-78045
Dmitriy O.
2003-07-08 15:57
2003.07.24
Куда лучше прописывать настройки.


3-77809
paxer
2003-07-03 14:36
2003.07.24
Что работает быстрее?


14-78103
Omega27
2003-07-06 23:50
2003.07.24
перехват


1-77968
Ghost_
2003-07-11 10:47
2003.07.24
Опять Excel параметры страницы


1-77993
kostya
2003-07-11 16:22
2003.07.24
Помогите с Bitmap...ом