Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Lazarus, Free Pascal, CodeTyphon
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 19.10.2019, 17:13   #1
Максим_maks
Пользователь
 
Регистрация: 18.01.2015
Сообщений: 51
По умолчанию Повторить проект

Всем привет, что почитать и как такое реализовать? https://youtu.be/bTJnmDPX1gc?t=146
С графикой собственно не особо имел дело, а тут просто зацепил проект и хотел повторить, думал смогу, а не получилось (((

Вот, что получилось сделать, но почему-то не могу определить вхождение в координаты прямоугольника

Код:
procedure TForm1.Button2Click(Sender: TObject);
var i: integer;
begin
  R:=Rect(200, 200, 400, 400);
  for i:=0 to 10 do
      begin
        Canvas.Pen.Color:=clDefault;
        Canvas.Brush.Style:=bsClear;
        Canvas.Rectangle(R);
        LCLProc.OffsetRect(R, 20, -20);
      end;
end;
 
procedure TForm1.FormClick(Sender: TObject);
begin
  if PtInRect(R, Point(200,200))
    then ShowMessage(' 200, 200 внутри прямоугольника')
    else ShowMessage(' 200, 200 вне прямоугольника');
end;
 
 
 
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
 // Edit1.Caption:='x'+'='+FloatToStr(Mouse.CursorPos.x)+','+'y'+'='+FloatToStr(Mouse.CursorPos.y);
   Self.Caption := Format('%d x %d', [X, Y])
end;
Максим_maks вне форума   Ответить с цитированием
Старый 19.10.2019, 20:35   #2
Pavia
Лис
Участник клуба
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 1,981
По умолчанию

Это просто.
Код:
type
  TForm1 = class(TForm)
    procedure FormPaint(Sender: TObject);
    procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    SelectedRect:Integer;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormPaint(Sender: TObject);
var i: integer;
 r:TRect;
begin
  R:=Rect(200, 200, 400, 400);
  for i:=0 to 10 do
      begin
        Canvas.Pen.Color:=clDefault;
        Canvas.Brush.Style:=bsClear;
        Canvas.Rectangle(R);
        OffsetRect(R, 20, -20);
      end;
  R:=Rect(200, 200, 400, 400);
  OffsetRect(R, 20*SelectedRect, -20*SelectedRect);
  Canvas.Pen.Color:=clDefault;
  Canvas.Brush.Style:=bsSolid;
  Canvas.Brush.Color:=clGreen;
  Canvas.Rectangle(R);

end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var MousePoint:TPoint;
var i: integer;
 r:TRect;
begin
 if Button=mbLeft then
    begin
    MousePoint:=Point(X,Y);
    R:=Rect(200, 200, 400, 400);
    for i:=0 to 10 do
      begin
        if  PtInRect(R, MousePoint) then
          begin
           SelectedRect:=i;
           Break;
          end;
        OffsetRect(R, 20, -20);
      end;
    repaint;
    end;
end;

end.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia на форуме   Ответить с цитированием
Старый 19.10.2019, 21:53   #3
Максим_maks
Пользователь
 
Регистрация: 18.01.2015
Сообщений: 51
По умолчанию

Цитата:
Сообщение от Pavia Посмотреть сообщение
Это просто.
Код:
type
  TForm1 = class(TForm)
    procedure FormPaint(Sender: TObject);
    procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    SelectedRect:Integer;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormPaint(Sender: TObject);
var i: integer;
 r:TRect;
begin
  R:=Rect(200, 200, 400, 400);
  for i:=0 to 10 do
      begin
        Canvas.Pen.Color:=clDefault;
        Canvas.Brush.Style:=bsClear;
        Canvas.Rectangle(R);
        OffsetRect(R, 20, -20);
      end;
  R:=Rect(200, 200, 400, 400);
  OffsetRect(R, 20*SelectedRect, -20*SelectedRect);
  Canvas.Pen.Color:=clDefault;
  Canvas.Brush.Style:=bsSolid;
  Canvas.Brush.Color:=clGreen;
  Canvas.Rectangle(R);

end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var MousePoint:TPoint;
var i: integer;
 r:TRect;
begin
 if Button=mbLeft then
    begin
    MousePoint:=Point(X,Y);
    R:=Rect(200, 200, 400, 400);
    for i:=0 to 10 do
      begin
        if  PtInRect(R, MousePoint) then
          begin
           SelectedRect:=i;
           Break;
          end;
        OffsetRect(R, 20, -20);
      end;
    repaint;
    end;
end;

end.

Спасибо огромное - работает.
Максим_maks вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена строчных букв на прописные, повторить цифру дважды Tris0606 Помощь студентам 1 12.10.2017 10:30
Требуется повторить функционал части сайта ItHighlander Фриланс 0 08.10.2017 18:36
Повторить событие клик для разных текстбоксов ольгаг Общие вопросы .NET 2 26.01.2016 14:13
VBA.Excel.Повторить определенные действия столько раз, сколько указано в ячейке. Alex4583 Microsoft Office Excel 0 01.07.2011 10:07


14:47.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.