-
Приветствую всех, вопрос состоит в следующем, как в апуенном приложении менять рамеры компонента TImage мышью, как например в visio или в подобных программах
-
вычислить что мышь над бордюром, сменить курсор если нажали, проверить где, взвести соотв.флаг, если отпустили сбросить если мышь движентся и если соотв.флаг взведен, менять соотв.размеры компанента
-
жестоко-то как
-
a чего? долго чтоль написать (только вправо, лень)
type TForm3 = class(TForm) im: TPanel; Label1: TLabel; procedure imMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure FormShow(Sender: TObject); procedure imMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure imMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private IR:byte; procedure ZeroFlag; end;
var Form3: TForm3;
implementation
{$R *.dfm} procedure TForm3.ZeroFlag; begin IR := 0; end;
procedure TForm3.FormShow(Sender: TObject); begin ZeroFlag; end;
procedure TForm3.imMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if (im.Width-x)<2 then IR:=1; end;
procedure TForm3.imMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer); begin if IR=0 then if (im.Width-x)<2 then im.Cursor:=crsizeAll else im.Cursor:=crdefault else im.Width:=x; end;
procedure TForm3.imMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin ZeroFlag; end;
-
> как в апуенном приложении
Это куда ?
-
> если мышь движентся и если соотв.флаг взведен, менять соотв. > размеры компанента
Если image полноцветка - эх, и тормозить будет... Можно же "резинку" использовать.
-
> Если image полноцветка - эх, и тормозить будет..
Ну, можео поиграться с оптимизацией и выводом в видеопамять. Но мерцать всё равно будет.
-
Не подходит, попробую выразить мысль конкретнее. Мне необходимо, чтобы в запущенном приложении я имел возможность изменять размеры компонента (к примеру TImage) как при разработке. То есть самыми простыми словами, чтобы были точки по углам/цетнрам_сторон компонента, нажимая на которых мышью, можно было манипулировать размером.
Однако!
> вычислить что мышь над бордюром, сменить курсоресли нажали, > проверить где, взвести соотв.флаг, если отпустили сброситьесли > мышь движентся и если соотв.флаг взведен, менять соотв.размеры > компанента
таким образом естественно можно, и я так и справлялся с этой задачей долгое время. Меня же интересует, есть ли уже более простые варианты. Может быть создать свой компонент, который будет иметь такое свойство? но как тогда? или что-нибудь ещё.
-
> таким образом естественно можно, и я так и справлялся с > этой задачей долгое время. Меня же интересует, есть ли уже > более простые варианты. Может быть создать свой компонент, > который будет иметь такое свойство?
Создание своего компонента проще написания трех простых обработчиков событий мышки? Хотя. Если такой компонент часто используется в разных программах, тогда стоит его написать.
-
> Хотя. Если такой компонент часто используется в разных программах, > тогда стоит его написать.
именно. только вот с созданием своих компонентов я то как раз и не знакомился, потому и не представляю как это сделать если таково возможно
-
в сети примеры как породить от соотв.компанента свой надо написать обработку соотв.сообщений от мыши
-
поищи TStretchHandle
|