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

Вниз

как изменить курсор   Найти похожие ветки 

 
foreverDelphi ©   (2007-10-07 14:00) [0]

подскажите пожалуйста, почему не изменяется курсор на нужный и как ето исправить?

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 down:=true;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
begin
 if down then begin form1.Cursor:=crDrag;
 down:=false;
 end;
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 downs:=false;
end;


 
engine ©   (2007-10-07 14:12) [1]

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
begin
if ssRight in Shift then
     Cursor := crDrag;
   else
     Cursor := crDefault;
end;


 
foreverDelphi ©   (2007-10-07 14:39) [2]


> engine ©   (07.10.07 14:12) [1]
>
> procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState;
>  X,
>  Y: Integer);
> begin
> if ssRight in Shift then
>      Cursor := crDrag;
>    else
>      Cursor := crDefault;
> end;

курсор будет изменятся при каждом перемещение мыши - не практично так как у меня задача не только изменить курсор
проблема [0] в том что курсор не меняется хотя Cursor := crDrag выполняется, а изменение курсора происходит только в MouseUP почему-то?


 
Kolan ©   (2007-10-07 14:47) [3]

> почему-то?


> procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
>
> Shift: TShiftState; X, Y: Integer);
> begin
> downs:=false;
> end;


> procedure TForm1.FormMouseDown(Sender: TObject; Button:
> TMouseButton;
> Shift: TShiftState; X, Y: Integer);
> begin
> down:=true;
> end;


 
antonn ©   (2007-10-07 14:48) [4]

зато правой кнопкой все работает %)


 
foreverDelphi ©   (2007-10-07 14:54) [5]


> antonn ©   (07.10.07 14:48) [4]
>
> зато правой кнопкой все работает %)

ничего не работает :)
мне нужно определить MouseUp кнопки в нужном месте, если етого не будет все исключение 100%)


 
Kolan ©   (2007-10-07 15:00) [6]

> ничего не работает :)

Ваш код содержит ошибку. При FormMouseUp вы изменяете downs, а при FormMouseDown down


 
foreverDelphi ©   (2007-10-07 15:02) [7]


> > ничего не работает :)
>
> Ваш код содержит ошибку. При FormMouseUp вы изменяете downs,
>  а при FormMouseDown down

потому что писал в форуме :)


 
antonn ©   (2007-10-07 15:09) [8]


> мне нужно определить MouseUp кнопки в нужном месте, если
> етого не будет все исключение 100%)
>

В FormMouseUp передаются координаты "отклИка" -  X, Y: Integer);

если зажать правую кнопку мышки и тащить, то работает:)


 
Anatoly Podgoretsky ©   (2007-10-07 15:10) [9]

А зачем обсуждать нереальный код?
Ты приводи сообственный, а не из головы.


 
Kolan ©   (2007-10-07 15:13) [10]

if down then
begin
 form1.Cursor:=crDrag;
 down:=false;
end;

Видимоошибка в 17 строке, так как если это весь код, то после первого клика и движения мышью курсор должен стать crDrag навсегда.


 
antonn ©   (2007-10-07 15:15) [11]


> Видимоошибка в 17 строке, так как если это весь код, то
> после первого клика и движения мышью курсор должен стать
> crDrag навсегда.

однако при клике левой кнопкой и движения не становится:) это наверное и мучает автора:)


 
foreverDelphi ©   (2007-10-07 15:15) [12]


> Anatoly Podgoretsky ©   (07.10.07 15:10) [9]
>
> А зачем обсуждать нереальный код?
> Ты приводи сообственный, а не из головы.

ето и есть сообственный! просто в очень упрощенном виде, что бы суть вопроса была понятна!


> antonn ©   (07.10.07 15:09) [8]
>
>
> > мне нужно определить MouseUp кнопки в нужном месте, если
>
> > етого не будет все исключение 100%)
> >
>
> В FormMouseUp передаются координаты "отклИка" -  X, Y: Integer);
>
>
> если зажать правую кнопку мышки и тащить, то работает:)


ето если в пределах компонента а если кнопка будет отпущенна за пределами MouseUp не будет!


 
antonn ©   (2007-10-07 15:18) [13]


> ето если в пределах компонента а если кнопка будет отпущенна
> за пределами MouseUp не будет!

если за пределами - будет вызван Up при клике левой, и не вызван при клике правой %)


 
Anatoly Podgoretsky ©   (2007-10-07 15:22) [14]

> foreverDelphi  (07.10.2007 15:15:12)  [12]

Сообственный - это не из головы, написаный в форуме, а из реального проекта, скопированый, а не переписаный.


 
foreverDelphi ©   (2007-10-07 15:48) [15]


> Anatoly Podgoretsky ©   (07.10.07 15:22) [14]
>
> > foreverDelphi  (07.10.2007 15:15:12)  [12]
>
> Сообственный - это не из головы, написаный в форуме, а из
> реального проекта, скопированый, а не переписаный.

даже если и скопирую то... ладно пожалуйста, и что ето поменяло? вместо вопроса пол часа разбираться что и где? и что еще типы данных приводить?

procedure TForm1.GraphicsMemo12MouseDown(Sender: TObject; x, y: Integer);
var
 i:integer;
 y2:byte;
begin
 if(x>GraphicsMemo12.Width-11)AND(x<GraphicsMemo12.Width)AND(y>0)AND(y<11)AND(Length(LoginWindow.elem)>8)th en begin
 LoginWindow.scrollingPos:=LoginWindow.scrollingPos-1;
 if LoginWindow.scrollingPos<0 then LoginWindow.scrollingPos:=0;
 f1Paint12;
 end;

 if(x>GraphicsMemo12.Width-11)AND(x<GraphicsMemo12.Width)AND(y>GraphicsMemo12.Height-11)AND(y<GraphicsMemo12.Height)AND(Length(LoginWindow.elem)>8)then begin
 LoginWindow.scrollingPos:=LoginWindow.scrollingPos+1;
 if LoginWindow.scrollingPos>=Length(LoginWindow.elem)-8 then LoginWindow.scrollingPos:=Length(LoginWindow.elem)-8;
 f1Paint12;
 end;

 LoginWindow.scrollingMove:=false;
 if (x>LoginWindow.scrollingPosX)AND(x<LoginWindow.scrollingPosX+11)AND
 (y>LoginWindow.scrollingPosY)AND(y<LoginWindow.scrollingPosY+11)then
 LoginWindow.scrollingMove:=true;

 y2:=y div 14;
 if LoginWindow.scrollingPos+y2<=Length(LoginWindow.elem)-1 then
 if(x>0)AND(x<GraphicsMemo12.Width-11)AND(y>0)AND(y<GraphicsMemo12.Height)
 AND(LoginWindow.elem[LoginWindow.scrollingPos+y2].Number<>"0")then begin
   for i:=0 to Length(LoginWindow.elem)-1 do LoginWindow.elem[i].selected:=false;
   for i:=0 to Length(LoginWindow.elem)-1 do LoginWindow.elem[i].down:=false;
   LoginWindow.elem[LoginWindow.scrollingPos+y2].selected:=true;
   LoginWindow.elem[LoginWindow.scrollingPos+y2].down:=true;
   f1Paint12;
 end;
end;

procedure TForm1.GraphicsMemo12MouseMove(sender: TObject; x, y: Integer;
 lbutton: Boolean; ss: TShiftState);
var
 r1,r2:real;
 i,j:integer;
 temp:string;
begin
 if(Length(LoginWindow.elem)>8)AND(LoginWindow.scrollingMove=true)then begin

 r1:=(y-11)/((GraphicsMemo12.Height-22)/100); //ociaai ia neieuei i?ioaioia ia?aiauai aaaoiie
 r2:=(Length(LoginWindow.elem)-7)/100;
 i:=Round(r1*r2);

 if i<0 then i:=0;
 if i>=Length(LoginWindow.elem)-8 then i:=Length(LoginWindow.elem)-8;

 if LoginWindow.scrollingPos<>i then begin
 LoginWindow.scrollingPos:=i;
 f1Paint12; end;
 end;

 if LoginWindow.numTab in [0..5] then
 for i:=0 to Length(LoginWindow.elem)-1 do
 if (LoginWindow.elem[i].down=true)AND(LoginWindow.dropNumber=0) then begin
   if LoginWindow.elem[i].Number<>"0" then begin
   LoginWindow.dropNumber:=StrToInt(LoginWindow.elem[i].Number);
   GraphicsMemo12.Cursor:=crDrag;
   end;
 Break;
 end;

 if LoginWindow.dropNumber<>0 then begin
   if (x+graphicsMemo12.Left in [GraphicsMemo4.Left..GraphicsMemo4.Left+GraphicsMemo4.Width])AND
   (y+graphicsMemo12.Top in [GraphicsMemo4.Top..GraphicsMemo4.Top+GraphicsMemo4.Height]) then begin
   
   end;
 end;
end;

procedure TForm1.GraphicsMemo12MouseUp(Sender: TObject; x, y: Integer);
var
 i:integer;
begin
 for i:=0 to Length(LoginWindow.elem)-1 do LoginWindow.elem[i].down:=false;
 LoginWindow.scrollingMove:=false;
 LoginWindow.dropNumber:=0;
 GraphicsMemo12.Cursor:=crDefault;
end;


 
antonn ©   (2007-10-07 16:07) [16]

да ладно, Анатолий так стебется%)

мне вообще тоже интересно стало, почему курсор меняется при правой кнопке и не отрабатывает на левую:)
var down:boolean;

procedure TForm1.FormCreate(Sender: TObject);
begin
down:=false;
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
down:=true;
form1.Cursor:=crDefault;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
begin
if(down) then begin
 form1.Cursor:=crCross;
 down:=false;
end;
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
down:=false;
form1.Cursor:=crDefault;
end;

D7/WinXP_SP2


 
foreverDelphi ©   (2007-10-07 16:28) [17]


> antonn ©   (07.10.07 16:07) [16]
> мне вообще тоже интересно стало, почему курсор меняется
> при правой кнопке и не отрабатывает на левую:)

да и особенно мне, потому что из-за такой мелочи что даже не ожидал, КАК показать процесс перетаскивания, в принцыпе можна при нажатии мыши изменить но КАК информировать готовность объекта принимать или не принимать


 
antonn ©   (2007-10-07 16:29) [18]

можно при нажатии запоминать координаты курсора - если потом они поменялись - значит тащим:)


 
foreverDelphi ©   (2007-10-07 16:36) [19]


> antonn ©   (07.10.07 16:29) [18]
>
> можно при нажатии запоминать координаты курсора - если потом
> они поменялись - значит тащим:)

да а если обьект не может принять, курсор не изменится хоть его десять раз меняй!
хотя можно скрыть курсор и рисовать на рабочем столе свой :) даже анимированный О!)


 
Kolan ©   (2007-10-07 17:48) [20]

> КАК информировать готовность

Готовность нельзя информировать.

Может стелепатировал не правильно&#133

Вы видимо пытаетесь сделать перетаскивание объектов, так вот информация о том, выбран или нет сейчас объект должна быть помещена в сам этот объект.


 
foreverDelphi ©   (2007-10-07 18:17) [21]


> Kolan ©   (07.10.07 17:48) [20]
> Вы видимо пытаетесь сделать перетаскивание объектов, так
> вот информация о том, выбран или нет сейчас объект должна
> быть помещена в сам этот объект.

все точно, все так и задумано и все отлично работает, но было еще задуманно в процессе перетаскивания изменять курсор информируя пользователя о состоянии в процессе перетаскивания, а он почему-то не изменяется? мелочь но неприятно!


 
Kolan ©   (2007-10-07 19:05) [22]

> мелочь но неприятно!

Раз вы так и сделали, то сделайте в объектах, которые таскаете метод
GetCursor
И используйте его при таскании (OnMove)

А о том какой сейчас курсор пусть заботится сам таскаемый объект.



Страницы: 1 вся ветка

Текущий архив: 2007.10.28;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.018 c
10-1138808974
kutnul
2006-02-01 18:49
2007.10.28
Создание обработчика событий


9-1162040068
Зм1й
2006-10-28 16:54
2007.10.28
Прозрачность и текстура


2-1191758472
schaps
2007-10-07 16:01
2007.10.28
Вопрос по Exlib. Не выводит сумму в Edit15


15-1190688286
Slider007
2007-09-25 06:44
2007.10.28
С днем рождения ! 25 сентября 2007 вторник


2-1191602274
Антон Шестаков
2007-10-05 20:37
2007.10.28
соответствующий список DBComboBox