OnMouseDown
Construi um Panel Dinamicamente, mas gostaria de Fazer uma programação no evento OnMouseDown deste Panel, minha duvida é, que parametros eu passo?
Agradeço desde já
Agradeço desde já
Anonymous
Curtidas 0
Respostas
Anonymous
10/04/2003
Estude o Help do Delphi (fragmento abaixo):
the following example requires a form with a four-paneled status bar. (Set the Width of the status panels to 150 before running this example). When the user presses a mouse button, moves the mouse, and releases the mouse button, a rectangle is drawn on the form. When the mouse button is released, the rectangle appears on the form’s canvas. Its top-left and bottom-right corners are defined by the location of the mouse pointer when the user pressed and released the mouse button. While the user drags the mouse, the location of the top, left, bottom, and right sides of the rectangle are displayed in the status bar.
var
StartX, StartY: Integer;{Declare in interface section of form’s unit}
{Use this code as the OnMouseDown event handler of the form:}
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
StartX := X;
StartY := Y;
end;
{Use this code as the OnMouseUp event handler of the form:}
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
Form1.Canvas.Rectangle(StartX, StartY, X, Y);
StatusBar1.Panels[0].Text := ´´;
StatusBar1.Panels[1].Text := ´´;
StatusBar1.Panels[2].Text := ´´;
StatusBar1.Panels[3].Text := ´´;
end;
{Use this code as the OnMouseMove event handler of the form:}
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if ssLeft in Shift then { make sure button is down }
begin
if Y > StartY then
begin
StatusBar1.Panels[0].Text := ´Top: ´ + IntToStr(StartY);
StatusBar1.Panels[2].Text := ´Bottom: ´ + IntToStr(Y);
end
else
begin
StatusBar1.Panels[0].Text := ´Top: ´ + IntToStr(Y);
StatusBar1.Panels[2].Text := ´Bottom: ´ + IntToStr(StartY);
end;
if X > StartX then
begin
StatusBar1.Panels[1].Text := ´Left: ´ + IntToStr(StartX);
StatusBar1.Panels[3].Text := ´Right: ´ + IntToStr(X);
end
else
begin
StatusBar1.Panels[1].Text := ´Left: ´ + IntToStr(X);
StatusBar1.Panels[3].Text := ´Right: ´ + IntToStr(StartX);
end;
end;
end;
the following example requires a form with a four-paneled status bar. (Set the Width of the status panels to 150 before running this example). When the user presses a mouse button, moves the mouse, and releases the mouse button, a rectangle is drawn on the form. When the mouse button is released, the rectangle appears on the form’s canvas. Its top-left and bottom-right corners are defined by the location of the mouse pointer when the user pressed and released the mouse button. While the user drags the mouse, the location of the top, left, bottom, and right sides of the rectangle are displayed in the status bar.
var
StartX, StartY: Integer;{Declare in interface section of form’s unit}
{Use this code as the OnMouseDown event handler of the form:}
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
StartX := X;
StartY := Y;
end;
{Use this code as the OnMouseUp event handler of the form:}
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
Form1.Canvas.Rectangle(StartX, StartY, X, Y);
StatusBar1.Panels[0].Text := ´´;
StatusBar1.Panels[1].Text := ´´;
StatusBar1.Panels[2].Text := ´´;
StatusBar1.Panels[3].Text := ´´;
end;
{Use this code as the OnMouseMove event handler of the form:}
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if ssLeft in Shift then { make sure button is down }
begin
if Y > StartY then
begin
StatusBar1.Panels[0].Text := ´Top: ´ + IntToStr(StartY);
StatusBar1.Panels[2].Text := ´Bottom: ´ + IntToStr(Y);
end
else
begin
StatusBar1.Panels[0].Text := ´Top: ´ + IntToStr(Y);
StatusBar1.Panels[2].Text := ´Bottom: ´ + IntToStr(StartY);
end;
if X > StartX then
begin
StatusBar1.Panels[1].Text := ´Left: ´ + IntToStr(StartX);
StatusBar1.Panels[3].Text := ´Right: ´ + IntToStr(X);
end
else
begin
StatusBar1.Panels[1].Text := ´Left: ´ + IntToStr(X);
StatusBar1.Panels[3].Text := ´Right: ´ + IntToStr(StartX);
end;
end;
end;
GOSTEI 0