![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
resize компнента run-time мышью [D7, WinXP]
Mr.Frog © (2008-07-24 13:52:00)Приветствую всех, вопрос состоит в следующем, как в апуенном приложении менять рамеры компонента TImage мышью, как например в visio или в подобных программах
icWasya (2008-07-25 14:07:00) [1]поищи TStretchHandle
Vlad Oshin (2008-07-25 09:34:00) [2]в сети примеры как породить от соотв.компанента свой
надо написать обработку соотв.сообщений от мыши
Mr.Frog (2008-07-25 09:13:00) [3]
> Хотя. Если такой компонент часто используется в разных программах,
> тогда стоит его написать.
именно.
только вот с созданием своих компонентов я то как раз и не знакомился, потому и не представляю как это сделать если таково возможно
Германн (2008-07-25 00:35:00) [4]
> таким образом естественно можно, и я так и справлялся с
> этой задачей долгое время. Меня же интересует, есть ли уже
> более простые варианты. Может быть создать свой компонент,
> который будет иметь такое свойство?
Создание своего компонента проще написания трех простых обработчиков событий мышки?
Хотя. Если такой компонент часто используется в разных программах, тогда стоит его написать.
Mr.Frog (2008-07-24 23:28:00) [5]Не подходит, попробую выразить мысль конкретнее. Мне необходимо, чтобы в запущенном приложении я имел возможность изменять размеры компонента (к примеру TImage) как при разработке. То есть самыми простыми словами, чтобы были точки по углам/цетнрам_сторон компонента, нажимая на которых мышью, можно было манипулировать размером.
Однако!
> вычислить что мышь над бордюром, сменить курсоресли нажали,
> проверить где, взвести соотв.флаг, если отпустили сброситьесли
> мышь движентся и если соотв.флаг взведен, менять соотв.размеры
> компанента
таким образом естественно можно, и я так и справлялся с этой задачей долгое время. Меня же интересует, есть ли уже более простые варианты. Может быть создать свой компонент, который будет иметь такое свойство? но как тогда? или что-нибудь ещё.
tesseract (2008-07-24 20:26:00) [6]
> Если image полноцветка - эх, и тормозить будет..
Ну, можео поиграться с оптимизацией и выводом в видеопамять. Но мерцать всё равно будет.
oldman (2008-07-24 16:17:00) [7]
> если мышь движентся и если соотв.флаг взведен, менять соотв.
> размеры компанента
Если image полноцветка - эх, и тормозить будет...
Можно же "резинку" использовать.
Игорь Шевченко (2008-07-24 15:33:00) [8]
> как в апуенном приложении
Это куда ?
Vlad Oshin (2008-07-24 15:07:00) [9]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;
Медвежонок Пятачок (2008-07-24 14:18:00) [10]жестоко-то как
Vlad Oshin (2008-07-24 14:12:00) [11]вычислить что мышь над бордюром, сменить курсор
если нажали, проверить где, взвести соотв.флаг, если отпустили сбросить
если мышь движентся и если соотв.флаг взведен, менять соотв.размеры компанента