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