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

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


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

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

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

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

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

Номер выпуска:1523
Дата выхода:29.04.2010, 01:00
Администратор рассылки:Калашников О.А., Руководитель
Подписчиков / экспертов:409 / 198
Вопросов / ответов:1 / 1

Вопрос № 178002: уважаемые эксперт!! помогите с задачей на delphi. Необходимо создать приложение Windows с графическим интерфейсом, выполняющее определенную последовательность действий . Создать меню с командами Input, Work. При выборе команды Input открывать окно...



Вопрос № 178002:

уважаемые эксперт!! помогите с задачей на delphi. Необходимо создать приложение Windows с графическим интерфейсом, выполняющее определенную последовательность действий . Создать меню с командами Input, Work.
При выборе команды Input открывать окно диалога, содержащее:
- три поля ввода типа TEdit с метками Radius, Height, Density;
- группу из двух флажков (Volume, Mass) типа TCheckBox;
- кнопку типа TButton.
Обеспечить возможность:
- ввода радиуса, высоты и плотности конуса;
- выбора режима с помощью флажков, обеспечивающих подсчет объема и/или массы конуса.
При выборе команды Work открывать окно сообщений с результатами.
Заголовок окна должен содержать ФИО и номер варианта. Внизу окна приложения должна отображаться текущая дата, день недели и время. Обязательными пунктами в меню программы должны быть: Help, при выборе которого открывается окно с поясняющими инструкциями; About, при выборе которого открывается окно с информацией о разработчике; Exit, при выборе которого завершается работа приложения.

Отправлен: 24.04.2010, 00:41
Вопрос задал: Невалёный Виталий Владимирович, Посетитель
Всего ответов: 1
Страница вопроса »


Отвечает Евгений/Genia007/, Бакалавр :
Здравствуйте, Невалёный Виталий Владимирович.
Вот то что у меня получилось. В программу вводятся радиус и высота в см, а вывод результатов по объёму - см куб, по массе - гр.:
Код:
unit konus;  //  Главный модуль программы

interface

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

type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
Input1: TMenuItem;
Work1: TMenuItem;
Help1: TMenuItem;
About1: TMenuItem;
Exit1: TMenuItem;
Image1: TImage;
StatusBar1: TStatusBar;
Timer1: TTimer;
procedure Exit1Click(Sender: TObject);
procedure About1Click(Sender: TObject);
procedure Input1Cl ick(Sender: TObject);
procedure Work1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Help1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses ABOUT, input, Output, help;

{$R *.dfm}

procedure TForm1.About1Click(Sender: TObject);
begin
AboutBox.ShowModal; // Показ формы в модальном режиме
end;

procedure TForm1.Exit1Click(Sender: TObject);
begin
Close; // Закрыли программу
end;

procedure TForm1.Help1Click(Sender: TObject);
begin
HelpForm.ShowModal; // Показ формы помощи в модальном режиме
end;

procedure TForm1.Input1Click(Sender: TObject);
begin
InputForm.ShowModal; // Показ формы ввода в модальном режиме
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
StatusBar1.Panels[0].Text:= DateToStr (Now); // Вывод на панель состояния рекущей даты
StatusBar1.Panels[1].Text:= FormatDateTime('dddd',date); // Вывод на панель состояния текущего дня
StatusBar1.Panels[2].Text:= TimeToStr(Now); // Вывод на панель состояния текущего времени
end;

procedure TForm1.Work1Click(Sender: TObject);
begin
OutputForm.Label1.Caption:= 'Volume = ' + FloatToStr(Ob) + ' см куб'; // Вывод результата расчёта объёма конуса
OutputForm.Label2.Caption:= 'Mass = ' + FloatToStr(Ms) + ' гр'; // Вывод результата расчёта массы конуса
OutputForm.ShowModal; // Показ формы вывода результатов в модальном режиме
end;

end.

unit input; // Модуль ввода данных

interface

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

type
TInputForm = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
la bel1: TLabel;
Label2: TLabel;
Label3: TLabel;
GroupBox1: TGroupBox;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;

var
InputForm: TInputForm;
Rd, Hg, Dn, Ob, Ms: single;

implementation

{$R *.dfm}

procedure TInputForm.Button1Click(Sender: TObject);
begin
Close; // Закрыли форму ввода
Try // Пробуем выполнить
Rd:= StrToFloat(Edit1.Text); // Присваиваем переменной радиус конуса
Except // Не получилось, ошибка преобразования строки в число
ShowMessage('Ошибка ввода числа!'); // Сообщение об ошибке
Edit1.Text:= '1';
Rd:= 1;
End;
Try // Пробуем выполнить
Hg:= StrToFloat(Edit2.Text); // Присваиваем переменной высоту конуса
Except // Не получилось, ошибка преобразования строк и в число
ShowMessage('Ошибка ввода числа!'); // Сообщение об ошибке
Edit2.Text:= '1';
Hg:= 1;
End;
Try // Пробуем выполнить
Dn:= StrToFloat(Edit3.Text); // Присваиваем переменной плотность конуса
Except // Не получилось, ошибка преобразования строки в число
ShowMessage('Ошибка ввода числа!'); // Сообщение об ошибке
Edit3.Text:= '1';
Dn:= 1;
End;
if CheckBox1.Checked then // Если выбрали расчёт объёма конуса
Ob:= (Pi * sqr(Rd) * Hg) / 3; // Рассчитываем объём конуса
if CheckBox2.Checked then // Если выбрали расчёт массы конуса
Ms:= (Dn * (Pi * Hg * sqr(Rd))) / 3; // Рассчитываем массу конуса
end;

procedure TInputForm.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
Case key of // Вводим только числа и запятую
'0'..'9': ;
',': ;
#8: ;
else
key:= Chr(0); // Символ не отображать
End;
end;

procedure TInputForm.FormCreate(Sender: TObject);
begin
Ob:= 0;
Ms:= 0;
end;

end.
Весь проект можно взять здесь.
-----
Помогли тебе, помоги и ты.

Ответ отправил: Евгений/Genia007/, Бакалавр
Ответ отправлен: 24.04.2010, 22:54
Номер ответа: 260999

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

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

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

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

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

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

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

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


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

    В избранное