Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.01.2013, 22:22
StudentMarat StudentMarat вне форума
Прохожий
 
Регистрация: 18.02.2011
Сообщения: 38
Репутация: 156
По умолчанию Дорешить простую задачу.

Сама задача. Я ее уже выполнил на 90 процентов. Осталось мелочь

Вводятся две точки, являющиеся координатами левого верхнего и правого нижнего углов прямоугольника. Программа определяет (выводит в окне), сколько квадрантов захватывает прямоугольник. Главное меню определяет вершину, ко-ординаты которой должны быть одинакового знака. Сектора прямоугольника в разных квадрантах закрашивается в разные цвета. Запуск графического построения - ввод последней координаты. Очистка исходных данных - клавиша "Esc"
.

Главное меню определяет вершину, ко-ординаты которой должны быть одинакового знака. - вот это не знаю как сделать
Код:
unit Unit2;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Menus, Vcl.ExtCtrls;

type
  TForm2 = class(TForm)
    Image1: TImage;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    Label1: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Edit3: TEdit;
    Edit4: TEdit;
    Label7: TLabel;
    ListBox1: TListBox;
    Button1: TButton;
    Button2: TButton;
    PopupMenu1: TPopupMenu;
    N3: TMenuItem;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
    procedure Clear;
    procedure FormCreate(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
    procedure Edit3KeyPress(Sender: TObject; var Key: Char);
    procedure Edit4KeyPress(Sender: TObject; var Key: Char);
    procedure Edit1Change(Sender: TObject);
    procedure Edit2Change(Sender: TObject);
    procedure Edit3Change(Sender: TObject);
    procedure Edit4Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;
  x,y,x2,y2: integer;

implementation

{$R *.dfm}

procedure TForm2.Button2Click(Sender: TObject);
var
a,b,c,d:integer;
bs: TBrushStyle;
begin
if (edit1.Text='') or (edit2.Text='') or (edit3.Text='') or (edit4.Text='')then
begin
messagedlg('Не все данные введены',mtError,[mbOk],0)
end
else begin
  x:=250;
  y:=250;
  x2:=250;
  y2:=250;
  a:=StrToInt(Edit1.Text);
  b:=StrToInt(Edit2.Text);
  c:=StrToInt(Edit3.Text);
  d:=StrToInt(Edit4.Text);

if (a<0) and (b<0) then begin
  x:=x+a;
  y:=y-b;
  end;

if (c<0) and (d<0) then begin
  x2:=x2+c;
  y2:=y2-d;
  end;

  if (a>=0) and (b>=0) then begin
  x:=x+a;
  y:=y-b;
  end;

  if (c>=0) and (d>=0) then begin
 x2:=x2+c;
 y2:=y2-d;
  end;

  if (a<0) and (b>=0) then begin
  x:=x+a;
  y:=y-b;
  end;

 if (c<0) and (d>=0) then begin
  x2:=x2+c;
 y2:=y2-d;
 end;

  if (a>=0) and (b<0) then begin
  x:=x+a;
  y:=y-b;
  end;

  if (c>=0) and (d<0) then begin
  x2:=x2+c;
  y2:=y2-d;
  end;


  If (x>=250)and (y<=250)and(x2>=250) and (y2<=250)then
    begin
     ListBox1.Items.Text:='1';
     image1.Canvas.Brush.Color:=clGreen;        // Зеленый
     Image1.Canvas.Rectangle(X,Y,X2,Y2);
    Image1.Canvas.Brush.Style:=bsClear;
    end;

    If (x<=250)and (y<=250)and(x2<=250) and (y2<=250)then
    begin
     ListBox1.Items.Text:='2';
     image1.Canvas.Brush.Color:=clBlue;       //Синий
     Image1.Canvas.Rectangle(X,Y,X2,Y2);
     Image1.Canvas.Brush.Style:=bsClear;
    end;

  If (x<=250) and(y>=250)and(x2<=250) and (y2>=250)then
    begin
      ListBox1.Items.Text:='3';
      image1.Canvas.Brush.Color:=clRed;       //Красный
     Image1.Canvas.Rectangle(X,Y,X2,Y2);
     Image1.Canvas.Brush.Style:=bsClear;
    end;

  If (x>=250)and (y>=250)and(x2>=250) and (y2>=250)then
    begin
    ListBox1.Items.Text:='4';
    image1.Canvas.Brush.Color:=clYellow;        //Желтый
     Image1.Canvas.Rectangle(X,Y,X2,Y2);
     Image1.Canvas.Brush.Style:=bsClear;
    end;

    If ((x>250)and (y<250)and(x2<250) and (y2<250)) or ((x<250) and (y<250) and (x2>250) and (y2<250))then
    begin
     ListBox1.Items.Text:='1,2';
     bs:=Image1.Canvas.Brush.Style;
     Image1.Canvas.Brush.Style:=bsClear;
     Image1.Canvas.Rectangle(X,Y,X2,Y2);

     image1.Canvas.Brush.Color:=clGreen;
    Image1.Canvas.Rectangle(x,y,250,y2);

     image1.Canvas.Brush.Color:=clBlue;
     Image1.Canvas.Rectangle(x2,y2,250,y);

     Image1.Canvas.Brush.Style:=bs;
    end;

    If ((x<250)and(y<250)and(x2<250)and(y2>250)) or ((x<250) and (y>250) and (x2<250) and (y2<250))then
    begin
       ListBox1.Items.Text:='2,3';
       bs:=Image1.Canvas.Brush.Style;
       Image1.Canvas.Brush.Style:=bsClear;
       Image1.Canvas.Rectangle(X,Y,X2,Y2);

       image1.Canvas.Brush.Color:=clBlue;
       Image1.Canvas.Rectangle(x,y,x2,250);

       image1.Canvas.Brush.Color:=clRed;
       Image1.Canvas.Rectangle(x2,y2,x,250);

       Image1.Canvas.Brush.Style:=bs;
    end;

  If ((x<250)and(y>250)and(x2>250)and(y2>250)) or ((x>250) and (y>250) and (x2<250) and (y2>250))then
    begin
      ListBox1.Items.Text:='3,4';
       bs:=Image1.Canvas.Brush.Style;
       Image1.Canvas.Brush.Style:=bsClear;
       Image1.Canvas.Rectangle(X,Y,X2,Y2);

        image1.Canvas.Brush.Color:=clYellow;
    Image1.Canvas.Rectangle(x,y,250,y2);

     image1.Canvas.Brush.Color:=clRed;
     Image1.Canvas.Rectangle(x2,y2,250,y);


       Image1.Canvas.Brush.Style:=bs;
    end;

 If ((x>250)and(y>250)and (x2>250)and(y2<250)) or ((x>250) and (y<250) and (x2>250) and (y2>250))then
    begin
      ListBox1.Items.Text:='1,4';
       bs:=Image1.Canvas.Brush.Style;
       Image1.Canvas.Brush.Style:=bsClear;
       Image1.Canvas.Rectangle(X,Y,X2,Y2);

       image1.Canvas.Brush.Color:=clYellow;
       Image1.Canvas.Rectangle(x,y,x2,250);

       image1.Canvas.Brush.Color:=clBlue;
       Image1.Canvas.Rectangle(x2,y2,x,250);

       Image1.Canvas.Brush.Style:=bs;
    end;

    If ((x>250)and(y>250)and(x2<250)and(y2<250)) or ((x<250) and (y<250) and (X2>250) and (y2>250)) or ((x>250) and (y<250) and (x2<250) and (y2>250)) or ((x<250) and (y>250) and (x2>250) and (y2<250))then
    begin
    ListBox1.Items.Text:='1,2,3,4';
      bs:=Image1.Canvas.Brush.Style;
       Image1.Canvas.Brush.Style:=bsClear;
       Image1.Canvas.Rectangle(X,Y,X2,Y2);

       image1.Canvas.Brush.Color:=clGreen;
       Image1.Canvas.Rectangle(x,y,250,250);

       image1.Canvas.Brush.Color:=clBlue;
       Image1.Canvas.Rectangle(x,y2,250,250);

       image1.Canvas.Brush.Color:=clRed;
       Image1.Canvas.Rectangle(x2,y2,250,250);

       image1.Canvas.Brush.Color:=clYellow;
       Image1.Canvas.Rectangle(x2,y,250,250);

       Image1.Canvas.Brush.Style:=bs;
    end;
  end;
end;

procedure TForm2.Clear;
var i, k:integer;
begin
Image1.Canvas.Pen.Width:=1;
Image1.Canvas.pen.Color:=clBlack;
image1.Canvas.Brush.Color:=clwhite;
image1.Canvas.Rectangle(0,0,500,500);
image1.Canvas.MoveTo(250,0); image1.Canvas.LineTo(250,500);
image1.Canvas.MoveTo(0,250); image1.Canvas.LineTo(500,250);
k:=50;
for i:=1 to 9 do begin
image1.Canvas.MoveTo(247,k); image1.Canvas.LineTo(254,k);
image1.Canvas.MoveTo(k,247); image1.Canvas.LineTo(k,254);
image1.Canvas.TextOut(k-9,257,inttostr(k-250));
if k<>250 then image1.Canvas.TextOut(223,k-7,inttostr(-k+250));
k:=k+50;
end;
end;



procedure TForm2.Edit1Change(Sender: TObject);
var
u:integer;
begin
try
u:=StrToInt(Edit1.Text);
if u>250 then
  begin
  ShowMessage('Превышен диапозон допустимого положительного значения');
    edit1.Text:='0';
  end;
if u<-250 then
  begin
  ShowMessage('Превышен диапозон допустимого отрицательного значения');
    edit1.Text:='0';
  end;
except
 //edit1.Text:='0';
end;
end;

procedure TForm2.Edit2Change(Sender: TObject);
var
u:integer;
begin
try
u:=StrToInt(Edit2.Text);
if u>250 then
  begin
  ShowMessage('Превышен диапозон допустимого положительного значения');
    edit2.Text:='0';
  end;
if u<-250 then
  begin
  ShowMessage('Превышен диапозон допустимого отрицательного значения');
    edit2.Text:='0';
  end;
except
 //edit1.Text:='0';
end;
end;

procedure TForm2.Edit3Change(Sender: TObject);
var
u:integer;
begin
try
u:=StrToInt(Edit3.Text);
if u>250 then
  begin
  ShowMessage('Превышен диапозон допустимого положительного значения');
    edit3.Text:='0';
  end;
if u<-250 then
  begin
  ShowMessage('Превышен диапозон допустимого отрицательного значения');
    edit3.Text:='0';
  end;
except
 //edit1.Text:='0';
end;
end;

procedure TForm2.Edit4Change(Sender: TObject);
var
u:integer;
begin
try
u:=StrToInt(Edit4.Text);
if u>250 then
  begin
  ShowMessage('Превышен диапозон допустимого положительного значения');
    edit4.Text:='0';
  end;
if u<-250 then
  begin
  ShowMessage('Превышен диапозон допустимого отрицательного значения');
    edit4.Text:='0';
  end;
except
 //edit1.Text:='0';
end;
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
application.Terminate;
end;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
application.Terminate;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
Clear;
end;

procedure TForm2.N3Click(Sender: TObject);
begin
//edit1.Text:='0';
//edit2.Text:='0';
//edit3.Text:='0';
//edit4.Text:='0';
ListBox1.Items.Text:='';
Clear;
end;

end.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:39.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025