Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

сложность задачи в неправельной формулировке!

21K
10 декабря 2007 года
poloz!
18 / / 16.04.2007
"Форма должна перемещаться по углам экрана
против часовой стрелки при создании приложения на компьютере
с нечетным номером
и по часовой стрелке при создании приложения на компьютере
с четным номером."


"для хранения номера состояния формы – ее свойство Tag."

вот как это понимать?? какие номера???(это про первую цитату)

что дает свойство teg для чего используеться??
261
10 декабря 2007 года
ahilles
1.5K / / 03.11.2005
свойство tag полностью предоставлено в личное использование программисту с ним можно делать что угодно.
из дельфийской справки:
Цитата:
Tag has no predefined meaning. The Tag property is provided for the convenience of developers. It can be used for storing an additional integer value or it can be typecast to any 32-bit value such as a component reference or a pointer.

20K
10 декабря 2007 года
yager84
37 / / 15.05.2007
Цитата: poloz!
"Форма должна перемещаться по углам экрана
против часовой стрелки при создании приложения на компьютере
с нечетным номером
и по часовой стрелке при создании приложения на компьютере
с четным номером."


"для хранения номера состояния формы – ее свойство Tag."

вот как это понимать?? какие номера???(это про первую цитату)

что дает свойство teg для чего используеться??



Я так понимаю, тебе нужно что-то вроде этого?..

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    Timer1: TTimer;
    procedure Sdvig(Sender: TObject);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  width:=150; //ширина создаваемой формы
  height:=100; //высота создаваемой формы

  Timer1:=TTimer.Create(Self); //создаем Timer
  Timer1.Enabled:=False; // запрещаем таймеру действия
  Timer1.Interval:=1000; // устанавливаем частоту срабатывания таймера
  Timer1.OnTimer:=Sdvig; //назначаем процедуру событию OnTimer объекта TTimer
  if Tag mod 2 = 0 then
  begin
    //по часовой
    Top:=0;
    Left:=0;
    {форму позиционируем в верхнем левом углу}
  end
  else
  begin
    //против часовой
    Top:=0;
    Left:=screen.Width - width;
    {форму позиционируем в верхнем правом углу}
  end;
  Timer1.Enabled:=True;  // разрешаем таймеру действия
end;

procedure TForm1.Sdvig(Sender: TObject);
{процедура высчитывает значения верхней и левой точки формы
и в соответствии с полученными данными изменяет их}
var
  x0, y0, x1, y1: integer;
begin
  x0:=0;
  y0:=0;
  x1:=screen.Width - width;
  y1:=screen.Height - height;
  if Tag mod 2 = 0 then
  begin
    if (top = y0) and (left = x0) then
    begin
      top:=y0;
      left:=x1;
    end
    else if (top = y0) and (left = x1) then
    begin
      top:=y1;
      left:=x1;
    end
    else if (top = y1) and (left = x1) then
    begin
      top:=y1;
      left:=x0;
    end
    else if (top = y1) and (left = x0) then
    begin
      top:=y0;
      left:=x0;
    end;
  end
  else
  begin
    if (top = y0) and (left = x0) then
    begin
      top:=y1;
      left:=x0;
    end
    else if (top = y0) and (left = x1) then
    begin
      top:=y0;
      left:=x0;
    end
    else if (top = y1) and (left = x1) then
    begin
      top:=y0;
      left:=x1;
    end
    else if (top = y1) and (left = x0) then
    begin
      top:=y1;
      left:=x1;
    end;
  end;
end;

end.

скопируй код.
Создай новый проект в делфи.
дважды щелкни по форме.
выдели весь текст и удали его
вставь приведенный код.
запусти на выполнение.
21K
11 декабря 2007 года
poloz!
18 / / 16.04.2007
спасибо однако не доходит что подразумеваеться под "четным номером компьютера" и "не четным"??
21K
11 декабря 2007 года
poloz!
18 / / 16.04.2007
может я чего то не допонимаю но все задание выглядит так:
Создайте приложение, при запуске которого в центре экрана появляется окно
формы небольшого размера стандартного цвета.
Затем, при каждом выполнении "щелчка" в области формы, эта форма
должна сначала переместиться в левый верхний угол экрана и одновременно
изменить свой цвет,
затем при выполнении "щелчков" форма должна перемещаться
по оставшимся углам экрана
и одновременно менять свой цвет,
а также свои высоту и ширину (сначала в 2, затем в 3, затем в 4 раза)
и затем снова должна "вернуться" в левый верхний угол
с теми цветом и размерами, которые были у нее в этом углу.
При нажатии на любую клавишу на клавиатуре (событие OnKeyPress)
форма должна она оказаться с первоначальными цветом и размерами
в центре экрана (значение свойства Position формы должно быть равно
poScreenCenter).
Форма должна перемещаться по углам экрана
против часовой стрелки при создании приложения на компьютере
с нечетным номером
и по часовой стрелке при создании приложения на компьютере
с четным номером.
Окно формы должно быть полностью видно на экране при всех перемещениях.
Используйте для определения положения окна формы на экране ее свойства
Top и Left,
для определения размеров окна формы – ее свойства Height и Width,
для хранения номера состояния формы – ее свойство Tag.
При использовании свойств формы Form1 наименования этих свойств можно
указывать как вместе с именем формы Form1, так и без него, например:
Form1.Height или просто Height.
Размеры экрана (объект Screen) определяются его свойствами
Screen.Height и Screen.Width.


