Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.10.28;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.053 c
2-1190918428
fishka
2007-09-27 22:40
2007.10.28
DBF и Windows 2000 - OK, DBF и Windows XP- ошибка


1-1187341894
wsv
2007-08-17 13:11
2007.10.28
Поиск минимумов-максимумов.


2-1191764984
alikon1
2007-10-07 17:49
2007.10.28
Изображение в БД


15-1190722116
boriskb
2007-09-25 16:08
2007.10.28
База зарплат программистов


11-1174985923
dca
2007-03-27 12:58
2007.10.28
KOLWebBrowser/ TWebBrowser конфликтует с TThread





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский