Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Рисование на Canvas при нажатии левой кнопки мыши.

Автор: Виталий 12.11.2007 2:04

Подскажите,пожалуйста, какое событие надо обрабатывать и каким образом для того, чтобы рисование на Canvas происходило только при нажатии левой кнопки мыши(если можете то приведите код).

Автор: мисс_граффити 12.11.2007 3:12

в поиск...
вот, например: http://forum.pascal.net.ru/index.php?showtopic=18133&hl=%E3%F0%E0%F4%E8%F7%E5%F1%EA%E8%E9

Автор: Better Kind 12.11.2007 23:00

Цитата(мисс_граффити @ 11.11.2007 23:12) *

в поиск...
вот, например:

Автор хотел узнать про нажатие левой кнопки.
Вот код:
]
Код
var
  Form1: TForm1;
  down:boolean=false; //проверка нажатия
implementation

{$R *.dfm}

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
{если нажата левая кнопка, то
переводим указатель в позицию курсора
и меняем значение переменной DOWN}
  if button=MBLeft then
  begin
    canvas.MoveTo(X,Y);
    down:=true;
    end;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
{если левая кнопка нажата}
  if down then canvas.LineTo(X,Y);
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  down:=false; {отжали кнопку}
end;

Автор: volvo 12.11.2007 23:25

Ну, ты уж если взялся что-то делать - то делай как положено, а не "через пень - колоду"... С какой радости:

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
down:=false; {отжали кнопку}
end;

ты вдруг отжал кнопку? А ты что, проверил, что отпущена ИМЕННО левая? Может, я в процессе рисования нажал на правую кнопку, чтоб произвести какие-то доп. действия (скажем, отобразить текущие координаты мыши в Caption-е формы), а потом ее (правую же) отпустил. По какому праву это прерывает рисование?

Автор: Better Kind 12.11.2007 23:42

Цитата(volvo @ 12.11.2007 19:25) *

Ну, ты уж если взялся что-то делать - то делай как положено, а не "через пень - колоду"... С какой радости:
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
down:=false; {отжали кнопку}
end;

ты вдруг отжал кнопку? А ты что, проверил, что отпущена ИМЕННО левая? Может, я в процессе рисования нажал на правую кнопку, чтоб произвести какие-то доп. действия (скажем, отобразить текущие координаты мыши в Caption-е формы), а потом ее (правую же) отпустил. По какому праву это прерывает рисование?

Принимается замечание.
Хотя по поводу доп. действий и манипуляций правой кнопкой - не представляю себе этого.
Если правая кнопка не связана с меню, тогда на левой кнопке "висит" основной цвет, на правой - фоновый(дополнительный). При отпускании правой и левой кнопки логичнее прерывать рисование без доп. проверок.

если только настаиваете:
Код
  if button=MBLeft then down:=false;