Консультация № 178207
04.05.2010, 22:01
0.00 руб.
0 3 1
Здравствуйте, уважаемые эксперты! Помогите, пожалуйста, решить задачи на Delphi:
1. Подсчитать, сколько секунд прошло с начала часа. Часы (h), минуты(m), секунды (s) вводятся пользователем.
2. Напишите приложение, в заголовке окна которого описан его размер (высота и ширина), а в окне изображен прямоугольник, закрашенный вертикальными линиями. Стороны прямоугольника расположены на расстоянии 10 пикселей от границ окна, независимо от размеров окна.
3. Создайте приложение с заставкой. Приложение должно состоять из двух форм. На первой форме находятся сведения о создателе приложения и кнопка с надписью «Показать заставку». Окно заставки черного цвета, без заголовка, занимает весь экран . В окне заставки в произвольном месте формы должны появляться попеременно эллипсы и прямоугольники разного цвета и размера (можно воспользоваться компонентом Timer, расположенным на странице System). Приложение должно закрываться при нажатии любой клавиши клавиатуры, предварительно выдав сообщение, уточняющее, точно ли пользователь хочет закрыть приложение.

Обсуждение

Неизвестный
05.05.2010, 10:31
общий
Юлия Сомова:
На каждую отдельную задачу желательно задавать один вопрос.

Подсказки для решения первой задачи

2. Изменение заголовка окна


давно
Профессионал
153662
1070
06.05.2010, 12:54
общий
Юлия Сомова:
1. Можно посчитать так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
h, m, s: word;
begin
h:= StrToInt(Edit1.Text); // Записываем в переменную количество часов
m:= StrToInt(Edit2.Text); // Записываем в переменную количество минут
S:= StrToInt(Edit3.Text); // Записываем в переменную количество секунд
m:= (h * 60) + m; // Считаем количество минут
s:= (m * 60) + s; // Считаем количество секунд
Label1.Caption:= 'Прошло ' + IntToStr(s) + ' сек.'; // Выводим результат
end;


2. Можно нарисовать так:
Код:
procedure TForm1.FormCreate(Sender: TObject);  //  Выводим высоту и ширину в заголовок формы
begin
Form1.Caption:= 'Высота ' + IntToStr(Form1.Height) + ', ' + 'Ширина ' + IntToStr(Form1.Width);
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
Form1.Canvas.Brush.Style:= bsVertical; // Назначаем заливку вертикальными линиями для кисти формы
Form1.Canvas.Brush.Color:= clBlack; // Назначаем чёрный цвет кисти формы
Form1.Canvas.Rectangle(10, 10, 200, 100); // Рисуем на форме прямоугольник
end;


3. Можно сделать таким образом: главная форма
Код:
unit About;

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
Buttons, ExtCtrls;

type
TAboutBox = class(TForm)
Panel1: TPanel;
ProgramIcon: TImage;
ProductName: TLabel;
Version: TLabel;
Copyright: TLabel;
Comments: TLabel;
OKButton: TButton;
procedure OKButtonClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
AboutBox: TAboutBox;

implementation

uses Unit2;

{$R *.dfm}

procedure TAboutBox.OKButtonClick(Sender: TObject);
begin
Randomize; // Инициализация генератора случайных чисел
// Выставляем размер формы на весь экран
Form1.Left:= 0;
Form1.Top:= 0;
Form1.Height:= Screen.Height;
Form1.Width:= Screen.Width;
// Показали форму
Form1.Show;
end;

end.
заставка
Код:
unit Unit2;

interface

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

type
TForm1 = class(TForm)
Timer1: TTimer;
procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
pr: boolean;

implementation

{$R *.dfm}

function RGBToColor: TColor; // Функция возвращает случайный цвет
var
R, G, B: Byte;
begin
R:= Random(256);
G:= Random(256);
B:= Random(256);
Result := B shl 16 or G shl 8 or R;
if pr then // Последовательно меняем тип фигуры
pr:= false
else
pr:= true;
end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
If MessageDlg('Вы действительно хотите закрыть окно?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
Application.Terminate; // Если ответ "да", закрываем приложение
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Form1.Canvas.Brush.Style:= bsSolid; // Выставили заполнение кисти сплошным
Form1.Canvas.Brush.Color:= clBlack; // Цвет кисти чёрный
Form1.Canvas.FillRect(Form1.Canvas.ClipRect); // Отчищаем форму от фигуры
Form1.Canvas.Brush.Color:= RGBToColor; // Цвет кисти случайный
if pr then // Рисуем прямоугольник
Form1.Canvas.Rectangle(Random(Form1.Width), Random(Form1.Height), 200, 100)
else // или рисуем эллипс
Form1.Canvas.Ellipse(Random(Form1.Width), Random(Form1.Height), 200, 100);
end;

end.
программа
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

давно
Профессионал
153662
1070
07.05.2010, 16:44
общий
это ответ
Здравствуйте, Юлия Сомова.
1. Секунды можно посчитать так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
h, m, s: word;
begin
h:= StrToInt(Edit1.Text); // Записываем в переменную количество часов
m:= StrToInt(Edit2.Text); // Записываем в переменную количество минут
S:= StrToInt(Edit3.Text); // Записываем в переменную количество секунд
m:= (h * 60) + m; // Считаем количество минут
s:= (m * 60) + s; // Считаем количество секунд
Label1.Caption:= 'Прошло ' + IntToStr(s) + ' сек.'; // Выводим результат
end;


2. Прямоугольник можно нарисовать так:
Код:
procedure TForm1.FormCreate(Sender: TObject);  //  Выводим высоту и ширину в заголовок формы
begin
Form1.Caption:= 'Высота ' + IntToStr(Form1.Height) + ', ' + 'Ширина ' + IntToStr(Form1.Width);
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
Form1.Canvas.Brush.Style:= bsVertical; // Назначаем заливку вертикальными линиями для кисти формы
Form1.Canvas.Brush.Color:= clBlack; // Назначаем чёрный цвет кисти формы
Form1.Canvas.Rectangle(10, 10, 200, 100); // Рисуем на форме прямоугольник
end;


3. Программу - заставку можно сделать таким образом:

главная форма
Код:
unit About;

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
Buttons, ExtCtrls;

type
TAboutBox = class(TForm)
Panel1: TPanel;
ProgramIcon: TImage;
ProductName: TLabel;
Version: TLabel;
Copyright: TLabel;
Comments: TLabel;
OKButton: TButton;
procedure OKButtonClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
AboutBox: TAboutBox;

implementation

uses Unit2;

{$R *.dfm}

procedure TAboutBox.OKButtonClick(Sender: TObject);
begin
Randomize; // Инициализация генератора случайных чисел
// Выставляем размер формы на весь экран
Form1.Left:= 0;
Form1.Top:= 0;
Form1.Height:= Screen.Height;
Form1.Width:= Screen.Width;
// Показали форму
Form1.Show;
end;

end.
заставка
Код:
unit Unit2;

interface

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

type
TForm1 = class(TForm)
Timer1: TTimer;
procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
pr: boolean;

implementation

{$R *.dfm}

function RGBToColor: TColor; // Функция возвращает случайный цвет
var
R, G, B: Byte;
begin
R:= Random(256);
G:= Random(256);
B:= Random(256);
Result := B shl 16 or G shl 8 or R;
if pr then // Последовательно меняем тип фигуры
pr:= false
else
pr:= true;
end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
If MessageDlg('Вы действительно хотите закрыть окно?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
Application.Terminate; // Если ответ "да", закрываем приложение
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Form1.Canvas.Brush.Style:= bsSolid; // Выставили заполнение кисти сплошным
Form1.Canvas.Brush.Color:= clBlack; // Цвет кисти чёрный
Form1.Canvas.FillRect(Form1.Canvas.ClipRect); // Отчищаем форму от фигуры
Form1.Canvas.Brush.Color:= RGBToColor; // Цвет кисти случайный
if pr then // Рисуем прямоугольник
Form1.Canvas.Rectangle(Random(Form1.Width), Random(Form1.Height), 200, 100)
else // или рисуем эллипс
Form1.Canvas.Ellipse(Random(Form1.Width), Random(Form1.Height), 200, 100);
end;

end.
Весь проект "программа - заставка".
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

Форма ответа