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

Вниз

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

 
Vacheslav ©   (2002-03-03 20:11) [0]

Подскажите, как во время выполнения програмыы изменять размеры компонентов (мышкой - сужать/ расширять)?


 
lipskiy ©   (2002-03-03 21:35) [1]

Ловить координаты мышки (GetCursorPos) по OnMouseDown запоминать стартовые, по OnMouseMove снова брать текущие, вычислять дельту и на эту дельту менять размеры объекта (Panel1.Width:= ...).


 
drpass ©   (2002-03-03 22:31) [2]

Разумнее разбить форму на изменяемые области с помощью TPanel и TSplitter, а прочим компонентам установить точки привязки (Anchors) в true


 
lipskiy ©   (2002-03-04 00:46) [3]

Сплиттер не позволит тянуть мышкой панель сразу в двух координатах. Но если это не требуется, то так, конечно, удобнее.


 
Vacheslav ©   (2002-03-05 15:06) [4]

Что-то глючит однако. Пишу в onMouseMove: Button1.width:=Button1.width+x-DragPoint.x;
и при попытке изменить размер кнопка становится астраномической величины(в экран не влазит) или наоборот пропадает.
Help!


 
Kozhanov ©   (2002-03-05 15:08) [5]

> Vacheslav
Есть простенький компонент по этому поводу.
Могу выслать.


 
lipskiy ©   (2002-03-05 15:21) [6]

2Vacheslav
Глючит потому, что при изменении размеров кнопки событие onMouseMove вызывается вновь автоматически - мышку то держишь на месте, а кнопка поехала - тот же MouseMove происходит (неважно, что двигать - мышку и ли объект под ней), и попадаешь в бесконечный цикл. Надо флажки расставлять, видимо.


 
Vacheslav ©   (2002-03-05 15:38) [7]

2Kozhanov давай на vatcheslav@mtu-net.ru
2lipskiy поподробнее, пожалуйста, как их расставить?


 
lipskiy ©   (2002-03-05 20:50) [8]

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Panel1: TPanel;
procedure Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Panel1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
Moving:boolean;
Start,Current:TPoint;
InitialSize:TPoint;

const
Field = 10;

implementation

{$R *.DFM}

procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if (X > Panel1.Width - Field) and (Y > Panel1.Height - Field) then
begin
Moving:= true;
Start:= Point(X,Y);
InitialSize:= Point(Panel1.Width, Panel1.Height);
end;
end;

procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if (X > Panel1.Width - Field) and (Y > Panel1.Height - Field) then
Panel1.Cursor:= crSizeNWSE else Panel1.Cursor:= crDefault;
if Moving then
begin
Panel1.Width:= InitialSize.x + (X - Start.X);
Panel1.Height:= InitialSize.y + (Y - Start.Y);
end;
end;

procedure TForm1.Panel1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Moving:= False;
end;

end.


 
Vacheslav ©   (2002-03-05 20:55) [9]

Спасибо всем.



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

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

Наверх




Память: 0.49 MB
Время: 0.009 c
3-66748
Alex Laza
2002-02-19 10:40
2002.03.21
Как получить доступ к .dbf Налоговой отчетности за 2001 г. (версия 2.1)?


4-67046
MARcoDEN
2002-01-19 12:28
2002.03.21
Как определить?


3-66759
- Andrew -
2002-02-21 18:45
2002.03.21
Как записать картинку (Tiff, Bmp) в BLOB-поле?


1-66810
Stexen
2002-03-04 19:45
2002.03.21
Захват изображения


14-67001
Фэ
2002-02-07 23:00
2002.03.21
Вспомним первого учителя