Помощь - Поиск - Пользователи - Календарь
Полная версия: Рисование на Canvas при нажатии левой кнопки мыши.
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
Виталий
Подскажите,пожалуйста, какое событие надо обрабатывать и каким образом для того, чтобы рисование на Canvas происходило только при нажатии левой кнопки мыши(если можете то приведите код).
мисс_граффити
в поиск...
вот, например: Графический редактор
Better Kind
Цитата(мисс_граффити @ 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
Ну, ты уж если взялся что-то делать - то делай как положено, а не "через пень - колоду"... С какой радости:
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
down:=false; {отжали кнопку}
end;

ты вдруг отжал кнопку? А ты что, проверил, что отпущена ИМЕННО левая? Может, я в процессе рисования нажал на правую кнопку, чтоб произвести какие-то доп. действия (скажем, отобразить текущие координаты мыши в Caption-е формы), а потом ее (правую же) отпустил. По какому праву это прерывает рисование?
Better Kind
Цитата(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;
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.