Текущий архив: 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]> КАК информировать готовность
Готовность нельзя информировать.
Может стелепатировал не правильно…
Вы видимо пытаетесь сделать перетаскивание объектов, так вот информация о том, выбран или нет сейчас объект должна быть помещена в сам этот объект.
← →
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.51 MB
Время: 0.042 c