Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на Delphi и Lazarus


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

Boriss
Статус: Академик
Рейтинг: 2256
∙ повысить рейтинг »
star9491
Статус: Практикант
Рейтинг: 1813
∙ повысить рейтинг »
Евгений/Genia007/
Статус: Бакалавр
Рейтинг: 927
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / Delphi и Lazarus

Номер выпуска:1529
Дата выхода:10.05.2010, 21:30
Администратор рассылки:Калашников О.А., Руководитель
Подписчиков / экспертов:388 / 195
Вопросов / ответов:1 / 1

Вопрос № 178207: Здравствуйте, уважаемые эксперты! Помогите, пожалуйста, решить задачи на Delphi: 1. Подсчитать, сколько секунд прошло с начала часа. Часы (h), минуты(m), секунды (s) вводятся пользователем. 2. Напишите приложение, в заголовке окна которого опис...



Вопрос № 178207:

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

Отправлен: 04.05.2010, 22:01
Вопрос задал: Юлия Сомова, Посетитель
Всего ответов: 1
Страница вопроса »


Отвечает Евгений/Genia007/, Бакалавр :
Здравствуйте, Юлия Сомова.
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.
Весь проект "программа - заставка".
-----
Помогли тебе, помоги и ты.

Ответ отправил: Евгений/Genia007/, Бакалавр
Ответ отправлен: 07.05.2010, 16:44
Номер ответа: 261269

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 261269 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.14 от 03.03.2010

    В избранное