Помощь - Поиск - Пользователи - Календарь
Полная версия: Mouse...
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Delphi
Alpha7
Podskazhite plz kakoj funkciej otslezhivat` dvizhenie mishi ?
zaranee sens.

PS Sorry za translit

Можно же и кнопкой Translit пользоваться...
volvo
Вообще-то есть событие OnMouseMove:
Procedure myForm.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);

Вот X и Y как раз и являются координатами мыши...
CMOS
Попробуй функции

GetCursorPos(var lpPoint: TPoint)
и
SetCursorPos(var lpPoint: TPoint)
Alpha7
А как выглядит тело свмой функции ONMouseMove ??
И ещё, как реализовать функцию отрисовки шкалы, но с учетом интервала сечений, т.е. задается const от которой зависит частота нанесения засечек на шкале ?
Это всё к вопросу про TrackBar :ypr:
HELP !!
volvo
Цитата(Alpha7 @ 9.07.05 14:13)
А как выглядит тело свмой функции ONMouseMove ??

Ну, так это тебе решать... Дельфи дает только заголовок, заполняешь-то функцию ты сам ...

Цитата(Alpha7 @ 9.07.05 14:13)
задается const от которой зависит частота нанесения засечек на шкале
Ты не про Frequency случайно говоришь?
Цитата(Delphi Help)
property Frequency: Integer;
Specifies the increment between tick marks on the track bar.
Alpha7
А в виде кода енто как ??(засечки всмысле)
volvo
А ты сам хоть одну строку кода привел? Я же не телепат, чтобы думать, ЧТО тебе подойдет, а что - нет...
Form1.TrackBar1.Frequency := 3; { Потом попробуй := 1 и посмотри на разницу...}
Alpha7
Код
procedure TScaleControl.PaintBox1Paint(Sender: TObject);
 begin
{Otrisovka po OX i po OY}
    PaintBox1.Canvas.Pen.Style:= psSolid;
    PaintBox1.Canvas.Pen.Color := clBlack;
if ((tag=0) and (tag<>1))then
begin
PaintBox1.Canvas.MoveTo(Width div 2, Height div 2);
PaintBox1.Canvas.LineTo(Width div 2, Height);
PaintBox1.Canvas.MoveTo(Width, Height div 2);
PaintBox1.Canvas.LineTo(-Width, Height div 2);
//*********************//
PaintBox1.Canvas.MoveTo(Width div 4, Height div 2 + Height div 4);
PaintBox1.Canvas.LineTo(Width div 4, Height div 2);
PaintBox1.Canvas.MoveTo(Width div 4 + Width div 2, Height div 2 + Height div 4);
PaintBox1.Canvas.LineTo(Width div 2 + Width div 4, Height div 2);
end
else
begin
PaintBox1.Canvas.MoveTo(Width div 2, Height div 2);
PaintBox1.Canvas.LineTo(Width, Height  div 2);
 PaintBox1.Canvas.MoveTo(Width div 2, Height);
PaintBox1.Canvas.LineTo(Width div 2, -Height);
//*********************//
PaintBox1.Canvas.MoveTo(Width div 2 + Width div 4 ,Height div 4);
PaintBox1.Canvas.LineTo(Width div 2, Height div 4);
PaintBox1.Canvas.MoveTo(Width div 4 + Width div 2, Height div 2 + Height div 4);
PaintBox1.Canvas.LineTo(Width div 2, Height div 2 + Height div 4);
 end;

end;

Это код для отрисовки Бара (я пишу компонент с "0") и "перевёртывания" с оси Х на ось У..
Мне нада в него впихнуть кусок отрисовывающий в зависивости от константы засечки на шкале.
Кабы сама ось енто [-1;1], а const дробное число. Скажем данный код рисует горизонтальную линию по середине высоты, линию из центра прямоугольника вниз. + Рисуются две побочные линии. Вот как раз они и соответствуют задаче при const=0,5.
Но они просто нарисованы вне нужного алгоритма...
volvo
Не знаю, правильно я тебя понял или нет:

var
i: integer; b: boolean;
const
f = 0.2; { это - твоя константа }
count = trunc(1/f); { это будет число маленьких засечек ... }
{ ... которые будут отрисованы по обе стороны от засечки большой }

begin
if ((tag=0) and (tag<>1)) then begin
PaintBox1.Canvas.MoveTo(Width div 2, Height div 2);
PaintBox1.Canvas.LineTo(Width div 2, Height);
PaintBox1.Canvas.MoveTo(Width, Height div 2);
PaintBox1.Canvas.LineTo(-Width, Height div 2);
//*********************//
with paintbox1.Canvas do
for b := false to true do
for i := 1 to count-1 do begin
MoveTo(width div 2-(1 - 2*byte( B ))*i*(width div (2*count)), Height div 2 + Height div 4);
LineTo(width div 2-(1 - 2*byte( B ))*i*(width div (2*count)), Height div 2);
end;
end
else ...


Кстати, я не совсем понял условие
if ((tag=0) and (tag<>1)) then begin

если Tag = 0, он в любом случае <> 1 unsure.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.