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.
сложность задачи в неправельной формулировке!
против часовой стрелки при создании приложения на компьютере
с нечетным номером
и по часовой стрелке при создании приложения на компьютере
с четным номером."
"для хранения номера состояния формы – ее свойство Tag."
вот как это понимать?? какие номера???(это про первую цитату)
что дает свойство teg для чего используеться??
из дельфийской справки:
Цитата:
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.
Цитата: poloz!
"Форма должна перемещаться по углам экрана
против часовой стрелки при создании приложения на компьютере
с нечетным номером
и по часовой стрелке при создании приложения на компьютере
с четным номером."
"для хранения номера состояния формы – ее свойство Tag."
вот как это понимать?? какие номера???(это про первую цитату)
что дает свойство teg для чего используеться??
против часовой стрелки при создании приложения на компьютере
с нечетным номером
и по часовой стрелке при создании приложения на компьютере
с четным номером."
"для хранения номера состояния формы – ее свойство Tag."
вот как это понимать?? какие номера???(это про первую цитату)
что дает свойство teg для чего используеться??
Я так понимаю, тебе нужно что-то вроде этого?..
Код:
скопируй код.
Создай новый проект в делфи.
дважды щелкни по форме.
выдели весь текст и удали его
вставь приведенный код.
запусти на выполнение.
спасибо однако не доходит что подразумеваеться под "четным номером компьютера" и "не четным"??
Создайте приложение, при запуске которого в центре экрана появляется окно
формы небольшого размера стандартного цвета.
Затем, при каждом выполнении "щелчка" в области формы, эта форма
должна сначала переместиться в левый верхний угол экрана и одновременно
изменить свой цвет,
затем при выполнении "щелчков" форма должна перемещаться
по оставшимся углам экрана
и одновременно менять свой цвет,
а также свои высоту и ширину (сначала в 2, затем в 3, затем в 4 раза)
и затем снова должна "вернуться" в левый верхний угол
с теми цветом и размерами, которые были у нее в этом углу.
При нажатии на любую клавишу на клавиатуре (событие OnKeyPress)
форма должна она оказаться с первоначальными цветом и размерами
в центре экрана (значение свойства Position формы должно быть равно
poScreenCenter).
Форма должна перемещаться по углам экрана
против часовой стрелки при создании приложения на компьютере
с нечетным номером
и по часовой стрелке при создании приложения на компьютере
с четным номером.
Окно формы должно быть полностью видно на экране при всех перемещениях.
Используйте для определения положения окна формы на экране ее свойства
Top и Left,
для определения размеров окна формы – ее свойства Height и Width,
для хранения номера состояния формы – ее свойство Tag.
При использовании свойств формы Form1 наименования этих свойств можно
указывать как вместе с именем формы Form1, так и без него, например:
Form1.Height или просто Height.
Размеры экрана (объект Screen) определяются его свойствами
Screen.Height и Screen.Width.
причем тут 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.
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.
Приведен полный текст модуля, а значит опять:
Цитата:
скопируй код.
Создай новый проект в делфи.
дважды щелкни по форме.
выдели весь текст и удали его
вставь приведенный код.
запусти на выполнение.
Создай новый проект в делфи.
дважды щелкни по форме.
выдели весь текст и удали его
вставь приведенный код.
запусти на выполнение.
спасибо!!!!!!!!!!!!!!! большое!Ё!!!!!!!!!!!!!!!!!!!!!!!!