Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
5-1139301255
Priest
2006-02-07 11:34
2006.09.10
Делегирование реализации интерфейсов


2-1156237255
GTAID
2006-08-22 13:00
2006.09.10
вызов программы через нажатие ctrl+shift+G


2-1156314634
Андрей Пазик
2006-08-23 10:30
2006.09.10
Создание кросс-массива


15-1155541283
dimonf
2006-08-14 11:41
2006.09.10
Господа, ктонить подключал комп через s-video к TV?


15-1155573637
qqqqqqq
2006-08-14 20:40
2006.09.10
Кто разбирается в ОС (Unix,Linux)? Какой Linux посоветуете?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский