Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
unit
Main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, ComCtrls;
type
TMainForm = class
(TForm) ColorDlg: TColorDialog; StatusBar: TStatusBar; Timer: TTimer; procedure
FormMouseDown(Sender: TObject; Button:
TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure
FormMouseUp(Sender: TObject; Button:
TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure
FormMouseMove(Sender: TObject; Shift:
TShiftState; X,
Y: Integer);
procedure
TimerTimer(Sender: TObject); private
MouseRect: TRect;
IsDown: Boolean;
RectColor: TColor;
public
{ Public declarations }
end
;
var
MainForm: TMainForm;
implementation
{$R *.DFM}
procedure
TMainForm.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin
if
Button = mbLeft then
with
MouseRect do
begin
IsDown := True; Left := X; Top := Y; Right := X; Bottom := Y; Canvas.Pen.Color := RectColor; end
; if
(Button = mbRight) and
ColorDlg.Execute then
RectColor := ColorDlg.Color; end
;
procedure
TMainForm.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin
IsDown := False;
Canvas.Pen.Color := Color;
with
MouseRect do
Canvas.Polyline([Point(Left, Top), Point(Right, Top), Point(Right,
Bottom),
Point(Left, Bottom), Point(Left, Top)]);
with
StatusBar do
begin
Panels[4].Text := '';
Panels[5].Text := '';
end
;
end
;
procedure
TMainForm.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
with
StatusBar do
begin
Panels[2].Text := 'X: ' + IntToStr(X);
Panels[3].Text := 'Y: ' + IntToStr(Y);
end
;
if
not
IsDown then
Exit; Canvas.Pen.Color := Color; with
mouserect do
begin
Canvas.Polyline([Point(Left, Top), Point(Right, Top), Point(Right,
Bottom),
Point(Left, Bottom), Point(Left, Top)]);
Right := X;
Bottom := Y;
Canvas.Pen.Color := RectColor;
Canvas.Polyline([Point(Left, Top), Point(Right, Top), Point(Right,
Bottom),
Point(Left, Bottom), Point(Left, Top)]);
end
;
with
StatusBar do
begin
Panels[4].Text := 'Ширина: ' + IntToStr(Abs(MouseRect.Right -
MouseRect.Left));
Panels[5].Text := 'Высота: ' + IntToStr(Abs(MouseRect.Bottom
- MouseRect.Top));
end
;
end
;
procedure
TMainForm.TimerTimer(Sender: TObject); begin
with
StatusBar do
begin
Panels[0].Text := 'Дата: ' + DateToStr(Now);
Panels[1].Text := 'Время: ' + TimeToStr(Now);
end
;
end
;
end
.