Witam.
Mam do napisania na zaliczenie program w Delphi.
Wszystko jest juz prawie gotowe. Problem jest w tym, że jak podam wartości ujemne lub zero to i tak program dokonuje obliczeń i pokazuje wynik obliczeń
Chciałbym żeby w tym miejscu pokazywalo się, że podano bledne wartości.(lub nic nie wyswietlało).
W zalączniku znajduje się program. Proszę o propozycje poprawy. Z góry dziękuje za pomoc.
http://odsiebie.com/pokaz/1835928—2d4d.html
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,Math;
type
TForm1 = class(TForm)
gbWybor: TGroupBox;
rbWalec: TRadioButton;
rbStozek: TRadioButton;
rbKula: TRadioButton;
btnCzysc: TButton;
btnOblicz: TButton;
btnZamknij: TButton;
gbDane: TGroupBox;
Label1: TLabel;
Label2: TLabel;
txtpromien: TEdit;
txtWysokosc: TEdit;
gbWynik: TGroupBox;
lblPole: TLabel;
lblObjetosc: TLabel;
rbOstroslop: TRadioButton;
txtBokpodstawy: TEdit;
Label3: TLabel;
procedure btnZamknijClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btnCzyscClick(Sender: TObject);
procedure rbWalecClick(Sender: TObject);
procedure rbStozekClick(Sender: TObject);
procedure rbKulaClick(Sender: TObject);
procedure btnObliczClick(Sender: TObject);
procedure rbOstroslopClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btnZamknijClick(Sender: TObject);
begin
Close;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
gbWynik.Visible:=FALSE;
gbDane.Visible:=FALSE;
rbWalec.Checked:=FALSE;
rbStozek.Checked:=FALSE;
rbKula.Checked:=FALSE;
end;
procedure TForm1.btnCzyscClick(Sender: TObject);
begin
gbWynik.Visible:=FALSE;
gbDane.Visible:=FALSE;
rbWalec.Checked:=FALSE;
rbStozek.Checked:=FALSE;
rbKula.Checked:=FALSE;
txtpromien.Text:='';
txtWysokosc.Text:='';
btnOblicz.Tag:=0;
end;
procedure TForm1.rbWalecClick(Sender: TObject);
begin
gbDane.Visible:=TRUE;
Label1.Visible:=TRUE;
Label2.Visible:=TRUE;
Label3.Visible:=FALSE;
txtpromien.Visible:=TRUE;
txtWysokosc.Visible:=TRUE;
txtBokpodstawy.Visible:=FALSE;
btnOblicz.Tag:=1;
txtpromien.Text:='';
txtWysokosc.Text:='';
gbWynik.Visible:=FALSE;
end;
procedure TForm1.rbStozekClick(Sender: TObject);
begin
gbDane.Visible:=TRUE;
Label1.Visible:=TRUE;
Label2.Visible:=TRUE;
Label3.Visible:=FALSE;
txtpromien.Visible:=TRUE;
txtWysokosc.Visible:=TRUE;
txtBokpodstawy.Visible:=FALSE;
btnOblicz.Tag:=2;
txtpromien.Text:='';
txtWysokosc.Text:='';
gbWynik.Visible:=FALSE;
end;
procedure TForm1.rbKulaClick(Sender: TObject);
begin
gbDane.Visible:=TRUE;
Label1.Visible:=TRUE;
Label2.Visible:=FALSE;
Label3.Visible:=FALSE;
txtpromien.Visible:=TRUE;
txtWysokosc.Visible:=FALSE;
txtBokpodstawy.Visible:=FALSE;
btnOblicz.Tag:=3;
txtpromien.Text:='';
txtWysokosc.Text:='';
gbWynik.Visible:=FALSE;
end;
procedure TForm1.btnObliczClick(Sender: TObject);
var
a,r,h,l,P,V:real;
begin
case btnOblicz.Tag of
1:
begin
r:=StrToFloat(txtpromien.Text);
h:=StrToFloat(txtWysokosc.Text);
if r <=0 then
MessageBox(Handle,'Podałeś zły promień ! ','Błąd',MB_OK+MB_ICONINFORMATION);
if h<=0 then
MessageBox(Handle,'Podałeś złą wysokość ! ','Błąd',MB_OK+MB_ICONINFORMATION);
V:=pi*r*r*h;
P:=2*(pi*r*r)+(2*pi*r*h);
gbWynik.Visible:=TRUE;
lblPole.Caption:='Pole walca: '+FloatToStr(RoundTo(P,-2));
lblObjetosc.Caption:='Objetosc walca: '+FloatToStr(RoundTo(V,-2));
end;
2:
begin
r:=StrToFloat(txtpromien.Text);
if r <=0 then
MessageBox(Handle,'Podałeś zły promień ! ','Błąd',MB_OK+MB_ICONINFORMATION);
h:=StrToFloat(txtWysokosc.Text);
if h<=0 then
MessageBox(Handle,'Podałeś złą wysokość ! ','Błąd',MB_OK+MB_ICONINFORMATION);
l:=sqrt(r*r+h*h);
P:=pi*r*(r+l);
V:=(pi*r*r*h)/3;
gbWynik.Visible:=TRUE;
lblPole.Caption:='Pole stożka: '+FloatToStr(RoundTo(P,-2));
lblObjetosc.Caption:='Objetosc stożka: '+FloatToStr(RoundTo(V,-2));
end;
3:
begin
r:=StrToFloat(txtpromien.Text);
if r <=0 then
MessageBox(Handle,'Podałeś zły promień ! ','Błąd',MB_OK+MB_ICONINFORMATION);
P:=4*pi*r*r;
V:=(4*pi*r*r*r)/3;
gbWynik.Visible:=TRUE;
lblPole.Caption:='Pole kuli: '+FloatToStr(RoundTo(P,-2));
lblObjetosc.Caption:='Objetość kuli: '+FloatToStr(RoundTo(V,-2));
end;
4:
begin
h:=StrToFloat(txtWysokosc.Text);
if h<=0 then
MessageBox(Handle,'Podałeś złą wysokość ! ','Błąd',MB_OK+MB_ICONINFORMATION);
a:=StrToFloat(txtBokpodstawy.Text);
if a<=0 then
MessageBox(Handle,'Podałeś zły bok podstawy ! ','Błąd',MB_OK+MB_ICONINFORMATION);
P:=a*a*sqrt(3);
V:=((1/3)*(a*sqrt(3))/4)*h;
gbWynik.Visible:=TRUE;
lblPole.Caption:='Pole ostrosłupa: '+FloatToStr(RoundTo(P,-2));
lblObjetosc.Caption:='Objetość ostrosłupa: '+FloatToStr(RoundTo(V,-2));
end;
else
MessageBox(Handle,'Nie wybrałeś bryły ! ','Błąd',MB_OK+MB_ICONINFORMATION);
end;
end;
procedure TForm1.rbOstroslopClick(Sender: TObject);
begin
gbDane.Visible:=TRUE;
Label1.Visible:=FALSE;
Label2.Visible:=TRUE;
Label3.Visible:=TRUE;
txtpromien.Visible:=FALSE;
txtWysokosc.Visible:=TRUE;
txtBokpodstawy.Visible:=TRUE;
btnOblicz.Tag:=4;
txtpromien.Text:='';
txtWysokosc.Text:='';
gbWynik.Visible:=FALSE;
end;
end.
[/code]