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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.027 c
15-1154079916
Внук
2006-07-28 13:45
2006.09.10
В отпуск!


2-1156145761
Селезин
2006-08-21 11:36
2006.09.10
Разбиение строки в масив


3-1152192063
mefisto
2006-07-06 17:21
2006.09.10
"Наглядный" SQL Запрос : )


1-1153901887
TUser
2006-07-26 12:18
2006.09.10
Цикл for, так нелюбимый компилятором


6-1145860570
cosmos
2006-04-24 10:36
2006.09.10
Ошибка подключения к Paradox через ADO