Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2014, 22:05   #1
csn
 
Регистрация: 18.05.2014
Сообщений: 5
По умолчанию Button + label delphi7

Добрый день!
Помогите пожалуйста.

Есть:
Button1 (Вкл/Выкл) + label1
Button2 (Зарядка) + label2 = 100% + progressbar1
Button3 (Скорость) + label3
Button4


При нажатии button1, вкл/выкл питание отображение в label1, при вкл питании загорается button3 это я сделал.
При нажатии button2, исходное значение 100%, если значение ниже 100% должна начинаться зарядка.
Уровень зарядки зависит от скорости, чем выше скорость тем быстрее тратится зарядка.
При нажатии button3, должна увеличиваться скорость на 10 и отображаться в label3
При нажатии button4, идет сброс скорости до 0 в label3

Код:
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, maine, StdCtrls, jpeg, ExtCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    Label2: TLabel;
    ProgressBar1: TProgressBar;
    Button3: TButton;
    Button2: TButton;
    Image1: TImage;
    Label3: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure Show;
  end;

var
  Form1: TForm1;
  ec:TElCar;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 ec:=TElCar.Create(show);
 show;
end;

procedure TForm1.Show;
begin
 if ec.power then
  begin
   Label1.Caption:='Питание: включено';
   Button3.Enabled:=true;
  end
 else
  begin
   Label1.Caption:='Питание: выключено';
   Button3.Enabled:=false;
  end;

 Label2.Caption:='Зарядка: ' + IntToStr(ec.energy) + '%';
 ProgressBar1.Position:=ec.energy;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 ec.switchPower;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 ec.charge(10);
end;


end.

Последний раз редактировалось Stilet; 18.05.2014 в 23:12.
csn вне форума Ответить с цитированием
Старый 18.05.2014, 22:23   #2
csn
 
Регистрация: 18.05.2014
Сообщений: 5
По умолчанию

так, зарядку я сделал)) шаг на 10 увеличивается
csn вне форума Ответить с цитированием
Старый 19.05.2014, 23:18   #3
csn
 
Регистрация: 18.05.2014
Сообщений: 5
По умолчанию

Сделал:
button1, вкл/выкл питание отображение в label1, при вкл питании загорается button3 .
button2, исходное значение 100%, если значение ниже 100% должна начинаться зарядка.
button3, должна увеличиваться скорость на 10 и отображаться в label3.

Осталось:
button4, сброс до 0 в label3
button3, вычитает с label2 по 10, за каждое нажатие до 0

Поможете?

Цитата:
unit elcar;

interface

uses ExtCtrls;

Type
TOP = procedure of object;

TElCar = class
private
p:TOP;
pwr: boolean;
e: byte;
k: byte;
timer: TTimer;
function getPower:boolean;
function getEnergy:byte;
function getGo:byte;
procedure onTimer(Sender: TObject);
protected
public
constructor Create(pp:TOP);
procedure switchPower;
procedure charge(chargeTime: byte);
procedure speed(speedTime: byte);
property power:boolean Read getPower;
property energy:byte Read getEnergy;
property Go:byte Read getGo;
end;

const
energyPerDay = 0.05;
energyPerHour = 1;

GoPerDay = 0.05;
GoPerHour = 1;

implementation

uses SysUtils, DateUtils, Dialogs;

constructor TElCar.Create(pp:TOP);
begin
p:=pp;
pwr:=false;
e:=100;
k:=0;
timer:=TTimer.Create(nil);
timer.Interval:=1000;
timer.OnTimer:=OnTimer;
timer.Enabled:=true;
end;

function TElCar.getPower:boolean;
begin
result:=pwr;
end;

function TElCar.getEnergy;
begin
Result:=e;
end;

function TElCar.getGo;
begin
Result:=k;
end;

procedure TElCar.onTimer(Sender: TObject);
begin
p;
end;

procedure TElCar.switchPower;
begin
pwr:=not(pwr);
p;
end;


procedure TElCar.charge(chargeTime: byte);
var
r:real;
begin
r:=round(chargeTime*energyPerHour);
if e+r>100 then
begin
chargeTime:=round((100-e)/energyPerHour);
e:=100;
end
else e:=round(e+r);
p;
end;

procedure TElCar.speed(speedTime: byte);
var
t:real;
begin
t:=round(speedTime*goPerHour);
if k+t>250 then
begin
speedTime:=round((100-k)/goPerHour);
k:=250;
end
else k:=round(k+t);
p;
end;

end.
Цитата:
unit main;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ElCar, StdCtrls, ExtCtrls, ComCtrls, jpeg;

type
TForm1 = class(TForm)
Label1: TLabel;
Button1: TButton;
Button3: TButton;
Button2: TButton;
Label2: TLabel;
Label3: TLabel;
ProgressBar1: TProgressBar;
Image1: TImage;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure Show;
end;

var
Form1: TForm1;
ec:TElCar;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
ec:=TElCar.Create(show);
show;
end;

procedure TForm1.Show;
begin
if ec.power then
begin
Label1.Caption:='Питание: включено';
Button3.Enabled:=true;
end
else
begin
Label1.Caption:='Питание: выключено';
Button3.Enabled:=false;
end;
Label2.Caption:='Зарядка: ' + IntToStr(ec.energy) + '%';
Label3.Caption:='Скорость: ' + IntToStr(ec.Go)+ ' км/ч';
ProgressBar1.Position:=ec.energy;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ec.switchPower;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ec.charge(10);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
ec.speed(15);
end;


end.
csn вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как привязать компоненту TComboBox к Button, чтобы при нажатии Button, данные из ComboBox вводились в TstringGrid Marta_ Помощь студентам 2 15.10.2011 01:02
unable to rename 'C:\ProgramFiles\Borland\Delphi7\Bi n\Delphi32.$$$' to 'C:\Program Files\Borland\Delphi7\ KazBoy Помощь студентам 1 12.04.2011 18:07
Button ex-hack Общие вопросы C/C++ 5 16.04.2010 23:50
При расположении Label на компонентах, место под Label, не реагирует на событие onClick. NavigatorNeba Компоненты Delphi 3 15.11.2008 19:56
Вопрос по label. Как сделать так чтобы label была прозрачной. Lonix Компоненты Delphi 2 01.04.2007 06:23