причем тут tag?? и на исходник интересно было бы посмотреть! при чвеличении размера до какой степени он должен увеличиваться?
20K
12 декабря 2007 года
yager84
37 / / 15.05.2007
В части определения четности или нечетности компьютера, тебе и нужно свойство Tag.

То есть, если Tag - четное, то комп - четный,
иначе - нечетный;

Бери код. Изучай. С тебя пиво... или зеленый квадратик.

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    TempHeight: integer;
    TempWidth: integer;
    ColorVal: TColor;
    procedure Sdvig(Sender: TObject);
    procedure KPress(Sender: TObject; var Key: Char);
    function  FirstSize: TPoint;
    function FirstPosition(Size: TPoint): TPoint;
    procedure SetDefault;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function TForm1.FirstPosition(Size: TPoint): TPoint;
begin
  Result:=Point((Screen.Width div 2) - (Size.X div 2), (Screen.Height div 2) - (Size.Y div 2));
  {функция высчитывает первоначальную позицию}
end;

function TForm1.FirstSize: TPoint;
begin
  Result:=Point(100, 100); //высчитываем первоначальный размер
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FormStyle:=fsStayOnTop; //стиль формы - поверх всех окон
  OnClick:=Sdvig; //назначаем процедуру событию формы OnClick
  OnKeyPress:=KPress; //назначаем процедуру событию формы OnKeyPress
  ColorVal:=Color;//Сохраняем начальный цвет в глобальной переменной
  SetDefault; //вызываем процедуру
  TempHeight:=Height; //сохраняем начальные размеры
  TempWidth:=Width;   //в глобальной переменной

end;

procedure TForm1.KPress(Sender: TObject; var Key: Char);
begin
  SetDefault; //вызываем процедуру
end;

procedure TForm1.Sdvig(Sender: TObject);
{процедура высчитывает значения верхней и левой точки формы
и в соответствии с полученными данными изменяет их.
При этом учитываются размеры формы.
Так же процедура меняет цвет формы на случайный}
var
  x0, y0: integer;
begin
  Randomize;
  x0:=0;
  y0:=0;
  if Tag mod 2 = 0 then
  begin
    if (top = y0) and (left = x0) then
    begin
      height:=TempHeight * 2;
      width:=TempWidth * 2;
      top:=y0;
      left:=screen.Width - width;
      Color:=RGB(Random(255), Random(255), Random(255));
    end
    else if (top = y0) and (left = screen.Width - width) then
    begin
      height:=TempHeight * 3;
      width:=TempWidth * 3;
      top:=screen.Height - height;
      left:=screen.Width - width;
      Color:=RGB(Random(255), Random(255), Random(255));
    end
    else if (top = screen.Height - height) and (left = screen.Width - width) then
    begin
      height:=TempHeight * 4;
      width:=TempWidth * 4;
      top:=screen.Height - height;
      left:=x0;
      Color:=RGB(Random(255), Random(255), Random(255));
    end
    else if (top = screen.Height - height) and (left = x0) then
    begin
      height:=TempHeight;
      width:=TempWidth;
      top:=y0;
      left:=x0;
      Color:=ColorVal;
    end
    else
    begin
      height:=TempHeight;
      width:=TempWidth;
      top:=y0;
      left:=x0;
      Color:=ColorVal;
    end;
  end
  else
  begin
    if (top = y0) and (left = x0) then
    begin
      height:=TempHeight * 2;
      width:=TempWidth * 2;
      top:=screen.Height - height;
      left:=x0;
      Color:=RGB(Random(255), Random(255), Random(255));
    end
    else if (top = y0) and (left = screen.Width - width) then
    begin
      height:=TempHeight;
      width:=TempWidth;
      top:=y0;
      left:=x0;
      Color:=ColorVal;
    end
    else if (top = screen.Height - height) and (left = screen.Width - width) then
    begin
      height:=TempHeight * 4;
      width:=TempWidth * 4;
      top:=y0;
      left:= screen.Width - width;
      Color:=RGB(Random(255), Random(255), Random(255));
    end
    else if (top = screen.Height - height) and (left = x0) then
    begin
      height:=TempHeight * 3;
      width:=TempWidth * 3;
      top:=screen.Height - height;
      left:=screen.Width - width;
      Color:=RGB(Random(255), Random(255), Random(255));
    end
    else
    begin
      height:=TempHeight;
      width:=TempWidth;
      top:=y0;
      left:=x0;
      Color:=ColorVal;
    end;
  end;
end;

procedure TForm1.SetDefault;
{процедура устанавливает начальные параметры, такие как
размер формы
положение формы
цвет формы}
var
  FSize: TPoint;
  FPosition: TPoint;
begin
  FSize:=FirstSize; //получаем начальные значения ширины и высоты
  Width:=FSize.X; //ширина создаваемой формы
  Height:=FSize.Y; //высота создаваемой формы
  Color:=ColorVal; //Восстанавливаем первоначальный цвет формы
  FPosition:= FirstPosition(FSize); //получаем начальные значения верхней и левой точки
  Left:=FPosition.X; //позиционирование формы
  Top:=FPosition.Y;  //позиционирование формы
end;

end.


Приведен полный текст модуля, а значит опять:
Цитата:
скопируй код.
Создай новый проект в делфи.
дважды щелкни по форме.
выдели весь текст и удали его
вставь приведенный код.
запусти на выполнение.

21K
13 декабря 2007 года
poloz!
18 / / 16.04.2007
спасибо!!!!!!!!!!!!!!! большое!Ё!!!!!!!!!!!!!!!!!!!!!!!!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог