Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Выделенный компонент

24K
08 июня 2008 года
Witaliy
27 / / 24.04.2008
Я делаю программу, в которой нужно сделать передвижение RunTime компонентов.
И вот у меня проблема. Как сделать, чтобы для всех компонентов были те процедуры
для их движения:

[highlight=delphi]
procedure b1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
form1.Repaint;
form1.Canvas.Rectangle(b1.Left-2, b1.Top-2, b1.Left+b1.Width+2, b1.Top+b1.
Height+2);
dow:=true;
ox:=x;
oy:=y;
end;

procedure b1MouseMove(Sender: TObject; Shift: TShiftState; X
Y: Integer);
begin
if dow=true then
begin
b1.Top:=b1.Top-(oy-y);
b1.Left:=b1.Left-(ox-x);
form1.Repaint;
end;
end;

procedure b1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
dow:=true;
end;
[/highlight]

Но как сделать, чтобы нажатый компонент можно было двигать, а остальные нет. И как сделать, чтобы вместо b1 был нажатый (выделенный) компонент???
261
08 июня 2008 года
ahilles
1.5K / / 03.11.2005
вместо b1 поставь TButton(sender) и всё будет пучком.
Посмотри, вот так должно быть.

[highlight=delphi]
var
dow:boolean=false;
ox,oy:integer;

procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
//form1.Repaint;//по-моему, это лишнее
form1.Canvas.Rectangle(TButton(sender).Left-2, TButton(sender).Top-2, TButton(sender).Left+TButton(sender).Width+2, TButton(sender).Top+TButton(sender).Height+2);
dow:=true;
ox:=x;
oy:=y;

end;

procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if dow=true then
begin
TButton(sender).Top:=TButton(sender).Top-(oy-y);
TButton(sender).Left:=TButton(sender).Left-(ox-x);
form1.Repaint;
end;
end;

procedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
dow:=false;//<-- у тебя неверно было
end;
[/highlight]
24K
08 июня 2008 года
Witaliy
27 / / 24.04.2008
Очень большое спасибо. Внатуре, я ето грыз уже боле месяца. Спасибо !!!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог