Форум: "Начинающим";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];
ВнизY X Step s Найти похожие ветки
← →
RASkov (2006-08-19 23:51) [0]Сегдя день какой то... тормажу блин.
Как осуществить перемещение (прокрутку) например Labelя по форме. Т.е. нажал мышу переместил на пятнадцать пикселей вправо отпустил у Labelя Left прибавился на 15
И при этом перемещать сам Labelь во время перемещения мыши с нажатой кнопкой
Зделал так (см ниже) получились качели какие то. Мышь водишь с нажатой кнопкой вправо влево по 5 пикселей а Labelь начинает летать из стороны в сторону начиная по чуть чуть и разгоняется до бешенных скоростей. Улетает за края формы хрен знает куда. :(
Это надо мне для того чтобы перемещать область....Есть Битмап большой (Больше размера формы) нужно CopyRect"om копировать область на клиентскую часть формы...
вот и сделать типа прокрутки битмапа на форме.... Блин вроде понятно написал - зацепил - тащишь - о она (часть Битмапа) копируется на форму... Уххх..
Вот код кривой это как я пытаюсь, может из него поймете чего я хочу или еще больше запутаетесь.StartX, StartY, NewX, NewY: Integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
NewX:=Label1.Left; NewY:=Label1.Top;
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
StartX:=X; StartY:=Y;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var StepX, StepY: Integer;
begin
if ssLeft in Shift then begin
StepX:=X-StartX;
StepY:=Y-StartY;
NewX:=NewX+StepX;
NewY:=NewY+StepY;
Label1.Caption:=Format("X= %d StartX= %d, StepX= %d",[X, StartX, StepX]);
Label1.Left:=NewX;
Label1.Top:=NewY;
end;
end;
← →
RASkov (2006-08-20 01:32) [1]Типа кроме меня ещё и никто незнает?
← →
DesWind © (2006-08-20 01:47) [2]Интуитвно!!! Глобальных переменных нехватает. Не в том состоянии,шоб листинги читать )
← →
DesWind © (2006-08-20 01:59) [3]Я щас снова фигню скжу, а может и правду ))) А может попробовать шаг не вычислять, а просто координаты мышки присваивать )
← →
Pavia © (2006-08-20 02:20) [4]
procedure TForm1.FormCreate(Sender: TObject);
begin
NewX:=Label1.Left; NewY:=Label1.Top;
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
StartX:=X; StartY:=Y;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if ssLeft in Shift then begin
Label1.Left:=NewX+X-StartX;
Label1.Top:=NewY+Y-StartY;
Label1.Caption:=Format("X= %d StartX= %d, StepX= %d",[X, StartX, X-StartX]);
end;
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
NewX:=NewX+X-StartX;
NewY:=NewY+Y-StartY;
end;
← →
RASkov (2006-08-20 02:56) [5]> [4] Pavia © (20.08.06 02:20)
СПАСИБО БОЛЬШОЕ.
То что надо. Сейчас попробую все это что бы с учетом границ формы сделать. Ну это как в ACDSee с картинокой - когда ее тащишь вверх то если нижняя граница достигла низа формы то переставалась тащиться... Если и здесь не соображу ... уж помогите...
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.04 c