AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Zugriffsverletzung bei Adresse 0045976B ...
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriffsverletzung bei Adresse 0045976B ...

Ein Thema von anoymouserver · begonnen am 19. Aug 2012 · letzter Beitrag vom 19. Aug 2012
Antwort Antwort
Seite 1 von 3  1 23      
anoymouserver
(Gast)

n/a Beiträge
 
#1

Zugriffsverletzung bei Adresse 0045976B ...

  Alt 19. Aug 2012, 01:03
Hi ich arbeite zur Zeit an meinem ersten Projekt und bin jetzt leider auf diese Fehlermeldung gestoßen:


Im Projekt ProjektBerechnen.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 0045976B in Modul 'ProjektBerechnen.exe'. Lesen von Adresse 00000000'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.

und ich finde leider den Fehler nicht!
Könnt ihr mir bitte sagen was ich falsch mache?

Hier mal die Quellcodes der Formulare:

Hauptformular
Delphi-Quellcode:
unit UnitBerechnen;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ComCtrls, TabNotBk, Menus, Math, ShellAPI;

type
  TForm1 = class(TForm)
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    TabSheet3: TTabSheet;
    TabSheet4: TTabSheet;
    QBild: TShape;
    QLba1: TLabel;
    QLba2: TLabel;
    QLbSeitenlaenge: TLabel;
    QLbUmfang: TLabel;
    QLbFlaeche: TLabel;
    QEdLaenge: TEdit;
    QEdUmfang: TEdit;
    QEdFlaeche: TEdit;
    QBtRechnen: TButton;
    RBild: TShape;
    RLbb2: TLabel;
    RLbSeitenlaengeb: TLabel;
    RLbUmfang: TLabel;
    RLbFlaeche: TLabel;
    REdLaengea: TEdit;
    REdUmfang: TEdit;
    REdFlaeche: TEdit;
    RLbSeitenlaengea: TLabel;
    REdLaengeb: TEdit;
    KBild: TShape;
    QLbA: TLabel;
    RLbA: TLabel;
    RBtRechnen: TButton;
    KLbRadius: TLabel;
    KLbDurchmesser: TLabel;
    KLbUmfang: TLabel;
    KLbFlaeche: TLabel;
    KEdRadius: TEdit;
    KEdDurchmesser: TEdit;
    KEdUmfang: TEdit;
    KEdFlaeche: TEdit;
    KBtRechnen: TButton;
    rDLbWinkelb: TLabel;
    rDEdBeta: TEdit;
    rDLbSeitenlaengea: TLabel;
    rDEdLaengea: TEdit;
    rDLbSeitenlaengeb: TLabel;
    rDEdLaengeb: TEdit;
    rDLbSeitenlaengec: TLabel;
    rDEdLaengec: TEdit;
    TabSheet5: TTabSheet;
    rDLbbeta: TLabel;
    rDLbWinkela: TLabel;
    rDLbalpha: TLabel;
    rDEdAlpha: TEdit;
    rDLbFlaeche: TLabel;
    rDEdFlaeche: TEdit;
    rDBtRechnen: TButton;
    KRadiusStrich: TShape;
    KLbR: TLabel;
    rDLbUmfang: TLabel;
    rDEdUmfang: TEdit;
    rDBild: TImage;
    rDLba1: TLabel;
    rDLbc1: TLabel;
    rDLbb1: TLabel;
    RLba1: TLabel;
    rDBildColor: TShape;
    rDLbA: TLabel;
    aDBild: TImage;
    aDLba1: TLabel;
    aDLbc1: TLabel;
    aDLbb1: TLabel;
    aDBildColor: TShape;
    aDLbA: TLabel;
    aDEdAlpha: TEdit;
    aDLbWinkela: TLabel;
    aDLbAlpha: TLabel;
    aDEdBeta: TEdit;
    aDLbWinkelb: TLabel;
    aDLbBeta: TLabel;
    aDEdLaengea: TEdit;
    aDLbSeitenlaengea: TLabel;
    aDLbSeitenlaengeb: TLabel;
    aDEdLaengeb: TEdit;
    aDLbSeitenlaengec: TLabel;
    aDEdLaengec: TEdit;
    aDLbUmfang: TLabel;
    aDEdUmfang: TEdit;
    aDLbFlaeche: TLabel;
    aDEdFlaeche: TEdit;
    aDEdGamma: TEdit;
    aDLbWinkelg: TLabel;
    aDLbGamma: TLabel;
    aDBtRechnen: TButton;
    PageControlKoerper: TPageControl;
    TabSheet6: TTabSheet;
    PageControlFlaechen: TPageControl;
    MainMenu1: TMainMenu;
    Einstellungen1: TMenuItem;
    Farbe1: TMenuItem;
    Rot1: TMenuItem;
    Blau1: TMenuItem;
    Gelb1: TMenuItem;
    Wei1: TMenuItem;
    Hilfe1: TMenuItem;
    Hilfe2: TMenuItem;
    N1: TMenuItem;
    Info1: TMenuItem;
    Berechnungen1: TMenuItem;
    Startseite1: TMenuItem;
    N2: TMenuItem;
    Flchen1: TMenuItem;
    Krper1: TMenuItem;
    TabSheet7: TTabSheet;
    TabSheet8: TTabSheet;
    TabSheet9: TTabSheet;
    TabSheet10: TTabSheet;
    WLbKantenlaenge: TLabel;
    WEdKanten: TEdit;
    WLbGesamtkantenlaenge: TLabel;
    WEdDiagonale: TEdit;
    WLbRaumdiagonale: TLabel;
    WEdGesamtkanten: TEdit;
    WLbVolumen: TLabel;
    WEdVolumen: TEdit;
    WEdOberflaeche: TEdit;
    WLbOberflaeche: TLabel;
    WBtRechnen: TButton;
    QuLbKantenlaengec: TLabel;
    QuEdKantec: TEdit;
    QuLbRaumdiagonale: TLabel;
    QuEdDiagonale: TEdit;
    QuLbGesamtkantenlaenge: TLabel;
    QuEdGesamtkanten: TEdit;
    QuLbOberflaeche: TLabel;
    QuEdOberflaeche: TEdit;
    QuLbVolumen: TLabel;
    QuEdVolumen: TEdit;
    QuEdKanteb: TEdit;
    QuLbKantenlaengeb: TLabel;
    QuLbKantenlaengea: TLabel;
    QuEdKantea: TEdit;
    QuBtRechnen: TButton;
    KuLbRadius: TLabel;
    KuEdRadius: TEdit;
    KuEdDurchmesser: TEdit;
    KuLbDurchmesser: TLabel;
    KuEdVolumen: TEdit;
    KuLbVolumen: TLabel;
    KuEdOberflaeche: TEdit;
    KuLbOberflaeche: TLabel;
    KuBtRechnen: TButton;
    Grn1: TMenuItem;
    KuBild: TImage;
    KuBildColor: TShape;
    KuRadiusStrich: TShape;
    KuLbR: TLabel;
    WBild: TImage;
    WBildColor: TShape;
    WLba1: TLabel;
    WLba3: TLabel;
    WLba2: TLabel;
    WLbV: TLabel;
    QuBild: TImage;
    QuBildColor: TShape;
    QuLba1: TLabel;
    QuLbc1: TLabel;
    QuLbb1: TLabel;
    QuLbV: TLabel;
    ZBild1: TShape;
    ZBild4: TShape;
    ZBild2: TShape;
    ZBild3: TShape;
    ZLbRadius: TLabel;
    ZEdRadius: TEdit;
    ZLbOberflaeche: TLabel;
    ZEdOberflaeche: TEdit;
    ZLbVolumen: TLabel;
    ZEdVolumen: TEdit;
    ZEdHoehe: TEdit;
    ZLbHoehe: TLabel;
    ZLbMantel: TLabel;
    ZEdMantel: TEdit;
    ZLbGrundflaeche: TLabel;
    ZEdGrundflaechen: TEdit;
    ZBtRechnen: TButton;
    ZRadiusstrich: TShape;
    ZLbR: TLabel;
    ZLbh: TLabel;
    TabSheet11: TTabSheet;
    KeBild: TImage;
    KeBildColor: TShape;
    ZEdUmfang: TEdit;
    ZLbUmfang: TLabel;
    KeLbRadius: TLabel;
    KeEdRadius: TEdit;
    KeLbHoehe: TLabel;
    KeEdHoehe: TEdit;
    KeLbUmfang: TLabel;
    KeEdUmfang: TEdit;
    KeLbOberflaeche: TLabel;
    KeEdOberflaeche: TEdit;
    KeLbVolumen: TLabel;
    KeEdVolumen: TEdit;
    KeLbMantel: TLabel;
    KeEdMantel: TEdit;
    KeLbGrundflaeche: TLabel;
    KeEdGrundflaeche: TEdit;
    KeBtRechnen: TButton;
    KeEdMantellinie: TEdit;
    KeLbMantellinie: TLabel;
    KeLbS: TLabel;
    KeHoehestrich: TShape;
    KeLbH: TLabel;
    PLbHoehe: TLabel;
    PEdHoehe: TEdit;
    PLbSeitenkantenlaenge: TLabel;
    PEdSeitenkante: TEdit;
    PLbOberflaeche: TLabel;
    PEdOberflaeche: TEdit;
    PLbVolumen: TLabel;
    PEdVolumen: TEdit;
    PLbMantel: TLabel;
    PEdMantel: TEdit;
    PLbGrundflaeche: TLabel;
    PEdGrundflaeche: TEdit;
    PLbGrundkantenlaenge: TLabel;
    PEdKantenlaenge: TEdit;
    PBtRechnen: TButton;
    PBild: TImage;
    PBildColor: TShape;
    PLba1: TLabel;
    PLbH: TLabel;
    PLba2: TLabel;
    PLbs1: TLabel;
    PHoehestrich: TShape;
    TabSheet12: TTabSheet;
    TEdKantenlaenge: TEdit;
    TLbKantenlaenge: TLabel;
    TEdHoehe: TEdit;
    TLbHoehe: TLabel;
    TLbOberflaeche: TLabel;
    TEdOberflaeche: TEdit;
    TLbVolumen: TLabel;
    TEdVolumen: TEdit;
    TLbMantel: TLabel;
    TEdMantel: TEdit;
    TLabelGrundflaeche: TLabel;
    TEdGrundflaeche: TEdit;
    TBtRechnen: TButton;
    TBild: TImage;
    TBildColor: TShape;
    TLba2: TLabel;
    TLba3: TLabel;
    TLbH: TLabel;
    TLba1: TLabel;
    QBtLoeschen: TButton;
    KBtLoeschen: TButton;
    rDBtLoeschen: TButton;
    RBtLoeschen: TButton;
    aDBtLoeschen: TButton;
    WBtLoeschen: TButton;
    QuBtLoeschen: TButton;
    KuBtLoeschen: TButton;
    ZBtLoeschen: TButton;
    KeBtLoeschen: TButton;
    TBtLoeschen: TButton;
    PBtLoeschen: TButton;
    aDEdAlpha2: TEdit;
    aDEdBeta2: TEdit;
    aDEdGamma2: TEdit;
    aDEdLaengea2: TEdit;
    aDEdLaengeb2: TEdit;
    aDEdLaengec2: TEdit;
    aDEdUmfang2: TEdit;
    aDEdFlaeche2: TEdit;
    aDLbDreieck1: TLabel;
    aDLbDreieck2: TLabel;
    procedure QBtRechnenClick(Sender: TObject);
    procedure RBtRechnenClick(Sender: TObject);
    procedure KBtRechnenClick(Sender: TObject);
    procedure rDBtRechnenClick(Sender: TObject);
    procedure Flchen1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Rot1Click(Sender: TObject);
    procedure Grn1Click(Sender: TObject);
    procedure Blau1Click(Sender: TObject);
    procedure Gelb1Click(Sender: TObject);
    procedure Wei1Click(Sender: TObject);
    procedure aDBtRechnenClick(Sender: TObject);
    procedure Krper1Click(Sender: TObject);
    procedure WBtRechnenClick(Sender: TObject);
    procedure QuBtRechnenClick(Sender: TObject);
    procedure KuBtRechnenClick(Sender: TObject);
    procedure ZBtRechnenClick(Sender: TObject);
    procedure KeBtRechnenClick(Sender: TObject);
    procedure PBtRechnenClick(Sender: TObject);
    procedure OnlyNumbers(Sender: TObject; var Key: Char);
    procedure EditClear(Sender: TObject);
    procedure TBtRechnenClick(Sender: TObject);
    procedure Hilfe2Click(Sender: TObject);
    procedure QBtLoeschenClick(Sender: TObject);
    procedure RBtLoeschenClick(Sender: TObject);
    procedure KBtLoeschenClick(Sender: TObject);
    procedure Info1Click(Sender: TObject);
    procedure rDBtLoeschenClick(Sender: TObject);
    procedure QEdLaengeChange(Sender: TObject);
    procedure QEdUmfangChange(Sender: TObject);
    procedure QEdFlaecheChange(Sender: TObject);
    procedure KEdRadiusChange(Sender: TObject);
    procedure KEdDurchmesserChange(Sender: TObject);
    procedure KEdUmfangChange(Sender: TObject);
    procedure rDEdAlphaChange(Sender: TObject);
    procedure rDEdBetaChange(Sender: TObject);
    procedure rDEdLaengeaChange(Sender: TObject);
    procedure rDEdLaengebChange(Sender: TObject);
    procedure rDEdLaengecChange(Sender: TObject);
    procedure aDBtLoeschenClick(Sender: TObject);
    procedure WBtLoeschenClick(Sender: TObject);
    procedure WEdKantenChange(Sender: TObject);
    procedure WEdDiagonaleChange(Sender: TObject);
    procedure WEdGesamtkantenChange(Sender: TObject);
    procedure QuBtLoeschenClick(Sender: TObject);
    procedure KuBtLoeschenClick(Sender: TObject);
    procedure KuEdRadiusChange(Sender: TObject);
    procedure KuEdDurchmesserChange(Sender: TObject);
    procedure ZBtLoeschenClick(Sender: TObject);
    procedure ZEdRadiusChange(Sender: TObject);
    procedure ZEdUmfangChange(Sender: TObject);
    procedure aDEdAlphaChange(Sender: TObject);
    procedure aDEdBetaChange(Sender: TObject);
    procedure aDEdGammaChange(Sender: TObject);
    procedure aDEdLaengeaChange(Sender: TObject);
    procedure aDEdLaengebChange(Sender: TObject);
    procedure aDEdLaengecChange(Sender: TObject);
    procedure KeBtLoeschenClick(Sender: TObject);
    procedure KeEdRadiusChange(Sender: TObject);
    procedure KeEdHoeheChange(Sender: TObject);
    procedure KeEdUmfangChange(Sender: TObject);
    procedure KeEdMantellinieChange(Sender: TObject);
    procedure PBtLoeschenClick(Sender: TObject);
    procedure PEdHoeheChange(Sender: TObject);
    procedure PEdSeitenkanteChange(Sender: TObject);
    procedure TEdKantenlaengeChange(Sender: TObject);
    procedure TEdHoeheChange(Sender: TObject);
    procedure TBtLoeschenClick(Sender: TObject);
    procedure allgLoeschen(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

uses UnitInfobox;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  PageControlFlaechen.Visible := False;
  PageControlKoerper.Visible := False;
  Startseite1.Enabled := False;
  Form1.Color := clWhite;
  Form1.allgLoeschen(Sender);
end;

procedure TForm1.allgLoeschen(Sender: TObject);
begin
  Form1.QBtLoeschenClick(Sender);
  Form1.RBtLoeschenClick(Sender);
  Form1.KBtLoeschenClick(Sender);
  Form1.rDBtLoeschenClick(Sender);
  Form1.aDBtLoeschenClick(Sender);
  Form1.WBtLoeschenClick(Sender);
  Form1.QuBtLoeschenClick(Sender);
  Form1.KuBtLoeschenClick(Sender);
  Form1.ZBtLoeschenClick(Sender);
  Form1.KeBtLoeschenClick(Sender);
  Form1.PBtLoeschenClick(Sender);
  Form1.TBtLoeschenClick(Sender);
end;

(*-----------------------------------Menü-----------------------------------*)

procedure TForm1.Flchen1Click(Sender: TObject);
begin
  Startseite1.Enabled := True;
  Form1.Color := clBtnFace;
  PageControlFlaechen.TabIndex := 0;
  PageControlFlaechen.Visible := True;
  PageControlKoerper.Visible := False;
  Form1.allgLoeschen(Sender);
end;

procedure TForm1.Krper1Click(Sender: TObject);
begin
  Startseite1.Enabled := True;
  Form1.Color := clBtnFace;
  PageControlKoerper.TabIndex := 0;
  PageControlKoerper.Visible := True;
  PageControlFlaechen.Visible := False;
  Form1.allgLoeschen(Sender);
end;

procedure TForm1.Hilfe2Click(Sender: TObject);
begin
  ShellExecute(handle, 'open', PChar('HELP.html'), nil, nil, SW_SHOW);
end;

procedure TForm1.Info1Click(Sender: TObject);
begin
Form2.ShowModal; {Infobox öffnen}
end;



(*----------------------------------Farben----------------------------------*)

procedure TForm1.Rot1Click(Sender: TObject);
begin
   Rot1.Checked := true;
   Grn1.Checked := false;
   Blau1.Checked := false;
   Gelb1.Checked := false;
   Wei1.Checked := false;
    QBild.Brush.Color := clRed;
      QLbA.Color := clRed;
    RBild.Brush.Color := clRed;
      RLbA.Color := clRed;
    KBild.Brush.Color := clRed;
      KLbR.Color := clRed;
    rDBildColor.Brush.Color := clRed;
      rDLbA.Color := clRed;
    aDBildColor.Brush.Color := clRed;
      aDLbA.Color := clRed;
    WBildColor.Brush.Color := clRed;
      WLba2.Color := clRed;
      WLbV.Color := clRed;
    QuBildColor.Brush.Color := clRed;
      QuLbb1.Color := clRed;
      QuLbV.Color := clRed;
    KuBildColor.Brush.Color := clRed;
      KuLbR.Color := clRed;
    ZBild1.Brush.Color := clRed;
    ZBild2.Brush.Color := clRed;
    ZBild3.Brush.Color := clRed;
      ZLbR.Color := clRed;
    KeBildColor.Brush.Color := clRed;
      KeLbH.Color := clRed;
    PBildColor.Brush.Color := clRed;
      PLbH.Color := clRed;
    TBildColor.Brush.Color := clRed;
      TLbH.Color := clRed;
end;

procedure TForm1.Grn1Click(Sender: TObject);
begin
   Rot1.Checked := false;
   Grn1.Checked := true;
   Blau1.Checked := false;
   Gelb1.Checked := false;
   Wei1.Checked := false;
    QBild.Brush.Color := clLime;
      QLbA.Color := clLime;
    RBild.Brush.Color := clLime;
      RLbA.Color := clLime;
    KBild.Brush.Color := clLime;
      KLbR.Color := clLime;
    rDBildColor.Brush.Color := clLime;
      rDLbA.Color := clLime;
    aDBildColor.Brush.Color := clLime;
      aDLbA.Color := clLime;
    WBildColor.Brush.Color := clLime;
      WLba2.Color := clLime;
      WLbV.Color := clLime;
    QuBildColor.Brush.Color := clLime;
      QuLbb1.Color := clLime;
      QuLbV.Color := clLime;
    KuBildColor.Brush.Color := clLime;
      KuLbR.Color := clLime;
    ZBild1.Brush.Color := clLime;
    ZBild2.Brush.Color := clLime;
    ZBild3.Brush.Color := clLime;
      ZLbR.Color := clLime;
    KeBildColor.Brush.Color := clLime;
      KeLbH.Color := clLime;
    PBildColor.Brush.Color := clLime;
      PLbH.Color := clLime;
    TBildColor.Brush.Color := clLime;
      TLbH.Color := clLime;
end;

procedure TForm1.Blau1Click(Sender: TObject);
begin
   Rot1.Checked := false;
   Grn1.Checked := false;
   Blau1.Checked := true;
   Gelb1.Checked := false;
   Wei1.Checked := false;
    QBild.Brush.Color := clBlue;
      QLbA.Color := clBlue;
    RBild.Brush.Color := clBlue;
      RLbA.Color := clBlue;
    KBild.Brush.Color := clBlue;
      KLbR.Color := clBlue;
    rDBildColor.Brush.Color := clBlue;
      rDLbA.Color := clBlue;
    aDBildColor.Brush.Color := clBlue;
      aDLbA.Color := clBlue;
    WBildColor.Brush.Color := clBlue;
      WLba2.Color := clBlue;
      WLbV.Color := clBlue;
    QuBildColor.Brush.Color := clBlue;
      QuLbb1.Color := clBlue;
      QuLbV.Color := clBlue;
    KuBildColor.Brush.Color := clBlue;
      KuLbR.Color := clBlue;
    ZBild1.Brush.Color := clBlue;
    ZBild2.Brush.Color := clBlue;
    ZBild3.Brush.Color := clBlue;
      ZLbR.Color := clBlue;
    KeBildColor.Brush.Color := clBlue;
      KeLbH.Color := clBlue;
    PBildColor.Brush.Color := clBlue;
      PLbH.Color := clBlue;
    TBildColor.Brush.Color := clBlue;
      TLbH.Color := clBlue;
end;

procedure TForm1.Gelb1Click(Sender: TObject);
begin
   Rot1.Checked := false;
   Grn1.Checked := false;
   Blau1.Checked := false;
   Gelb1.Checked := true;
   Wei1.Checked := false;
    QBild.Brush.Color := clYellow;
      QLbA.Color := clYellow;
    RBild.Brush.Color := clYellow;
      RLbA.Color := clYellow;
    KBild.Brush.Color := clYellow;
      KLbR.Color := clYellow;
    rDBildColor.Brush.Color := clYellow;
      rDLbA.Color := clYellow;
    aDBildColor.Brush.Color := clYellow;
      aDLbA.Color := clYellow;
    WBildColor.Brush.Color := clYellow;
      WLba2.Color := clYellow;
      WLbV.Color := clYellow;
    QuBildColor.Brush.Color := clYellow;
      QuLbb1.Color := clYellow;
      QuLbV.Color := clYellow;
    KuBildColor.Brush.Color := clYellow;
      KuLbR.Color := clYellow;
    ZBild1.Brush.Color := clYellow;
    ZBild2.Brush.Color := clYellow;
    ZBild3.Brush.Color := clYellow;
      ZLbR.Color := clYellow;
    KeBildColor.Brush.Color := clYellow;
      KeLbH.Color := clYellow;
    PBildColor.Brush.Color := clYellow;
      PLbH.Color := clYellow;
    TBildColor.Brush.Color := clYellow;
      TLbH.Color := clYellow;
end;

procedure TForm1.Wei1Click(Sender: TObject);
begin
   Rot1.Checked := false;
   Grn1.Checked := false;
   Blau1.Checked := false;
   Gelb1.Checked := false;
   Wei1.Checked := true;
    QBild.Brush.Color := clWhite;
      QLbA.Color := clWhite;
    RBild.Brush.Color := clWhite;
      RLbA.Color := clWhite;
    KBild.Brush.Color := clWhite;
      KLbR.Color := clWhite;
    rDBildColor.Brush.Color := clWhite;
      rDLbA.Color := clWhite;
    aDBildColor.Brush.Color := clWhite;
      aDLbA.Color := clWhite;
    WBildColor.Brush.Color := clWhite;
      WLba2.Color := clWhite;
      WLbV.Color := clWhite;
    QuBildColor.Brush.Color := clWhite;
      QuLbb1.Color := clWhite;
      QuLbV.Color := clWhite;
    KuBildColor.Brush.Color := clWhite;
      KuLbR.Color := clWhite;
    ZBild1.Brush.Color := clWhite;
    ZBild2.Brush.Color := clWhite;
    ZBild3.Brush.Color := clWhite;
      ZLbR.Color := clWhite;
    KeBildColor.Brush.Color := clWhite;
      KeLbH.Color := clWhite;
    PBildColor.Brush.Color := clWhite;
      PLbH.Color := clWhite;
    TBildColor.Brush.Color := clWhite;
      TLbH.Color := clWhite;
end;

(*----------------------------Edit-Einstellungen----------------------------*)

procedure TForm1.OnlyNumbers(Sender: TObject; var Key: Char);
begin
  if not (key in [#48..#57, #8, #44]) then key := #0;
  if (key = ',') then
     if pos(',', TEdit(Sender).Text) > 0 then
     begin
       key := #0; exit;
     end;
end;

procedure TForm1.EditClear(Sender: TObject);
begin
  if TEdit(Sender).ReadOnly = false then
    if TEdit(Sender).Text = '0then
      TEdit(Sender).Text := '';
end;

(*----------------------------------Flächen----------------------------------*)

(*_____Quadrat_____*)
procedure TForm1.QBtRechnenClick(Sender: TObject);
var a,u,Area :real;
begin
  if QEdLaenge.Text > '0then
    begin
    a := StrToFloat(QEdLaenge.Text);
    u := 4*a;
    Area := a*a;
    QEdUmfang.Text := FloatToStr(u);
    QEdFlaeche.Text := FloatToStr(Area);
    end else

  if QEdUmfang.Text > '0then
    begin
    u := StrToFloat(QEdUmfang.Text);
    a := u/4;
    Area := a*a;
    QEdLaenge.Text := FloatToStr(a);
    QEdFlaeche.Text := FloatToStr(Area);
    end else

  if QEdFlaeche.Text > '0then
    begin
    area := StrToFloat(QEdFlaeche.Text);
    a := sqrt(area);
    u := 4*a;
    QEdLaenge.Text := FloatToStr(a);
    QEdUmfang.Text := FloatToStr(u);
    end;
  QEdLaenge.ReadOnly := true;
  QEdUmfang.ReadOnly := true;
  QEdFlaeche.ReadOnly := true;
  QBtRechnen.Enabled := false;
end;

procedure TForm1.QBtLoeschenClick(Sender: TObject);
begin
QEdLaenge.Text := '0';
QEdUmfang.Text := '0';
QEdFlaeche.Text := '0';
QEdLaenge.ReadOnly := false;
QEdUmfang.ReadOnly := false;
QEdFlaeche.ReadOnly := false;
QBtRechnen.Enabled := true;
end;

procedure TForm1.QEdLaengeChange(Sender: TObject);
begin
if QEdLaenge.Text > '0then
  begin
  QEdUmfang.ReadOnly := true;
  QEdFlaeche.ReadOnly := true;
  end else
  begin
  QEdUmfang.ReadOnly := false;
  QEdFlaeche.ReadOnly := false;
  end;
end;

procedure TForm1.QEdUmfangChange(Sender: TObject);
begin
if QEdUmfang.Text > '0then
  begin
  QEdLaenge.ReadOnly := true;
  QEdFlaeche.ReadOnly := true;
  end else
  begin
  QEdLaenge.ReadOnly := false;
  QEdFlaeche.ReadOnly := false;
  end;
end;

procedure TForm1.QEdFlaecheChange(Sender: TObject);
begin
if QEdFlaeche.Text > '0then
  begin
  QEdLaenge.ReadOnly := true;
  QEdUmfang.ReadOnly := true;
  end else
  begin
  QEdLaenge.ReadOnly := false;
  QEdUmfang.ReadOnly := false;
  end
end;

(*_____Rechteck_____*)
procedure TForm1.RBtRechnenClick(Sender: TObject);
var a,b,u,Area :real;
begin
  if REdLaengea.Text > '0then
   if REdLaengeb.Text > '0then
    begin
    a := StrToFloat(REdLaengea.Text);
    b := StrToFloat(REdLaengeb.Text);
    u := 2*a+2*b;
    Area := a*b;
    REdUmfang.Text := FloatToStr(u);
    REdFlaeche.Text := FloatToStr(Area);

  REdLaengea.ReadOnly := true;
  REdLaengeb.ReadOnly := true;
  REdUmfang.ReadOnly := true;
  REdFlaeche.ReadOnly := true;
  RBtRechnen.Enabled := false;
  end;
end;

procedure TForm1.RBtLoeschenClick(Sender: TObject);
begin
REdLaengea.Text := '0';
REdLaengeb.Text := '0';
REdUmfang.Text := '0';
REdFlaeche.Text := '0';
REdLaengea.ReadOnly := false;
REdLaengeb.ReadOnly := false;
RBtRechnen.Enabled := true;
end;

(*_____Kreis_____*)
procedure TForm1.KBtRechnenClick(Sender: TObject);
var r,d,u,Area :real;
begin
  if KEdRadius.Text > '0then
    begin
    r := StrToFloat(KEdRadius.Text);
    d := 2*r;
    u := pi*d;
    Area := pi*r*r;
    KEdDurchmesser.Text := FloatToStrF (d,ffFixed,10,2);
    KEdUmfang.Text := FloatToStrF(u,ffFixed,10,3);
    KEdFlaeche.Text := FloatToStrF(Area,ffFixed,10,2);
    end else

  if KEdDurchmesser.Text > '0then
    begin
    d := StrToFloat(KEdDurchmesser.Text);
    r := d/2;
    u := pi*d;
    Area := pi*r*r;
    KEdRadius.Text := FloatToStrF (r,ffFixed,10,2);
    KEdUmfang.Text := FloatToStrF(u,ffFixed,10,3);
    KEdFlaeche.Text := FloatToStrF(Area,ffFixed,10,2);
    end else

  if KEdUmfang.Text > '0then
    begin
    u := StrToFloat(KEdUmfang.Text);
    r := u/(2*pi);
    d := 2*r;
    Area := pi*r*r;
    KEdRadius.Text := FloatToStrF (r,ffFixed,10,2);
    KEdDurchmesser.Text := FloatToStrF(d,ffFixed,10,2);
    KEdFlaeche.Text := FloatToStrF(Area,ffFixed,10,2);
    end;
  KEdRadius.ReadOnly := true;
  KEdDurchmesser.ReadOnly := true;
  KEdUmfang.ReadOnly := true;
  KEdFlaeche.ReadOnly := true;
  KBtRechnen.Enabled := false;
end;

procedure TForm1.KBtLoeschenClick(Sender: TObject);
begin
KEdRadius.Text := '0';
KEdDurchmesser.Text := '0';
KEdUmfang.Text := '0';
KEdFlaeche.Text := '0';
KEdRadius.ReadOnly := false;
KEdDurchmesser.ReadOnly := false;
KEdUmfang.ReadOnly := false;
KBtRechnen.Enabled := true;
end;

procedure TForm1.KEdRadiusChange(Sender: TObject);
begin
if KEdRadius.Text > '0then
  begin
  KEdDurchmesser.ReadOnly := true;
  KEdUmfang.ReadOnly := true;
  end else
  begin
  KEdDurchmesser.ReadOnly := false;
  KEdUmfang.ReadOnly := false;
  end
end;

procedure TForm1.KEdDurchmesserChange(Sender: TObject);
begin
if KEdDurchmesser.Text > '0then
  begin
  KEdRadius.ReadOnly := true;
  KEdUmfang.ReadOnly := true;
  end else
  begin
  KEdRadius.ReadOnly := false;
  KEdUmfang.ReadOnly := false;
  end
end;

procedure TForm1.KEdUmfangChange(Sender: TObject);
begin
if KEdUmfang.Text > '0then
  begin
  KEdRadius.ReadOnly := true;
  KEdDurchmesser.ReadOnly := true;
  end else
  begin
  KEdRadius.ReadOnly := false;
  KEdDurchmesser.ReadOnly := false;
  end
end;

(*_____rechtwinkliges Dreieck_____*)
procedure TForm1.rDBtRechnenClick(Sender: TObject);
var alpha,beta,a,b,c,u,Area :real;
    h,q,p :real;
begin
  if rDEdAlpha.Text > '0then
    begin
    if rDEdLaengea.Text > '0then
      begin
      alpha := StrToFloat(rDEdAlpha.Text);
      a := StrToFloat(rDEdLaengea.Text);
      beta := 90-alpha;
      b := a/Tan(DegtoRad(alpha));
      c := sqrt(a*a+b*b);
      u := a+b+c;
          q := a*a/c;
          p := c-q;
          h := sqrt(p*q);
      Area := (c*h)/2;
      rDEdAlpha.Text := FloatToStr(alpha)+ '°';
      rDEdBeta.Text := FloatToStr(beta)+ '°';
      rDEdLaengeb.Text := FloatToStrF(b,ffFixed,10,3);
      rDEdLaengec.Text := FloatToStrF(c,ffFixed,10,3);
      rDEdUmfang.Text := FloatToStrF(u,ffFixed,10,3);
      rDEdFlaeche.Text := FloatToStrF(Area,ffFixed,10,2);
      end else

    if rDEdLaengeb.Text > '0then
      begin
      alpha := StrToFloat(rDEdAlpha.Text);
      b := StrToFloat(rDEdLaengeb.Text);
      beta := 90-alpha;
      a := b*Tan(DegtoRad(alpha));
      c := sqrt(a*a+b*b);
      u := a+b+c;
          q := a*a/c;
          p := c-q;
          h := sqrt(p*q);
      Area := (c*h)/2;
      rDEdAlpha.Text := FloatToStr(alpha)+ '°';
      rDEdBeta.Text := FloatToStr(beta)+ '°';
      rDEdLaengea.Text := FloatToStrF(a,ffFixed,10,3);
      rDEdLaengec.Text := FloatToStrF(c,ffFixed,10,3);
      rDEdUmfang.Text := FloatToStrF(u,ffFixed,10,3);
      rDEdFlaeche.Text := FloatToStrF(Area,ffFixed,10,2);
      end else

    if rDEdLaengec.Text > '0then
      begin
      alpha := StrToFloat(rDEdAlpha.Text);
      c := StrToFloat(rDEdLaengec.Text);
      beta := 90-alpha;
      a := c*Cos(DegtoRad(beta));
      b := sqrt(c*c-a*a);
      u := a+b+c;
          q := a*a/c;
          p := c-q;
          h := sqrt(p*q);
      Area := (c*h)/2;
      rDEdAlpha.Text := FloatToStr(alpha)+ '°';
      rDEdBeta.Text := FloatToStr(beta)+ '°';
      rDEdLaengea.Text := FloatToStrF(a,ffFixed,10,3);
      rDEdLaengeb.Text := FloatToStrF(b,ffFixed,10,3);
      rDEdUmfang.Text := FloatToStrF(u,ffFixed,10,3);
      rDEdFlaeche.Text := FloatToStrF(Area,ffFixed,10,2);
      end
    end else

  if rDEdBeta.Text > '0then
    begin
    if rDEdLaengea.Text > '0then
      begin
      beta := StrToFloat(rDEdBeta.Text);
      a := StrToFloat(rDEdLaengea.Text);
      alpha := 90-beta;
      b := a/Tan(DegtoRad(alpha));
      c := sqrt(a*a+b*b);
      u := a+b+c;
          q := a*a/c;
          p := c-q;
          h := sqrt(p*q);
      Area := (c*h)/2;
      rDEdAlpha.Text := FloatToStr(alpha)+ '°';
      rDEdBeta.Text := FloatToStr(beta)+ '°';
      rDEdLaengeb.Text := FloatToStrF(b,ffFixed,10,3);
      rDEdLaengec.Text := FloatToStrF(c,ffFixed,10,3);
      rDEdUmfang.Text := FloatToStrF(u,ffFixed,10,3);
      rDEdFlaeche.Text := FloatToStrF(Area,ffFixed,10,2);
      end else

      if rDEdLaengeb.Text > '0then
      begin
      beta := StrToFloat(rDEdBeta.Text);
      b := StrToFloat(rDEdLaengeb.Text);
      alpha:= 90-beta;
      a := b*Tan(DegtoRad(alpha));
      c := sqrt(a*a+b*b);
      u := a+b+c;
          q := a*a/c;
          p := c-q;
          h := sqrt(p*q);
      Area := (c*h)/2;
      rDEdAlpha.Text := FloatToStr(alpha)+ '°';
      rDEdBeta.Text := FloatToStr(beta)+ '°';
      rDEdLaengea.Text := FloatToStrF(a,ffFixed,10,3);
      rDEdLaengec.Text := FloatToStrF(c,ffFixed,10,3);
      rDEdUmfang.Text := FloatToStrF(u,ffFixed,10,3);
      rDEdFlaeche.Text := FloatToStrF(Area,ffFixed,10,2);
      end else

    if rDEdLaengec.Text > '0then
      begin
      beta := StrToFloat(rDEdBeta.Text);
      c := StrToFloat(rDEdLaengec.Text);
      alpha := 90-beta;
      a := c*Cos(DegtoRad(beta));
      b := sqrt(c*c-a*a);
      u := a+b+c;
          q := a*a/c;
          p := c-q;
          h := sqrt(p*q);
      Area := (c*h)/2;
      rDEdAlpha.Text := FloatToStr(alpha)+ '°';
      rDEdBeta.Text := FloatToStr(beta)+ '°';
      rDEdLaengea.Text := FloatToStrF(a,ffFixed,10,3);
      rDEdLaengeb.Text := FloatToStrF(b,ffFixed,10,3);
      rDEdUmfang.Text := FloatToStrF(u,ffFixed,10,3);
      rDEdFlaeche.Text := FloatToStrF(Area,ffFixed,10,2);
      end
    end;
  rDEdAlpha.ReadOnly := true;
  rDEdBeta.ReadOnly := true;
  rDEdLaengea.ReadOnly := true;
  rDEdLaengeb.ReadOnly := true;
  rDEdLaengec.ReadOnly := true;
  rDBtRechnen.Enabled := false;
end;

procedure TForm1.rDBtLoeschenClick(Sender: TObject);
begin
rDEdAlpha.Text := '0';
rDEdBeta.Text := '0';
rDEdLaengea.Text := '0';
rDEdLaengeb.Text := '0';
rDEdLaengec.Text := '0';
rDEdUmfang.Text := '0';
rDEdFlaeche.Text := '0';
rDEdAlpha.ReadOnly := false;
rDEdBeta.ReadOnly := false;
rDEdLaengea.ReadOnly := false;
rDEdLaengeb.ReadOnly := false;
rDEdLaengec.ReadOnly := false;
rDBtRechnen.Enabled := true;
end;

procedure TForm1.rDEdAlphaChange(Sender: TObject);
begin
if rDEdAlpha.Text > '0then
  rDEdBeta.ReadOnly := true else
  rDEdBeta.ReadOnly := false;
end;

procedure TForm1.rDEdBetaChange(Sender: TObject);
begin
if rDEdBeta.Text > '0then
  rDEdAlpha.ReadOnly := true else
  rDEdAlpha.ReadOnly := false;
end;

procedure TForm1.rDEdLaengeaChange(Sender: TObject);
begin
if rDEdLaengea.Text > '0then
  begin
  rDEdLaengeb.ReadOnly := true;
  rDEdLaengec.ReadOnly := true;
  end else
  begin
  rDEdLaengeb.ReadOnly := false;
  rDEdLaengec.ReadOnly := false;
  end
end;

procedure TForm1.rDEdLaengebChange(Sender: TObject);
begin
if rDEdLaengeb.Text > '0then
  begin
  rDEdLaengea.ReadOnly := true;
  rDEdLaengec.ReadOnly := true;
  end else
  begin
  rDEdLaengea.ReadOnly := false;
  rDEdLaengec.ReadOnly := false;
  end
end;

procedure TForm1.rDEdLaengecChange(Sender: TObject);
begin
if rDEdLaengec.Text > '0then
  begin
  rDEdLaengea.ReadOnly := true;
  rDEdLaengeb.ReadOnly := true;
  end else
  begin
  rDEdLaengea.ReadOnly := false;
  rDEdLaengeb.ReadOnly := false;
  end
end;

(*_____allgemeines Dreieck_____*)
procedure TForm1.aDBtRechnenClick(Sender: TObject);
var alpha,beta,gamma,a,b,c,u,Area :real;
    alpha2,beta2,gamma2,a2,b2,c2,u2,Area2 :real;
    s,s2 :real;
begin
  if aDEdLaengea.Text > '0then
    begin
    if aDEdAlpha.Text > '0then
      begin
      if aDEdBeta.Text > '0then
        begin
        alpha := StrToFloat(aDEdAlpha.Text);
        beta := StrToFloat(aDEdBeta.Text);
        a := StrToFloat(aDEdLaengea.Text);
        gamma := 180-alpha-beta;
        b := a*Sin(DegtoRad(beta))/Sin(DegtoRad(alpha));
        c := sqrt(a*a + b*b - 2*a*b*cos(DegtoRad(gamma)));
        u := a+b+c;
            s := u/2;
        Area := sqrt(s*(s-a)*(s-b)*(s-c));
        aDEdAlpha.Text := FloatToStrF(alpha,ffFixed,10,2)+ '°';
        aDEdBeta.Text := FloatToStrF(beta,ffFixed,10,2)+ '°';
        aDEdGamma.Text := FloatToStrF(gamma,ffFixed,10,2)+ '°';
        aDEdLaengeb.Text := FloatToStrF(b,ffFixed,10,3);
        aDEdLaengec.Text := FloatToStrF(c,ffFixed,10,3);
        aDEdUmfang.Text := FloatToStrF(u,ffFixed,10,3);
        aDEdFlaeche.Text := FloatToStrF(Area,ffFixed,10,2);
        end else

      if aDEdGamma.Text > '0then
        begin
        alpha := StrToFloat(aDEdAlpha.Text);
        gamma := StrToFloat(aDEdGamma.Text);
        a := StrToFloat(aDEdLaengea.Text);
        beta := 180-alpha-gamma;
        b := a*Sin(DegtoRad(beta))/Sin(DegtoRad(alpha));
        c := sqrt(a*a + b*b - 2*a*b*cos(DegtoRad(gamma)));
        u := a+b+c;
            s := u/2;
        Area := sqrt(s*(s-a)*(s-b)*(s-c));
        aDEdAlpha.Text := FloatToStrF(alpha,ffFixed,10,2)+ '°';
        aDEdBeta.Text := FloatToStrF(beta,ffFixed,10,2)+ '°';
        aDEdGamma.Text := FloatToStrF(gamma,ffFixed,10,2)+ '°';
        aDEdLaengeb.Text := FloatToStrF(b,ffFixed,10,3);
        aDEdLaengec.Text := FloatToStrF(c,ffFixed,10,3);
        aDEdUmfang.Text := FloatToStrF(u,ffFixed,10,3);
        aDEdFlaeche.Text := FloatToStrF(Area,ffFixed,10,2);
        end else

      if aDEdLaengeb.Text > '0then
        begin
        try
          alpha := StrToFloat(aDEdAlpha.Text);
          a := StrToFloat(aDEdLaengea.Text);
          b := StrToFloat(aDEdLaengeb.Text);
          beta := RadtoDeg(arcsin(sin(DegtoRad(alpha))*b/a)); // !!
          gamma := 180-alpha-beta;
          c := sqrt(a*a + b*b - 2*a*b*cos(DegtoRad(gamma)));
          u := a+b+c;
              s := u/2;
          Area := sqrt(s*(s-a)*(s-b)*(s-c));
            beta2 := 90+(90-beta);
            if beta2 > beta then
              begin
              ShowMessage('Dreieck mehrdeutig, 2 Lösungen vorhanden.');
              gamma2 := 180-alpha-beta2;
              c2 := sqrt(a*a + b*b - 2*a*b*cos(DegtoRad(gamma2)));
              u2 := a+b+c2;
              s2 := u2/2;
              Area2 := sqrt(s2*(s2-a)*(s2-b)*(s2-c2));
              aDEdAlpha2.Text := FloatToStrF(alpha,ffFixed,10,2)+ '°';
              aDEdBeta2.Text := FloatToStrF(beta2,ffFixed,10,2)+ '°';
              aDEdGamma2.Text := FloatToStrF(gamma2,ffFixed,10,2)+ '°';
              aDEdLaengea2.Text := FloatToStr(a);
              aDEdLaengeb2.Text := FloatToStr(b);
              aDEdLaengec2.Text := FloatToStrF(c2,ffFixed,10,3);
              aDEdUmfang2.Text := FloatToStrF(u2,ffFixed,10,3);
              aDEdFlaeche2.Text := FloatToStrF(Area2,ffFixed,10,2);
              aDEdAlpha.Width := 85;
              aDEdBeta.Width := 85;
              aDEdGamma.Width := 85;
              aDEdLaengea.Width := 85;
              aDEdLaengeb.Width := 85;
              aDEdLaengec.Width := 85;
              aDEdUmfang.Width := 85;
              aDEdFlaeche.Width := 85;
              aDEdAlpha2.Visible := true;
              aDEdBeta2.Visible := true;
              aDEdGamma2.Visible := true;
              aDEdLaengea2.Visible := true;
              aDEdLaengeb2.Visible := true;
              aDEdLaengec2.Visible := true;
              aDEdUmfang2.Visible := true;
              aDEdFlaeche2.Visible := true;
              aDLbDreieck1.Visible := true;
              aDLbDreieck2.Visible := true;
              end;
          aDEdAlpha.Text := FloatToStrF(alpha,ffFixed,10,2)+ '°';
          aDEdBeta.Text := FloatToStrF(beta,ffFixed,10,2)+ '°';
          aDEdGamma.Text := FloatToStrF(gamma,ffFixed,10,2)+ '°';
          aDEdLaengec.Text := FloatToStrF(c,ffFixed,10,3);
          aDEdUmfang.Text := FloatToStrF(u,ffFixed,10,3);
          aDEdFlaeche.Text := FloatToStrF(Area,ffFixed,10,2);
        except
          on EInvalidOp
            do begin MessageDlg('Dreieck nicht lösbar!', mtWarning, [mbOK], 0);
            aDEdAlpha.Text := '';
            aDEdBeta.Text := ' Error!';
            aDEdGamma.Text := '';
            aDEdLaengea.Text := '';
            aDEdLaengeb.Text := '';
            aDEdLaengec.Text := '';
            aDEdUmfang.Text := '';
            aDEdFlaeche.Text := '';
            end
        end;
        end else

      if aDEdLaengec.Text > '0then
        begin
        try
          alpha := StrToFloat(aDEdAlpha.Text);
          a := StrToFloat(aDEdLaengea.Text);
          c := StrToFloat(aDEdLaengec.Text);
          gamma := RadtoDeg(arcsin(sin(DegtoRad(alpha))*c/a)); // !!
          beta := 180-alpha-gamma;
          b := sqrt(a*a + c*c - 2*a*c*cos(DegtoRad(beta)));
          u := a+b+c;
              s := u/2;
          Area := sqrt(s*(s-a)*(s-b)*(s-c));
          gamma2 := 90+(90-gamma);
            if gamma2 > gamma then
              begin
              ShowMessage('Dreieck mehrdeutig, 2 Lösungen vorhanden.');
              beta2 := 180-alpha-gamma2;
              b2 := sqrt(a*a + c*c - 2*a*c*cos(DegtoRad(beta2)));
              u2 := a+b2+c;
              s2 := u2/2;
              Area2 := sqrt(s2*(s2-a)*(s2-b2)*(s2-c));
              aDEdAlpha2.Text := FloatToStrF(alpha,ffFixed,10,2)+ '°';
              aDEdBeta2.Text := FloatToStrF(beta2,ffFixed,10,2)+ '°';
              aDEdGamma2.Text := FloatToStrF(gamma2,ffFixed,10,2)+ '°';
              aDEdLaengea2.Text := FloatToStr(a);
              aDEdLaengeb2.Text := FloatToStrF(b2,ffFixed,10,3);
              aDEdLaengec2.Text := FloatToStr(c);
              aDEdUmfang2.Text := FloatToStrF(u2,ffFixed,10,3);
              aDEdFlaeche2.Text := FloatToStrF(Area2,ffFixed,10,2);
              aDEdAlpha.Width := 85;
              aDEdBeta.Width := 85;
              aDEdGamma.Width := 85;
              aDEdLaengea.Width := 85;
              aDEdLaengeb.Width := 85;
              aDEdLaengec.Width := 85;
              aDEdUmfang.Width := 85;
              aDEdFlaeche.Width := 85;
              aDEdAlpha2.Visible := true;
              aDEdBeta2.Visible := true;
              aDEdGamma2.Visible := true;
              aDEdLaengea2.Visible := true;
              aDEdLaengeb2.Visible := true;
              aDEdLaengec2.Visible := true;
              aDEdUmfang2.Visible := true;
              aDEdFlaeche2.Visible := true;
              aDLbDreieck1.Visible := true;
              aDLbDreieck2.Visible := true;
              end;
          aDEdAlpha.Text := FloatToStrF(alpha,ffFixed,10,2)+ '°';
          aDEdBeta.Text := FloatToStrF(beta,ffFixed,10,2)+ '°';
          aDEdGamma.Text := FloatToStrF(gamma,ffFixed,10,2)+ '°';
          aDEdLaengeb.Text := FloatToStrF(b,ffFixed,10,3);
          aDEdUmfang.Text := FloatToStrF(u,ffFixed,10,3);
          aDEdFlaeche.Text := FloatToStrF(Area,ffFixed,10,2);
        except
          on EInvalidOp
            do begin MessageDlg('Dreieck nicht lösbar!', mtWarning, [mbOK], 0);
            aDEdAlpha.Text := '';
            aDEdBeta.Text := '';
            aDEdGamma.Text := ' Error!';
            aDEdLaengea.Text := '';
            aDEdLaengeb.Text := '';
            aDEdLaengec.Text := '';
            aDEdUmfang.Text := '';
            aDEdFlaeche.Text := '';
            end
        end;
        end
      end else

    if aDEdBeta.Text > '0then
      begin
      if aDEdGamma.Text > '0then
        begin
        beta := StrToFloat(aDEdBeta.Text);
        gamma := StrToFloat(aDEdGamma.Text);
        a := StrToFloat(aDEdLaengea.Text);
        alpha := 180-beta-gamma;
        b := a*sin(DegtoRad(beta))/sin(DegtoRad(alpha));
        c := sqrt(a*a + b*b - 2*a*b*cos(DegtoRad(gamma)));
        u := a+b+c;
            s := u/2;
        Area := sqrt(s*(s-a)*(s-b)*(s-c));
        aDEdAlpha.Text := FloatToStrF(alpha,ffFixed,10,2)+ '°';
        aDEdBeta.Text := FloatToStrF(beta,ffFixed,10,2)+ '°';
        aDEdGamma.Text := FloatToStrF(gamma,ffFixed,10,2)+ '°';
        aDEdLaengeb.Text := FloatToStrF(b,ffFixed,10,3);
        aDEdLaengec.Text := FloatToStrF(c,ffFixed,10,3);
        aDEdUmfang.Text := FloatToStrF(u,ffFixed,10,3);
        aDEdFlaeche.Text := FloatToStrF(Area,ffFixed,10,2);
        end else

      if aDEdLaengeb.Text > '0then
        begin
        try
          beta := StrToFloat(aDEdBeta.Text);
          a := StrToFloat(aDEdLaengea.Text);
          b := StrToFloat(aDEdLaengeb.Text);
          alpha := RadtoDeg(arcsin(sin(DegtoRad(beta))*a/b)); // !!
          gamma := 180-alpha-beta;
          c := sqrt(a*a + b*b - 2*a*b*cos(DegtoRad(gamma)));
          u := a+b+c;
              s := u/2;
          Area := sqrt(s*(s-a)*(s-b)*(s-c));
          alpha2 := 90+(90-alpha);
            if alpha2 > alpha then
              begin
              ShowMessage('Dreieck mehrdeutig, 2 Lösungen vorhanden.');
              gamma2 := 180-alpha2-beta;
              c2 := sqrt(a*a + b*b - 2*a*b*cos(DegtoRad(gamma2)));
              u2 := a+b+c2;
              s2 := u2/2;
              Area2 := sqrt(s2*(s2-a)*(s2-b)*(s2-c2));
              aDEdAlpha2.Text := FloatToStrF(alpha2,ffFixed,10,2)+ '°';
              aDEdBeta2.Text := FloatToStrF(beta,ffFixed,10,2)+ '°';
              aDEdGamma2.Text := FloatToStrF(gamma2,ffFixed,10,2)+ '°';
              aDEdLaengea2.Text := FloatToStr(a);
              aDEdLaengeb2.Text := FloatToStr(b);
              aDEdLaengec2.Text := FloatToStrF(c2,ffFixed,10,3);
              aDEdUmfang2.Text := FloatToStrF(u2,ffFixed,10,3);
              aDEdFlaeche2.Text := FloatToStrF(Area2,ffFixed,10,2);
              aDEdAlpha.Width := 85;
              aDEdBeta.Width := 85;
              aDEdGamma.Width := 85;
              aDEdLaengea.Width := 85;
              aDEdLaengeb.Width := 85;
              aDEdLaengec.Width := 85;
              aDEdUmfang.Width := 85;
              aDEdFlaeche.Width := 85;
              aDEdAlpha2.Visible := true;
              aDEdBeta2.Visible := true;
              aDEdGamma2.Visible := true;
              aDEdLaengea2.Visible := true;
              aDEdLaengeb2.Visible := true;
              aDEdLaengec2.Visible := true;
              aDEdUmfang2.Visible := true;
              aDEdFlaeche2.Visible := true;
              aDLbDreieck1.Visible := true;
              aDLbDreieck2.Visible := true;
              end;
          aDEdAlpha.Text := FloatToStrF(alpha,ffFixed,10,2)+ '°';
          aDEdBeta.Text := FloatToStrF(beta,ffFixed,10,2)+ '°';
          aDEdGamma.Text := FloatToStrF(gamma,ffFixed,10,2)+ '°';
          aDEdLaengec.Text := FloatToStrF(c,ffFixed,10,3);
          aDEdUmfang.Text := FloatToStrF(u,ffFixed,10,3);
          aDEdFlaeche.Text := FloatToStrF(Area,ffFixed,10,2);
        except
          on EInvalidOp
            do begin MessageDlg('Dreieck nicht lösbar!', mtWarning, [mbOK], 0);
            aDEdAlpha.Text := ' Error!';
            aDEdBeta.Text := '';
            aDEdGamma.Text := '';
            aDEdLaengea.Text := '';
            aDEdLaengeb.Text := '';
            aDEdLaengec.Text := '';
            aDEdUmfang.Text := '';
            aDEdFlaeche.Text := '';
            end
        end;
        end else

      if aDEdLaengec.Text > '0then
        begin
        beta := StrToFloat(aDEdBeta.Text);
        a := StrToFloat(aDEdLaengea.Text);
        c := StrToFloat(aDEdLaengec.Text);
        b := sqrt(a*a + c*c - 2*a*c*cos(DegtoRad(beta)));
        alpha := RadtoDeg(arccos((b*b+c*c-a*a)/(2*b*c)));
        gamma := 180-alpha-beta;
        u := a+b+c;
            s := u/2;
        Area := sqrt(s*(s-a)*(s-b)*(s-c));
        aDEdAlpha.Text := FloatToStrF(alpha,ffFixed,10,2);
        aDEdBeta.Text := FloatToStrF(beta,ffFixed,10,2)+ '°';
        aDEdGamma.Text := FloatToStrF(gamma,ffFixed,10,2);
        aDEdLaengeb.Text := FloatToStrF(b,ffFixed,10,3);
        aDEdUmfang.Text := FloatToStrF(u,ffFixed,10,3);
        aDEdFlaeche.Text := FloatToStrF(Area,ffFixed,10,2);
        end
      end else

    if aDEdGamma.Text > '0then
      begin
      if aDEdLaengeb.Text > '0then
        begin
        gamma := StrToFloat(aDEdGamma.Text);
        a := StrToFloat(aDEdLaengea.Text);
        b := StrToFloat(aDEdLaengeb.Text);
        c := sqrt(a*a + b*b - 2*a*b*cos(DegtoRad(gamma)));
        alpha := RadtoDeg(arccos((b*b+c*c-a*a)/(2*b*c)));
        beta := 180-alpha-gamma;
        u := a+b+c;
            s := u/2;
        Area := sqrt(s*(s-a)*(s-b)*(s-c));
        aDEdAlpha.Text := FloatToStrF(alpha,ffFixed,10,2)+ '°';
        aDEdBeta.Text := FloatToStrF(beta,ffFixed,10,2)+ '°';
        aDEdGamma.Text := FloatToStrF(gamma,ffFixed,10,2)+ '°';
        aDEdLaengec.Text := FloatToStrF(c,ffFixed,10,3);
        aDEdUmfang.Text := FloatToStrF(u,ffFixed,10,3);
        aDEdFlaeche.Text := FloatToStrF(Area,ffFixed,10,2);
        end else

      if aDEdLaengec.Text > '0then
        begin
        try
          gamma := StrToFloat(aDEdGamma.Text);
          a := StrToFloat(aDEdLaengea.Text);
          c := StrToFloat(aDEdLaengec.Text);
          alpha := RadtoDeg(arcsin(sin(DegtoRad(Gamma))*a/c)); // !!
          beta := 180-alpha-gamma;
          b := sqrt(a*a + c*c - 2*a*c*cos(DegtoRad(beta)));
          u := a+b+c;
              s := u/2;
          Area := sqrt(s*(s-a)*(s-b)*(s-c));
          alpha2 := 90+(90-alpha);
            if alpha2 > alpha then
              begin
              ShowMessage('Dreieck mehrdeutig, 2 Lösungen vorhanden.');
              beta2 := 180-alpha2-gamma;
              b2 := sqrt(a*a + c*c - 2*a*c*cos(DegtoRad(beta2)));
              u2 := a+b2+c;
              s2 := u2/2;
              Area2 := sqrt(s2*(s2-a)*(s2-b2)*(s2-c));
              aDEdAlpha2.Text := FloatToStrF(alpha2,ffFixed,10,2)+ '°';
              aDEdBeta2.Text := FloatToStrF(beta2,ffFixed,10,2)+ '°';
              aDEdGamma2.Text := FloatToStrF(gamma,ffFixed,10,2)+ '°';
              aDEdLaengea2.Text := FloatToStr(a);
              aDEdLaengeb2.Text := FloatToStrF(b2,ffFixed,10,3);
              aDEdLaengec2.Text := FloatToStr(c);
              aDEdUmfang2.Text := FloatToStrF(u2,ffFixed,10,3);
              aDEdFlaeche2.Text := FloatToStrF(Area2,ffFixed,10,2);
              aDEdAlpha.Width := 85;
              aDEdBeta.Width := 85;
              aDEdGamma.Width := 85;
              aDEdLaengea.Width := 85;
              aDEdLaengeb.Width := 85;
              aDEdLaengec.Width := 85;
              aDEdUmfang.Width := 85;
              aDEdFlaeche.Width := 85;
              aDEdAlpha2.Visible := true;
              aDEdBeta2.Visible := true;
              aDEdGamma2.Visible := true;
              aDEdLaengea2.Visible := true;
              aDEdLaengeb2.Visible := true;
              aDEdLaengec2.Visible := true;
              aDEdUmfang2.Visible := true;
              aDEdFlaeche2.Visible := true;
              aDLbDreieck1.Visible := true;
              aDLbDreieck2.Visible := true;
              end;
          aDEdAlpha.Text := FloatToStrF(alpha,ffFixed,10,2)+ '°';
          aDEdBeta.Text := FloatToStrF(beta,ffFixed,10,2)+ '°';
          aDEdGamma.Text := FloatToStrF(gamma,ffFixed,10,2)+ '°';
          aDEdLaengeb.Text := FloatToStrF(b,ffFixed,10,3);
          aDEdUmfang.Text := FloatToStrF(u,ffFixed,10,3);
          aDEdFlaeche.Text := FloatToStrF(Area,ffFixed,10,2);
        except
          on EInvalidOp
            do begin MessageDlg('Dreieck nicht lösbar!', mtWarning, [mbOK], 0);
            aDEdAlpha.Text := ' Error!';
            aDEdBeta.Text := '';
            aDEdGamma.Text := '';
            aDEdLaengea.Text := '';
            aDEdLaengeb.Text := '';
            aDEdLaengec.Text := '';
            aDEdUmfang.Text := '';
            aDEdFlaeche.Text := '';
            end
        end;
        end
      end else

    if aDEdLaengeb.Text > '0then
      begin
      if aDEdLaengec.Text > '0then
        begin
        try
          a := StrToFloat(aDEdLaengea.Text);
          b := StrToFloat(aDEdLaengeb.Text);
          c := StrToFloat(aDEdLaengec.Text);
          alpha := RadtoDeg(arccos((b*b+c*c-a*a)/(2*b*c)));
          beta := RadtoDeg(arccos((a*a+c*c-b*b)/(2*a*c)));
          gamma := 180-alpha-beta;
          u := a+b+c;
              s := u/2;
          Area := sqrt(s*(s-a)*(s-b)*(s-c));
          aDEdAlpha.Text := FloatToStrF(alpha,ffFixed,10,2)+ '°';
          aDEdBeta.Text := FloatToStrF(beta,ffFixed,10,2)+ '°';
          aDEdGamma.Text := FloatToStrF(gamma,ffFixed,10,2)+ '°';
          aDEdUmfang.Text := FloatToStrF(u,ffFixed,10,3);
          aDEdFlaeche.Text := FloatToStrF(Area,ffFixed,10,2);
        except
          on EInvalidOp
            do begin MessageDlg('Fehler!' + #13 + 'Eine Seite muss mindestens so lang sein wie die Summe der anderen beiden.', mtWarning, [mbOK], 0);
            aDEdAlpha.Text := '';
            aDEdBeta.Text := '';
            aDEdGamma.Text := '';
            aDEdLaengea.Text := ' Error!';
            aDEdLaengeb.Text := ' Error!';
            aDEdLaengec.Text := ' Error!';
            aDEdUmfang.Text := '';
            aDEdFlaeche.Text := '';
            end
        end;
        end
      end
    end else

  if aDEdLaengeb.Text > '0then
    begin
    if aDEdAlpha.Text > '0then
      begin
      if aDEdBeta.Text > '0then
        begin
        alpha := StrToFloat(aDEdAlpha.Text);
        beta := StrToFloat(aDEdBeta.Text);
        b := StrToFloat(aDEdLaengeb.Text);
        gamma := 180-alpha-beta;
        a := b*Sin(DegtoRad(alpha))/Sin(DegtoRad(beta));
        c := sqrt(a*a + b*b - 2*a*b*cos(DegtoRad(gamma)));
        u := a+b+c;
            s := u/2;
        Area := sqrt(s*(s-a)*(s-b)*(s-c));
        aDEdLaengea.Text := FloatToStrF(a,ffFixed,10,3);
        aDEdLaengec.Text := FloatToStrF(c,ffFixed,10,3);
        aDEdAlpha.Text := FloatToStrF(alpha,ffFixed,10,2)+ '°';
        aDEdBeta.Text := FloatToStrF(beta,ffFixed,10,2)+ '°';
        aDEdGamma.Text := FloatToStrF(gamma,ffFixed,10,2)+ '°';
        aDEdUmfang.Text := FloatToStrF(u,ffFixed,10,3);
        aDEdFlaeche.Text := FloatToStrF(Area,ffFixed,10,2);
        end else

      if aDEdGamma.Text > '0then
        begin
        alpha := StrToFloat(aDEdAlpha.Text);
        gamma := StrToFloat(aDEdGamma.Text);
        b := StrToFloat(aDEdLaengeb.Text);
        beta := 180-alpha-gamma;
        a := b*Sin(DegtoRad(alpha))/Sin(DegtoRad(beta));
        c := sqrt(a*a + b*b - 2*a*b*cos(DegtoRad(gamma)));
        u := a+b+c;
            s := u/2;
        Area := sqrt(s*(s-a)*(s-b)*(s-c));
        aDEdLaengea.Text := FloatToStrF(a,ffFixed,10,3);
        aDEdLaengec.Text := FloatToStrF(c,ffFixed,10,3);
        aDEdAlpha.Text := FloatToStrF(alpha,ffFixed,10,2)+ '°';
        aDEdBeta.Text := FloatToStrF(beta,ffFixed,10,2)+ '°';
        aDEdGamma.Text := FloatToStrF(gamma,ffFixed,10,2)+ '°';
        aDEdUmfang.Text := FloatToStrF(u,ffFixed,10,3);
        aDEdFlaeche.Text := FloatToStrF(Area,ffFixed,10,2);
        end else

      if aDEdLaengec.Text > '0then
        begin
        alpha := StrToFloat(aDEdAlpha.Text);
        b := StrToFloat(aDEdLaengeb.Text);
        c := StrToFloat(aDEdLaengec.Text);
        a := sqrt(b*b + c*c - 2*b*c*cos(DegtoRad(alpha)));
        beta := RadtoDeg(arccos((a*a+c*c-b*b)/(2*a*c)));
        gamma := 180-alpha-beta;
        u := a+b+c;
            s := u/2;
        Area := sqrt(s*(s-a)*(s-b)*(s-c));
        aDEdLaengea.Text := FloatToStrF(a,ffFixed,10,3);
        aDEdAlpha.Text := FloatToStrF(alpha,ffFixed,10,2)+ '°';
        aDEdBeta.Text := FloatToStrF(beta,ffFixed,10,2)+ '°';
        aDEdGamma.Text := FloatToStrF(gamma,ffFixed,10,2)+ '°';
        aDEdUmfang.Text := FloatToStrF(u,ffFixed,10,3);
        aDEdFlaeche.Text := FloatToStrF(Area,ffFixed,10,2);
        end
      end else

    if aDEdBeta.Text > '0then
      begin
      if aDEdGamma.Text > '0then
        begin
        beta := StrToFloat(aDEdBeta.Text);
        b := StrToFloat(aDEdLaengeb.Text);
        gamma := StrToFloat(aDEdGamma.Text);
        alpha := 180-beta-gamma;
        a := b*Sin(DegtoRad(alpha))/Sin(DegtoRad(beta));
        c := sqrt(a*a + b*b - 2*a*b*cos(DegtoRad(gamma)));
        u := a+b+c;
            s := u/2;
        Area := sqrt(s*(s-a)*(s-b)*(s-c));
        aDEdLaengea.Text := FloatToStrF(a,ffFixed,10,3);
        aDEdLaengec.Text := FloatToStrF(c,ffFixed,10,3);
        aDEdAlpha.Text := FloatToStrF(alpha,ffFixed,10,2)+ '°';
        aDEdBeta.Text := FloatToStrF(beta,ffFixed,10,2)+ '°';
        aDEdGamma.Text := FloatToStrF(gamma,ffFixed,10,2)+ '°';
        aDEdUmfang.Text := FloatToStrF(u,ffFixed,10,3);
        aDEdFlaeche.Text := FloatToStrF(Area,ffFixed,10,2);
        end else

      if aDEdLaengec.Text > '0then
        begin
        try
          beta := StrToFloat(aDEdBeta.Text);
          b := StrToFloat(aDEdLaengeb.Text);
          c := StrToFloat(aDEdLaengec.Text);
          gamma := RadtoDeg(arcsin(sin(DegtoRad(beta))*c/b)); // !!
          alpha := 180-beta-gamma;
          a := sqrt(b*b + c*c - 2*b*c*cos(DegtoRad(alpha)));
          u := a+b+c;
              s := u/2;
          Area := sqrt(s*(s-a)*(s-b)*(s-c));
          gamma2 := 90+(90-gamma);
            if gamma2 > gamma then
              begin
              ShowMessage('Dreieck mehrdeutig, 2 Lösungen vorhanden.');
              alpha2 := 180-beta-gamma2;
              a2 := sqrt(b*b + c*c - 2*b*c*cos(DegtoRad(alpha2)));
              u2 := a2+b+c;
              s2 := u2/2;
              Area2 := sqrt(s2*(s2-a2)*(s2-b)*(s2-c));
              aDEdAlpha2.Text := FloatToStrF(alpha2,ffFixed,10,2)+ '°';
              aDEdBeta2.Text := FloatToStrF(beta,ffFixed,10,2)+ '°';
              aDEdGamma2.Text := FloatToStrF(gamma2,ffFixed,10,2)+ '°';
              aDEdLaengea2.Text := FloatToStrF(a2,ffFixed,10,3);
              aDEdLaengeb2.Text := FloatToStr(b);
              aDEdLaengec2.Text := FloatToStr(c);
              aDEdUmfang2.Text := FloatToStrF(u2,ffFixed,10,3);
              aDEdFlaeche2.Text := FloatToStrF(Area2,ffFixed,10,2);
              aDEdAlpha.Width := 85;
              aDEdBeta.Width := 85;
              aDEdGamma.Width := 85;
              aDEdLaengea.Width := 85;
              aDEdLaengeb.Width := 85;
              aDEdLaengec.Width := 85;
              aDEdUmfang.Width := 85;
              aDEdFlaeche.Width := 85;
              aDEdAlpha2.Visible := true;
              aDEdBeta2.Visible := true;
              aDEdGamma2.Visible := true;
              aDEdLaengea2.Visible := true;
              aDEdLaengeb2.Visible := true;
              aDEdLaengec2.Visible := true;
              aDEdUmfang2.Visible := true;
              aDEdFlaeche2.Visible := true;
              aDLbDreieck1.Visible := true;
              aDLbDreieck2.Visible := true;
              end;
          aDEdLaengea.Text := FloatToStrF(a,ffFixed,10,3);
          aDEdAlpha.Text := FloatToStrF(alpha,ffFixed,10,2)+ '°';
          aDEdBeta.Text := FloatToStrF(beta,ffFixed,10,2)+ '°';
          aDEdGamma.Text := FloatToStrF(gamma,ffFixed,10,2)+ '°';
          aDEdUmfang.Text := FloatToStrF(u,ffFixed,10,3);
          aDEdFlaeche.Text := FloatToStrF(Area,ffFixed,10,2);
        except
          on EInvalidOp
            do begin MessageDlg('Dreieck nicht lösbar!', mtWarning, [mbOK], 0);
            aDEdAlpha.Text := '';
            aDEdBeta.Text := '';
            aDEdGamma.Text := ' Error!';
            aDEdLaengea.Text := '';
            aDEdLaengeb.Text := '';
            aDEdLaengec.Text := '';
            aDEdUmfang.Text := '';
            aDEdFlaeche.Text := '';
            end
        end;
        end
      end else

    if aDEdGamma.Text > '0then
      begin
      if aDEdLaengec.Text > '0then
        begin
        try
          gamma := StrToFloat(aDEdGamma.Text);
          b := StrToFloat(aDEdLaengeb.Text);
          c := StrToFloat(aDEdLaengec.Text);
          beta := RadtoDeg(arcsin(sin(DegtoRad(gamma))*b/c)); // !!
          alpha := 180-beta-gamma;
          a := sqrt(b*b + c*c - 2*b*c*cos(DegtoRad(alpha)));
          u := a+b+c;
              s := u/2;
          Area := sqrt(s*(s-a)*(s-b)*(s-c));
          beta2 := 90+(90-beta);
            if beta2 > beta then
              begin
              ShowMessage('Dreieck mehrdeutig, 2 Lösungen vorhanden.');
              alpha2 := 180-beta2-gamma;
              a2 := sqrt(b*b + c*c - 2*b*c*cos(DegtoRad(alpha2)));
              u2 := a2+b+c;
              s2 := u2/2;
              Area2 := sqrt(s2*(s2-a2)*(s2-b)*(s2-c));
              aDEdAlpha2.Text := FloatToStrF(alpha2,ffFixed,10,2)+ '°';
              aDEdBeta2.Text := FloatToStrF(beta2,ffFixed,10,2)+ '°';
              aDEdGamma2.Text := FloatToStrF(gamma,ffFixed,10,2)+ '°';
              aDEdLaengea2.Text := FloatToStrF(a2,ffFixed,10,3);
              aDEdLaengeb2.Text := FloatToStr(b);
              aDEdLaengec2.Text := FloatToStr(c);
              aDEdUmfang2.Text := FloatToStrF(u2,ffFixed,10,3);
              aDEdFlaeche2.Text := FloatToStrF(Area2,ffFixed,10,2);
              aDEdAlpha.Width := 85;
              aDEdBeta.Width := 85;
              aDEdGamma.Width := 85;
              aDEdLaengea.Width := 85;
              aDEdLaengeb.Width := 85;
              aDEdLaengec.Width := 85;
              aDEdUmfang.Width := 85;
              aDEdFlaeche.Width := 85;
              aDEdAlpha2.Visible := true;
              aDEdBeta2.Visible := true;
              aDEdGamma2.Visible := true;
              aDEdLaengea2.Visible := true;
              aDEdLaengeb2.Visible := true;
              aDEdLaengec2.Visible := true;
              aDEdUmfang2.Visible := true;
              aDEdFlaeche2.Visible := true;
              aDLbDreieck1.Visible := true;
              aDLbDreieck2.Visible := true;
              end;
          aDEdLaengea.Text := FloatToStrF(a,ffFixed,10,3);
          aDEdAlpha.Text := FloatToStrF(alpha,ffFixed,10,2)+ '°';
          aDEdBeta.Text := FloatToStrF(beta,ffFixed,10,2)+ '°';
          aDEdGamma.Text := FloatToStrF(gamma,ffFixed,10,2)+ '°';
          aDEdUmfang.Text := FloatToStrF(u,ffFixed,10,3);
          aDEdFlaeche.Text := FloatToStrF(Area,ffFixed,10,2);
        except
          on EInvalidOp
            do begin MessageDlg('Dreieck nicht lösbar!', mtWarning, [mbOK], 0);
            aDEdAlpha.Text := '';
            aDEdBeta.Text := ' Error!';
            aDEdGamma.Text := '';
            aDEdLaengea.Text := '';
            aDEdLaengeb.Text := '';
            aDEdLaengec.Text := '';
            aDEdUmfang.Text := '';
            aDEdFlaeche.Text := '';
            end
        end;
        end
      end
    end else

  if aDEdLaengec.Text > '0then
    begin
    if aDEdAlpha.Text > '0then
      begin
      if aDEdBeta.Text > '0then
        begin
        alpha := StrToFloat(aDEdAlpha.Text);
        beta := StrToFloat(aDEdBeta.Text);
        c := StrToFloat(aDEdLaengec.Text);
        gamma := 180-alpha-beta;
        a := c*Sin(DegtoRad(alpha))/Sin(DegtoRad(gamma));
        b := sqrt(a*a + c*c - 2*a*c*cos(DegtoRad(beta)));
        u := a+b+c;
            s := u/2;
        Area := sqrt(s*(s-a)*(s-b)*(s-c));
        aDEdLaengea.Text := FloatToStrF(a,ffFixed,10,3);
        aDEdLaengeb.Text := FloatToStrF(b,ffFixed,10,3);
        aDEdAlpha.Text := FloatToStrF(alpha,ffFixed,10,2)+ '°';
        aDEdBeta.Text := FloatToStrF(beta,ffFixed,10,2)+ '°';
        aDEdGamma.Text := FloatToStrF(gamma,ffFixed,10,2)+ '°';
        aDEdUmfang.Text := FloatToStrF(u,ffFixed,10,3);
        aDEdFlaeche.Text := FloatToStrF(Area,ffFixed,10,2);
        end else

      if aDEdGamma.Text > '0then
        begin
        alpha := StrToFloat(aDEdAlpha.Text);
        gamma := StrToFloat(aDEdGamma.Text);
        c := StrToFloat(aDEdLaengec.Text);
        beta := 180-alpha-gamma;
        a := c*Sin(DegtoRad(alpha))/Sin(DegtoRad(gamma));
        b := sqrt(a*a + c*c - 2*a*c*cos(DegtoRad(beta)));
        u := a+b+c;
            s := u/2;
        Area := sqrt(s*(s-a)*(s-b)*(s-c));
        aDEdLaengea.Text := FloatToStrF(a,ffFixed,10,3);
        aDEdLaengeb.Text := FloatToStrF(b,ffFixed,10,3);
        aDEdAlpha.Text := FloatToStrF(alpha,ffFixed,10,2)+ '°';
        aDEdBeta.Text := FloatToStrF(beta,ffFixed,10,2)+ '°';
        aDEdGamma.Text := FloatToStrF(gamma,ffFixed,10,2)+ '°';
        aDEdUmfang.Text := FloatToStrF(u,ffFixed,10,3);
        aDEdFlaeche.Text := FloatToStrF(Area,ffFixed,10,2);
        end
      end else

    if aDEdBeta.Text > '0then
      begin
      if aDEdGamma.Text > '0then
        begin
        beta := StrToFloat(aDEdBeta.Text);
        c := StrToFloat(aDEdLaengec.Text);
        gamma := StrToFloat(aDEdGamma.Text);
        alpha := 180-beta-gamma;
        a := c*Sin(DegtoRad(alpha))/Sin(DegtoRad(gamma));
        b := sqrt(a*a + c*c - 2*a*c*cos(DegtoRad(beta)));
        u := a+b+c;
            s := u/2;
        Area := sqrt(s*(s-a)*(s-b)*(s-c));
        aDEdLaengea.Text := FloatToStrF(a,ffFixed,10,3);
        aDEdLaengeb.Text := FloatToStrF(b,ffFixed,10,3);
        aDEdAlpha.Text := FloatToStrF(alpha,ffFixed,10,2)+ '°';
        aDEdBeta.Text := FloatToStrF(beta,ffFixed,10,2)+ '°';
        aDEdGamma.Text := FloatToStrF(gamma,ffFixed,10,2)+ '°';
        aDEdUmfang.Text := FloatToStrF(u,ffFixed,10,3);
        aDEdFlaeche.Text := FloatToStrF(Area,ffFixed,10,2);
        end
      end
    end;
  aDEdAlpha.ReadOnly := true;
  aDEdBeta.ReadOnly := true;
  aDEdGamma.ReadOnly := true;
  aDEdLaengea.ReadOnly := true;
  aDEdLaengeb.ReadOnly := true;
  aDEdLaengec.ReadOnly := true;
  aDBtRechnen.Enabled := false;
end;

procedure TForm1.aDBtLoeschenClick(Sender: TObject);
begin
 aDEdAlpha.Text := '0';
aDEdBeta.Text := '0';
aDEdGamma.Text := '0';
aDEdLaengea.Text := '0';
aDEdLaengeb.Text := '0';
aDEdLaengec.Text := '0';
aDEdUmfang.Text := '0';
aDEdFlaeche.Text := '0';
aDEdAlpha2.Text := '0';
aDEdBeta2.Text := '0';
aDEdGamma2.Text := '0';
aDEdLaengea2.Text := '0';
aDEdLaengeb2.Text := '0';
aDEdLaengec2.Text := '0';
aDEdUmfang2.Text := '0';
aDEdFlaeche2.Text := '0';
aDEdAlpha.ReadOnly := false;
aDEdBeta.ReadOnly := false;
aDEdGamma.ReadOnly := false;
aDEdLaengea.ReadOnly := false;
aDEdLaengeb.ReadOnly := false;
aDEdLaengec.ReadOnly := false;
aDBtRechnen.Enabled := true;
aDLbDreieck1.Visible := false;
aDLbDreieck2.Visible := false;
aDEdAlpha2.Visible := false;
aDEdBeta2.Visible := false;
aDEdGamma2.Visible := false;
aDEdLaengea2.Visible := false;
aDEdLaengeb2.Visible := false;
aDEdLaengec2.Visible := false;
aDEdUmfang2.Visible := false;
aDEdFlaeche2.Visible := false;
aDEdAlpha.Width := 177;
aDEdBeta.Width := 177;
aDEdGamma.Width := 177;
aDEdLaengea.Width := 177;
aDEdLaengeb.Width := 177;
aDEdLaengec.Width := 177;
aDEdUmfang.Width := 177;
aDEdFlaeche.Width := 177;
end; //SPERRLISTE FÜR EDITFELDER

(*----------------------------------Körper----------------------------------*)

(*_____Würfel_____*)
procedure TForm1.WBtRechnenClick(Sender: TObject);
var a,d,k,O,V :real;
begin
  if WEdKanten.Text > '0then
    begin
    a := StrToFloat(WEdKanten.Text);
    d := a*sqrt(3);
    k := 12*a;
    O := 6 * (a*a);
    V := a*a*a;
    WEdDiagonale.Text := FloatToStrF(d,ffFixed,10,3);
    WEdGesamtkanten.Text := FloatToStrF(k,ffFixed,10,3);
    WEdOberflaeche.Text := FloatToStrF(O,ffFixed,10,3);
    WEdVolumen.Text := FloatToStrF(V,ffFixed,10,2);
    end else

  if WEdDiagonale.Text > '0then
    begin
    d := StrToFloat(WEdDiagonale.Text);
    a := sqrt((d*d)/3);
    k := 12*a;
    O := 6 * (a*a);
    V := a*a*a;
    WEdKanten.Text := FloatToStrF(a,ffFixed,10,3);
    WEdGesamtkanten.Text := FloatToStrF(k,ffFixed,10,3);
    WEdOberflaeche.Text := FloatToStrF(O,ffFixed,10,3);
    WEdVolumen.Text := FloatToStrF(V,ffFixed,10,2);
    end else

  if WEdGesamtkanten.Text > '0then
    begin
    k := StrToFloat(WEdGesamtkanten.Text);
    a := k/12;
    d := a*sqrt(3);
    O := 6*(a*a);
    V := a*a*a;
    WEdKanten.Text := FloatToStrF(a,ffFixed,10,3);
    WEdDiagonale.Text := FloatToStrF(d,ffFixed,10,3);
    WEdOberflaeche.Text := FloatToStrF(O,ffFixed,10,3);
    WEdVolumen.Text := FloatToStrF(V,ffFixed,10,2);
    end;
  WEdKanten.ReadOnly := true;
  WEdDiagonale.ReadOnly := true;
  WEdGesamtkanten.ReadOnly := true;
  WBtRechnen.Enabled := false;
end;

procedure TForm1.WBtLoeschenClick(Sender: TObject);
begin
WEdKanten.Text := '0';
WEdDiagonale.Text := '0';
WEdGesamtkanten.Text := '0';
WEdOberflaeche.Text := '0';
WEdVolumen.Text := '0';
WEdKanten.ReadOnly := false;
WEdDiagonale.ReadOnly := false;
WEdGesamtkanten.ReadOnly := false;
WBtRechnen.Enabled := true;
end;

procedure TForm1.WEdKantenChange(Sender: TObject);
begin
if WEdKanten.Text > '0then
  begin
  WEdDiagonale.ReadOnly := true;
  WEdGesamtkanten.ReadOnly := true;
  end else
  begin
  WEdDiagonale.ReadOnly := false;
  WEdGesamtkanten.ReadOnly := false;
  end;
end;

procedure TForm1.WEdDiagonaleChange(Sender: TObject);
begin
if WEdDiagonale.Text > '0then
  begin
  WEdKanten.ReadOnly := true;
  WEdGesamtkanten.ReadOnly := true;
  end else
  begin
  WEdKanten.ReadOnly := false;
  WEdGesamtkanten.ReadOnly := false;
  end;
end;

procedure TForm1.WEdGesamtkantenChange(Sender: TObject);
begin
if WEdGesamtkanten.Text > '0then
  begin
  WEdKanten.ReadOnly := true;
  WEdDiagonale.ReadOnly := true;
  end else
  begin
  WEdKanten.ReadOnly := false;
  WEdDiagonale.ReadOnly := false;
  end;
end;

(*_____Quader_____*)
procedure TForm1.QuBtRechnenClick(Sender: TObject);
var a,b,c,d,k,O,V :real;
begin
  if QuEdKantea.Text > '0then
   if QuEdKanteb.Text > '0then
    if QuEdKantec.Text > '0then
    begin
    a := StrToFloat(QuEdKantea.Text);
    b := StrToFloat(QuEdKanteb.Text);
    c := StrToFloat(QuEdKantec.Text);
    d := sqrt(a*a + b*b + c*c);
    k := 4*(a+b+c);
    O := 2*(a*b + b*c + a*c);
    V := a*b*c;
    QuEdDiagonale.Text := FloatToStrF(d,ffFixed,10,3);
    QuEdGesamtkanten.Text := FloatToStr(k);
    QuEdOberflaeche.Text := FloatToStr(O);
    QuEdVolumen.Text := FloatToStr(V);

  QuEdKantea.ReadOnly := true;
  QuEdKanteb.ReadOnly := true;
  QuEdKantec.ReadOnly := true;
  QuBtRechnen.Enabled := false;
  end;
end;

procedure TForm1.QuBtLoeschenClick(Sender: TObject);
begin
QuEdKantea.Text := '0';
QuEdKanteb.Text := '0';
QuEdKantec.Text := '0';
QuEdDiagonale.Text := '0';
QuEdGesamtkanten.Text := '0';
QuEdOberflaeche.Text := '0';
QuEdVolumen.Text := '0';
QuEdKantea.ReadOnly := false;
QuEdKanteb.ReadOnly := false;
QuEdKantec.ReadOnly := false;
QuBtRechnen.Enabled := true;
end;

(*_____Kugel_____*)
procedure TForm1.KuBtRechnenClick(Sender: TObject);
var r,d,O,V :real;
begin
  if KuEdRadius.Text > '0then
    begin
    r := StrToFloat(KuEdRadius.Text);
    d := 2*r;
    O := pi*d*d;
    V := 4*pi*(r*r*r)/3;
    KuEdDurchmesser.Text := FloatToStr(d);
    KuEdOberflaeche.Text := FloatToStrF(O,ffFixed,10,3);
    KuEdVolumen.Text := FloatToStrF(V,ffFixed,10,2);
    end else

  if KuEdDurchmesser.Text > '0then
    begin
    d := StrToFloat(KuEdDurchmesser.Text);
    r := d/2;
    O := pi*d*d;
    V := 4*pi*(r*r*r)/3;
    KuEdRadius.Text := FloatToStr(r);
    KuEdOberflaeche.Text := FloatToStrF(O,ffFixed,10,3);
    KuEdVolumen.Text := FloatToStrF(V,ffFixed,10,2);
    end;

  KuEdRadius.ReadOnly := true;
  KuEdDurchmesser.ReadOnly := true;
  KuBtRechnen.Enabled := false;
end;

procedure TForm1.KuBtLoeschenClick(Sender: TObject);
begin
KuEdRadius.Text := '0';
KuEdDurchmesser.Text := '0';
KuEdOberflaeche.Text := '0';
KuEdVolumen.Text := '0';
KuEdRadius.ReadOnly := false;
KuEdDurchmesser.ReadOnly := false;
KuBtRechnen.Enabled := true;
end;

procedure TForm1.KuEdRadiusChange(Sender: TObject);
begin
if KuEdRadius.Text > '0then
  KuEdDurchmesser.ReadOnly := true else
  KuEdDurchmesser.ReadOnly := false;
end;

procedure TForm1.KuEdDurchmesserChange(Sender: TObject);
begin
if KuEdDurchmesser.Text > '0then
  KuEdRadius.ReadOnly := true else
  KuEdRadius.ReadOnly := false;
end;

(*_____Zylinder_____*)
procedure TForm1.ZBtRechnenClick(Sender: TObject);
var r,h,u,O,V,M,A :real;
begin
  if ZEdRadius.Text > '0then
    begin
    r := StrToFloat(ZEdRadius.Text);
    h := StrToFloat(ZEdHoehe.Text);
    u := 2*Pi*r;
    O := 2*Pi*r*(h+r);
    V := Pi*r*r*h;
    M := 2*Pi*r*h;
    A := 2*(Pi*r*r);
    ZEdUmfang.Text := FloatToStrF(u,ffFixed,10,3);
    ZEdOberflaeche.Text := FloatToStrF(O,ffFixed,10,3);
    ZEdVolumen.Text := FloatToStrF(V,ffFixed,10,2);
    ZEdMantel.Text := FloatToStrF(M,ffFixed,10,2);
    ZEdGrundflaechen.Text := FloatToStrF(A,ffFixed,10,2);
    end else

  if ZEdUmfang.Text > '0then
    begin
    u := StrToFloat(ZEdUmfang.Text);
    h := StrToFloat(ZEdHoehe.Text);
    r := u/(2*pi);
    O := 2*Pi*r*(h+r);
    V := Pi*r*r*h;
    M := 2*Pi*r*h;
    A := 2*(Pi*r*r);
    ZEdRadius.Text := FloatToStrF(r,ffFixed,10,3);
    ZEdOberflaeche.Text := FloatToStrF(O,ffFixed,10,3);
    ZEdVolumen.Text := FloatToStrF(V,ffFixed,10,2);
    ZEdMantel.Text := FloatToStrF(M,ffFixed,10,2);
    ZEdGrundflaechen.Text := FloatToStrF(A,ffFixed,10,2);
    end;

  ZEdRadius.ReadOnly := true;
  ZEdHoehe.ReadOnly := true;
  ZEdUmfang.ReadOnly := true;
  ZBtRechnen.Enabled := false;
end;

procedure TForm1.ZBtLoeschenClick(Sender: TObject);
begin
ZEdRadius.Text := '0';
ZEdHoehe.Text := '0';
ZEDUmfang.Text := '0';
ZEdOberflaeche.Text := '0';
ZEdVolumen.Text := '0';
ZEdMantel.Text := '0';
ZEdGrundflaechen.Text := '0';
ZEdRadius.ReadOnly := false;
ZEdHoehe.ReadOnly := false;
ZEdUmfang.ReadOnly := false;
ZBtRechnen.Enabled := true;
end;

procedure TForm1.ZEdRadiusChange(Sender: TObject);
begin
if ZEdRadius.Text > '0then
  ZEdUmfang.ReadOnly := true else
  ZEdUmfang.ReadOnly := false;
end;

procedure TForm1.ZEdUmfangChange(Sender: TObject);
begin
if ZEdUmfang.Text > '0then
  ZEdRadius.ReadOnly := true else
  ZEdRadius.ReadOnly := false;
end;

(*_____Kegel_____*)
procedure TForm1.KeBtRechnenClick(Sender: TObject);
var r,h,u,s,O,V,M,A :real;
begin
  if KeEdRadius.Text > '0then
    begin
    if KeEdHoehe.Text > '0then
      begin
      r := StrToFloat(KeEdRadius.Text);
      h := StrToFloat(KeEdHoehe.Text);
      u := 2*Pi*r;
      s := sqrt(r*r+h*h);
      O := pi*r*(r+s);
      V := Pi*r*r*h/3;
      M := pi*s*r;
      A := pi*r*r;
      KeEdUmfang.Text := FloatToStrF(u,ffFixed,10,3);
      KeEdMantellinie.Text := FloatToStrF(s,ffFixed,10,2);
      KeEdOberflaeche.Text := FloatToStrF(O,ffFixed,10,3);
      KeEdVolumen.Text := FloatToStrF(V,ffFixed,10,2);
      KeEdMantel.Text := FloatToStrF(M,ffFixed,10,2);
      KeEdGrundflaeche.Text := FloatToStrF(A,ffFixed,10,2);
      end else

    if KeEdMantellinie.Text > '0then
      begin
      r := StrToFloat(KeEdRadius.Text);
      s := StrToFloat(KeEdMantellinie.Text);
      u := 2*Pi*r;
      h := sqrt(s*s-r*r);
      O := pi*r*(r+s);
      V := Pi*r*r*h/3;
      M := pi*s*r;
      A := pi*r*r;
      KeEdUmfang.Text := FloatToStrF(u,ffFixed,10,3);
      KeEdHoehe.Text := FloatToStrF(h,ffFixed,10,2);
      KeEdOberflaeche.Text := FloatToStrF(O,ffFixed,10,3);
      KeEdVolumen.Text := FloatToStrF(V,ffFixed,10,2);
      KeEdMantel.Text := FloatToStrF(M,ffFixed,10,2);
      KeEdGrundflaeche.Text := FloatToStrF(A,ffFixed,10,2);
      end;
    end else

  if KeEdUmfang.Text > '0then
    begin
    if KeEdHoehe.Text > '0then
      begin
      u := StrToFloat(KeEdUmfang.Text);
      h := StrToFloat(KeEdHoehe.Text);
      r := u/(2*Pi);
      s := sqrt(r*r+h*h);
      O := pi*r*(r+s);
      V := Pi*r*r*h/3;
      M := pi*s*r;
      A := pi*r*r;
      KeEdRadius.Text := FloatToStrF(r,ffFixed,10,3);
      KeEdMantellinie.Text := FloatToStrF(s,ffFixed,10,2);
      KeEdOberflaeche.Text := FloatToStrF(O,ffFixed,10,3);
      KeEdVolumen.Text := FloatToStrF(V,ffFixed,10,2);
      KeEdMantel.Text := FloatToStrF(M,ffFixed,10,2);
      KeEdGrundflaeche.Text := FloatToStrF(A,ffFixed,10,2);
      end else

    if KeEdMantellinie.Text > '0then
      begin
      u := StrToFloat(KeEdUmfang.Text);
      s := StrToFloat(KeEdMantellinie.Text);
      r := u/(2*Pi);
      h := sqrt(s*s-r*r);
      O := pi*r*(r+s);
      V := Pi*r*r*h/3;
      M := pi*s*r;
      A := pi*r*r;
      KeEdRadius.Text := FloatToStrF(r,ffFixed,10,3);
      KeEdHoehe.Text := FloatToStrF(h,ffFixed,10,2);
      KeEdOberflaeche.Text := FloatToStrF(O,ffFixed,10,3);
      KeEdVolumen.Text := FloatToStrF(V,ffFixed,10,2);
      KeEdMantel.Text := FloatToStrF(M,ffFixed,10,2);
      KeEdGrundflaeche.Text := FloatToStrF(A,ffFixed,10,2);
      end;
    end;

  KeEdRadius.ReadOnly := true;
  KeEdHoehe.ReadOnly := true;
  KeEdUmfang.ReadOnly := true;
  KeEdMantellinie.ReadOnly := true;
  KeBtRechnen.Enabled := false;
end;


procedure TForm1.KeBtLoeschenClick(Sender: TObject);
begin
KeEdRadius.Text := '0';
KeEdHoehe.Text := '0';
KeEdUmfang.Text := '0';
KeEdMantellinie.Text := '0';
KeEdOberflaeche.Text := '0';
KeEdVolumen.Text := '0';
KeEdMantel.Text := '0';
KeEdGrundflaeche.Text := '0';
KeEdRadius.ReadOnly := false;
KeEdHoehe.ReadOnly := false;
KeEdUmfang.ReadOnly := false;
KeEdMantellinie.ReadOnly := false;
KeBtRechnen.Enabled := true;
end;

procedure TForm1.KeEdRadiusChange(Sender: TObject);
begin
if KeEdRadius.Text > '0then
  KeEdUmfang.ReadOnly := true else
  KeEdUmfang.ReadOnly := false;
end;

procedure TForm1.KeEdHoeheChange(Sender: TObject);
begin
if KeEdHoehe.Text > '0then
  KeEdMantellinie.ReadOnly := true else
  KeEdMantellinie.ReadOnly := false;
end;

procedure TForm1.KeEdUmfangChange(Sender: TObject);
begin
if KeEdUmfang.Text > '0then
  KeEdRadius.ReadOnly := true else
  KeEdRadius.ReadOnly := false;
end;

procedure TForm1.KeEdMantellinieChange(Sender: TObject);
begin
if KeEdMantellinie.Text > '0then
  KeEdHoehe.ReadOnly := true else
  KeEdHoehe.ReadOnly := false;
end;

(*_____Pyramide_____*)
procedure TForm1.PBtRechnenClick(Sender: TObject);
var a,h,s,O,V,M,G :real;
    d,hs,x :real;
begin
  if PEdKantenlaenge.Text > '0then
    begin
    if PEdHoehe.Text > '0then
      begin
      a := StrToFloat(PEdKantenlaenge.Text);
      h := StrToFloat(PEdHoehe.Text);
        d := a*sqrt(2);
      s := sqrt(h*h+(d/2)*(d/2));
        hs := sqrt(h*h+(a/2)*(a/2));
      O := a*a+2*a*hs;
      V := (1/3)*a*a*h;
      G := a*a;
      M := O - G;
      PEdSeitenkante.Text := FloatToStrF(s,ffFixed,10,2);
      PEdOberflaeche.Text := FloatToStrF(O,ffFixed,10,3);
      PEdVolumen.Text := FloatToStrF(V,ffFixed,10,2);
      PEdMantel.Text := FloatToStrF(M,ffFixed,10,2);
      PEdGrundflaeche.Text := FloatToStrF(G,ffFixed,10,2);
      end else

    if PEdSeitenkante.Text > '0then
      begin
      try
        a := StrToFloat(PEdKantenlaenge.Text);
        s := StrToFloat(PEdSeitenkante.Text);
          d := a*sqrt(2);
        h := sqrt(s*s-(d/2)*(d/2));
          hs := sqrt(h*h+(a/2)*(a/2));
        O := a*a+2*a*hs;
        V := (1/3)*a*a*h;
        G := a*a;
        M := O - G;
        PEdHoehe.Text := FloatToStrF(h,ffFixed,10,2);
        PEdOberflaeche.Text := FloatToStrF(O,ffFixed,10,3);
        PEdVolumen.Text := FloatToStrF(V,ffFixed,10,2);
        PEdMantel.Text := FloatToStrF(M,ffFixed,10,2);
        PEdGrundflaeche.Text := FloatToStrF(G,ffFixed,10,2);
  PEdKantenlaenge.ReadOnly := true;
  PEdHoehe.ReadOnly := true;
  PEdSeitenkante.ReadOnly := true;
  PBtRechnen.Enabled := false;
      except
      on EInvalidOp
            do begin x := (a*sqrt(2))/2;
            MessageDlg('Berechnung nicht möglich!' +#13+ 'Bitte als Seitenkantenlänge min. ' + FloatToStr(x) + ' nehmen', mtWarning, [mbOK], 0);
            PEdKantenlaenge.ReadOnly := false;
            PEdSeitenkante.ReadOnly := false;
            PEdSeitenkante.Text := FloatToStr(x);
            end
      end;
    end;
  
end;
end;

procedure TForm1.PBtLoeschenClick(Sender: TObject);
begin
PEdKantenlaenge.Text := '0';
PEdHoehe.Text := '0';
PEdSeitenkante.Text := '0';
PEdOberflaeche.Text := '0';
PEdVolumen.Text := '0';
PEdMantel.Text := '0';
PEdGrundflaeche.Text := '0';
PEdKantenlaenge.ReadOnly := false;
PEdHoehe.ReadOnly := false;
PEdSeitenkante.ReadOnly := false;
PBtRechnen.Enabled := true;
end;

procedure TForm1.PEdHoeheChange(Sender: TObject);
begin
if PEdHoehe.Text > '0then
  PEdSeitenkante.ReadOnly := true else
  PEdSeitenkante.ReadOnly := false;
end;

procedure TForm1.PEdSeitenkanteChange(Sender: TObject);
begin
if PEdSeitenkante.Text > '0then
  PEdHoehe.ReadOnly := true else
  PEdHoehe.ReadOnly := false;
end;

(*_____Tetraeder_____*)
procedure TForm1.TBtRechnenClick(Sender: TObject);
var a,h,O,V,M,G :real;
begin
  if TEdKantenlaenge.Text > '0then
    begin
    a := StrToFloat(TEdKantenlaenge.Text);
    h := sqrt(2/3)*a;
    O := a*a*sqrt(3);
    V := a*a*a/12*sqrt(2);
    G := O/4;
    M := O-G;
    TEdHoehe.Text := FloatToStrF(h,ffFixed,10,2);
    TEdOberflaeche.Text := FloatToStrF(O,ffFixed,10,3);
    TEdVolumen.Text := FloatToStrF(V,ffFixed,10,2);
    TEdMantel.Text := FloatToStrF(M,ffFixed,10,2);
    TEdGrundflaeche.Text := FloatToStrF(G,ffFixed,10,2);
    end else

  if TEdHoehe.Text > '0then
    begin
    h := StrToFloat(TEdHoehe.Text);
    a := sqrt(3/2)*h;
    O := a*a*sqrt(3);
    V := a*a*a/12*sqrt(2);
    G := O/4;
    M := O-G;
    TEdKantenlaenge.Text := FloatToStrF(a,ffFixed,10,2);
    TEdOberflaeche.Text := FloatToStrF(O,ffFixed,10,3);
    TEdVolumen.Text := FloatToStrF(V,ffFixed,10,2);
    TEdMantel.Text := FloatToStrF(M,ffFixed,10,2);
    TEdGrundflaeche.Text := FloatToStrF(G,ffFixed,10,2);
    end;
  TEdKantenlaenge.ReadOnly := true;
  TEdHoehe.ReadOnly := true;
  TBtRechnen.Enabled := false;
end;

procedure TForm1.TBtLoeschenClick(Sender: TObject);
begin
TEdKantenlaenge.Text := '0';
TEdHoehe.Text := '0';
TEdOberflaeche.Text := '0';
TEdVolumen.Text := '0';
TEdMantel.Text := '0';
TEdGrundflaeche.Text := '0';
TEdKantenlaenge.ReadOnly := false;
TEdHoehe.ReadOnly := false;
TBtRechnen.Enabled := true;
end;

procedure TForm1.TEdKantenlaengeChange(Sender: TObject);
begin
if TEdKantenlaenge.Text > '0then
  TEdHoehe.ReadOnly := true else
  TEdHoehe.ReadOnly := false;
end;

procedure TForm1.TEdHoeheChange(Sender: TObject);
begin
if TEdHoehe.Text > '0then
  TEdKantenlaenge.ReadOnly := true else
  TEdKantenlaenge.ReadOnly := false;
end;

procedure TForm1.aDEdAlphaChange(Sender: TObject);
begin
if aDEdLaengea.Text > '0then
  begin
  if aDEdAlpha.Text > '0then
    begin
    if aDEdBeta.Text > '0then
      begin
      aDEdGamma.ReadOnly := true;
      aDEdLaengeb.ReadOnly := true;
      aDEdLaengec.ReadOnly := true;
      end else
        begin
        aDEdGamma.ReadOnly := false;
        aDEdLaengeb.ReadOnly := false;
        aDEdLaengec.ReadOnly := false;
        end;
    if aDEdGamma.Text > '0then
      begin
      aDEdBeta.ReadOnly := true;
      aDEdLaengeb.ReadOnly := true;
      aDEdLaengec.ReadOnly := true;
      end else
        begin
        aDEdBeta.ReadOnly := false;
        aDEdLaengeb.ReadOnly := false;
        aDEdLaengec.ReadOnly := false;
        end;
    if aDEdLaengeb.Text > '0then
      begin
      aDEdBeta.ReadOnly := true;
      aDEdGamma.ReadOnly := true;
      aDEdLaengec.ReadOnly := true;
      end else
        begin
        aDEdBeta.ReadOnly := false;
        aDEdGamma.ReadOnly := false;
        aDEdLaengec.ReadOnly := false;
        end;
    if aDEdLaengec.Text > '0then
      begin
      aDEdBeta.ReadOnly := true;
      aDEdGamma.ReadOnly := true;
      aDEdLaengeb.ReadOnly := true;
      end else
        begin
        aDEdBeta.ReadOnly := false;
        aDEdGamma.ReadOnly := false;
        aDEdLaengeb.ReadOnly := false;
        end
    end;
  end else

if aDEdLaengeb.Text > '0then
  begin
  if aDEdAlpha.Text > '0then
    begin
    if aDEdBeta.Text > '0then
      begin
      aDEdGamma.ReadOnly := true;
      aDEdLaengea.ReadOnly := true;
      aDEdLaengec.ReadOnly := true;
      end else
        begin
        aDEdGamma.ReadOnly := false;
        aDEdLaengea.ReadOnly := false;
        aDEdLaengec.ReadOnly := false;
        end;
    if aDEdGamma.Text > '0then
      begin
      aDEdBeta.ReadOnly := true;
      aDEdLaengea.ReadOnly := true;
      aDEdLaengec.ReadOnly := true;
      end else
        begin
        aDEdBeta.ReadOnly := false;
        aDEdLaengea.ReadOnly := false;
        aDEdLaengec.ReadOnly := false;
        end;
    if aDEdLaengec.Text > '0then
      begin
      aDEdBeta.ReadOnly := true;
      aDEdGamma.ReadOnly := true;
      aDEdLaengea.ReadOnly := true;
      end else
        begin
        aDEdBeta.ReadOnly := false;
        aDEdGamma.ReadOnly := false;
        aDEdLaengea.ReadOnly := false;
        end
    end;
  end else

if aDEdLaengec.Text > '0then
  begin
  if aDEdAlpha.Text > '0then
    begin
    if aDEdBeta.Text > '0then
      begin
      aDEdGamma.ReadOnly := true;
      aDEdLaengea.ReadOnly := true;
      aDEdLaengeb.ReadOnly := true;
      end else
       begin
       aDEdGamma.ReadOnly := false;
       aDEdLaengea.ReadOnly := false;
       aDEdLaengeb.ReadOnly := false;
       end;
    if aDEdGamma.Text > '0then
      begin
      aDEdBeta.ReadOnly := true;
      aDEdLaengea.ReadOnly := true;
      aDEdLaengeb.ReadOnly := true;
      end else
       begin
       aDEdBeta.ReadOnly := false;
       aDEdLaengea.ReadOnly := false;
       aDEdLaengeb.ReadOnly := false;
       end
    end;
  end;
end;

procedure TForm1.aDEdBetaChange(Sender: TObject);
begin
if aDEdLaengea.Text > '0then
  begin
  if aDEdAlpha.Text > '0then
    begin
    if aDEdBeta.Text > '0then
      begin
      aDEdGamma.ReadOnly := true;
      aDEdLaengeb.ReadOnly := true;
      aDEdLaengec.ReadOnly := true;
      end else
        begin
        aDEdGamma.ReadOnly := false;
        aDEdLaengeb.ReadOnly := false;
        aDEdLaengec.ReadOnly := false;
        end;
    end else
  if aDEdBeta.Text > '0then
    begin
    if aDEdGamma.Text > '0then
      begin
      aDEdAlpha.ReadOnly := true;
      aDEdLaengeb.ReadOnly := true;
      aDEdLaengec.ReadOnly := true;
      end else
        begin
        aDEdAlpha.ReadOnly := false;
        aDEdLaengeb.ReadOnly := false;
        aDEdLaengec.ReadOnly := false;
        end;
    if aDEdLaengeb.Text > '0then
      begin
      aDEdAlpha.ReadOnly := true;
      aDEdGamma.ReadOnly := true;
      aDEdLaengec.ReadOnly := true;
      end else
        begin
        aDEdAlpha.ReadOnly := false;
        aDEdGamma.ReadOnly := false;
        aDEdLaengec.ReadOnly := false;
        end;
    if aDEdLaengec.Text > '0then
      begin
      aDEdAlpha.ReadOnly := true;
      aDEdGamma.ReadOnly := true;
      aDEdLaengeb.ReadOnly := true;
      end else
        begin
        aDEdAlpha.ReadOnly := false;
        aDEdGamma.ReadOnly := false;
        aDEdLaengeb.ReadOnly := false;
        end
    end;
  end else

if aDEdLaengeb.Text > '0then
  begin
  if aDEdAlpha.Text > '0then
    begin
    if aDEdBeta.Text > '0then
      begin
      aDEdGamma.ReadOnly := true;
      aDEdLaengea.ReadOnly := true;
      aDEdLaengec.ReadOnly := true;
      end else
        begin
        aDEdGamma.ReadOnly := false;
        aDEdLaengea.ReadOnly := false;
        aDEdLaengec.ReadOnly := false;
        end;
    end else
  if aDEdBeta.Text > '0then
    begin
    if aDEdGamma.Text > '0then
      begin
      aDEdAlpha.ReadOnly := true;
      aDEdLaengea.ReadOnly := true;
      aDEdLaengec.ReadOnly := true;
      end else
         begin
          aDEdAlpha.ReadOnly := false;
         aDEdLaengea.ReadOnly := false;
         aDEdLaengec.ReadOnly := false;
          end;
    if aDEdLaengec.Text > '0then
      begin
      aDEdAlpha.ReadOnly := true;
      aDEdGamma.ReadOnly := true;
      aDEdLaengea.ReadOnly := true;
      end else
        begin
        aDEdAlpha.ReadOnly := false;
        aDEdGamma.ReadOnly := false;
        aDEdLaengea.ReadOnly := false;
        end
    end;
  end else

if aDEdLaengec.Text > '0then
  begin
  if aDEdAlpha.Text > '0then
    begin
    if aDEdBeta.Text > '0then
      begin
      aDEdGamma.ReadOnly := true;
      aDEdLaengea.ReadOnly := true;
      aDEdLaengeb.ReadOnly := true;
      end else
       begin
       aDEdGamma.ReadOnly := false;
       aDEdLaengea.ReadOnly := false;
       aDEdLaengeb.ReadOnly := false;
       end;
    end else
  if aDEdBeta.Text > '0then
    begin
      if aDEdGamma.Text > '0then
      begin
      aDEdAlpha.ReadOnly := true;
      aDEdLaengea.ReadOnly := true;
      aDEdLaengeb.ReadOnly := true;
      end else
        begin
        aDEdAlpha.ReadOnly := false;
        aDEdLaengea.ReadOnly := false;
        aDEdLaengeb.ReadOnly := false;
        end
    end;
  end;
end;

procedure TForm1.aDEdGammaChange(Sender: TObject);
begin
if aDEdLaengea.Text > '0then
  begin
  if aDEdAlpha.Text > '0then
    begin
    if aDEdGamma.Text > '0then
      begin
      aDEdBeta.ReadOnly := true;
      aDEdLaengeb.ReadOnly := true;
      aDEdLaengec.ReadOnly := true;
      end else
        begin
        aDEdBeta.ReadOnly := false;
        aDEdLaengeb.ReadOnly := false;
        aDEdLaengec.ReadOnly := false;
        end;
    end else
  if aDEdBeta.Text > '0then
    begin
    if aDEdGamma.Text > '0then
      begin
      aDEdAlpha.ReadOnly := true;
      aDEdLaengeb.ReadOnly := true;
      aDEdLaengec.ReadOnly := true;
      end else
        begin
        aDEdAlpha.ReadOnly := false;
        aDEdLaengeb.ReadOnly := false;
        aDEdLaengec.ReadOnly := false;
        end;
    end else
  if aDEdGamma.Text > '0then
    begin
    if aDEdLaengeb.Text > '0then
      begin
      aDEdAlpha.ReadOnly := true;
      aDEdBeta.ReadOnly := true;
      aDEdLaengec.ReadOnly := true;
      end else
        begin
        aDEdAlpha.ReadOnly := false;
        aDEdBeta.ReadOnly := false;
        aDEdLaengec.ReadOnly := false;
        end;
    if aDEdLaengec.Text > '0then
      begin
      aDEdAlpha.ReadOnly := true;
      aDEdBeta.ReadOnly := true;
      aDEdLaengeb.ReadOnly := true;
      end else
        begin
        aDEdAlpha.ReadOnly := false;
        aDEdBeta.ReadOnly := false;
        aDEdLaengeb.ReadOnly := false;
        end
    end;
  end else

if aDEdLaengeb.Text > '0then
  begin
  if aDEdAlpha.Text > '0then
    begin
    if aDEdGamma.Text > '0then
      begin
      aDEdBeta.ReadOnly := true;
      aDEdLaengea.ReadOnly := true;
      aDEdLaengec.ReadOnly := true;
      end else
        begin
        aDEdBeta.ReadOnly := false;
        aDEdLaengea.ReadOnly := false;
        aDEdLaengec.ReadOnly := false;
        end;
    end else
  if aDEdBeta.Text > '0then
    begin
    if aDEdGamma.Text > '0then
      begin
      aDEdAlpha.ReadOnly := true;
      aDEdLaengea.ReadOnly := true;
      aDEdLaengec.ReadOnly := true;
      end else
         begin
          aDEdAlpha.ReadOnly := false;
         aDEdLaengea.ReadOnly := false;
         aDEdLaengec.ReadOnly := false;
          end;
    end else
  if aDEdGamma.Text > '0then
    begin
    if aDEdLaengec.Text > '0then
      begin
      aDEdAlpha.ReadOnly := true;
      aDEdBeta.ReadOnly := true;
      aDEdLaengea.ReadOnly := true;
      end else
        begin
        aDEdAlpha.ReadOnly := false;
        aDEdBeta.ReadOnly := false;
        aDEdLaengea.ReadOnly := false;
        end
    end;
  end else

if aDEdLaengec.Text > '0then
  begin
  if aDEdAlpha.Text > '0then
    begin
    if aDEdGamma.Text > '0then
      begin
      aDEdBeta.ReadOnly := true;
      aDEdLaengea.ReadOnly := true;
      aDEdLaengeb.ReadOnly := true;
      end else
       begin
       aDEdBeta.ReadOnly := false;
       aDEdLaengea.ReadOnly := false;
       aDEdLaengeb.ReadOnly := false;
       end
    end else
  if aDEdBeta.Text > '0then
    begin
      if aDEdGamma.Text > '0then
      begin
      aDEdAlpha.ReadOnly := true;
      aDEdLaengea.ReadOnly := true;
      aDEdLaengeb.ReadOnly := true;
      end else
        begin
        aDEdAlpha.ReadOnly := false;
        aDEdLaengea.ReadOnly := false;
        aDEdLaengeb.ReadOnly := false;
        end
    end;
  end;
end;

procedure TForm1.aDEdLaengeaChange(Sender: TObject);
begin
if aDEdLaengea.Text > '0then
  begin
  if aDEdAlpha.Text > '0then
    begin
    if aDEdBeta.Text > '0then
      begin
      aDEdGamma.ReadOnly := true;
      aDEdLaengeb.ReadOnly := true;
      aDEdLaengec.ReadOnly := true;
      end else
        begin
        aDEdGamma.ReadOnly := false;
        aDEdLaengeb.ReadOnly := false;
        aDEdLaengec.ReadOnly := false;
        end;
    if aDEdGamma.Text > '0then
      begin
      aDEdBeta.ReadOnly := true;
      aDEdLaengeb.ReadOnly := true;
      aDEdLaengec.ReadOnly := true;
      end else
        begin
        aDEdBeta.ReadOnly := false;
        aDEdLaengeb.ReadOnly := false;
        aDEdLaengec.ReadOnly := false;
        end;
    if aDEdLaengeb.Text > '0then
      begin
      aDEdBeta.ReadOnly := true;
      aDEdGamma.ReadOnly := true;
      aDEdLaengec.ReadOnly := true;
      end else
        begin
        aDEdBeta.ReadOnly := false;
        aDEdGamma.ReadOnly := false;
        aDEdLaengec.ReadOnly := false;
        end;
    if aDEdLaengec.Text > '0then
      begin
      aDEdBeta.ReadOnly := true;
      aDEdGamma.ReadOnly := true;
      aDEdLaengeb.ReadOnly := true;
      end else
        begin
        aDEdBeta.ReadOnly := false;
        aDEdGamma.ReadOnly := false;
        aDEdLaengeb.ReadOnly := false;
        end
    end else
  if aDEdBeta.Text > '0then
    begin
    if aDEdGamma.Text > '0then
      begin
      aDEdAlpha.ReadOnly := true;
      aDEdLaengeb.ReadOnly := true;
      aDEdLaengec.ReadOnly := true;
      end else
        begin
        aDEdAlpha.ReadOnly := false;
        aDEdLaengeb.ReadOnly := false;
        aDEdLaengec.ReadOnly := false;
        end;
    if aDEdLaengeb.Text > '0then
      begin
      aDEdAlpha.ReadOnly := true;
      aDEdGamma.ReadOnly := true;
      aDEdLaengec.ReadOnly := true;
      end else
        begin
        aDEdAlpha.ReadOnly := false;
        aDEdGamma.ReadOnly := false;
        aDEdLaengec.ReadOnly := false;
        end;
    if aDEdLaengec.Text > '0then
      begin
      aDEdAlpha.ReadOnly := true;
      aDEdGamma.ReadOnly := true;
      aDEdLaengeb.ReadOnly := true;
      end else
        begin
        aDEdAlpha.ReadOnly := false;
        aDEdGamma.ReadOnly := false;
        aDEdLaengeb.ReadOnly := false;
        end
    end else
  if aDEdGamma.Text > '0then
    begin
    if aDEdLaengeb.Text > '0then
      begin
      aDEdAlpha.ReadOnly := true;
      aDEdBeta.ReadOnly := true;
      aDEdLaengec.ReadOnly := true;
      end else
        begin
        aDEdAlpha.ReadOnly := false;
        aDEdBeta.ReadOnly := false;
        aDEdLaengec.ReadOnly := false;
        end;
    if aDEdLaengec.Text > '0then
      begin
      aDEdAlpha.ReadOnly := true;
      aDEdBeta.ReadOnly := true;
      aDEdLaengeb.ReadOnly := true;
      end else
        begin
        aDEdAlpha.ReadOnly := false;
        aDEdBeta.ReadOnly := false;
        aDEdLaengeb.ReadOnly := false;
        end
    end;
  end;
end;

procedure TForm1.aDEdLaengebChange(Sender: TObject);
begin
if aDEdLaengea.Text > '0then
  begin
  if aDEdAlpha.Text > '0then
    begin
    if aDEdLaengeb.Text > '0then
      begin
      aDEdBeta.ReadOnly := true;
      aDEdGamma.ReadOnly := true;
      aDEdLaengec.ReadOnly := true;
      end else
        begin
        aDEdBeta.ReadOnly := false;
        aDEdGamma.ReadOnly := false;
        aDEdLaengec.ReadOnly := false;
        end;
    end else
  if aDEdBeta.Text > '0then
    begin
    if aDEdLaengeb.Text > '0then
      begin
      aDEdAlpha.ReadOnly := true;
      aDEdGamma.ReadOnly := true;
      aDEdLaengec.ReadOnly := true;
      end else
        begin
        aDEdAlpha.ReadOnly := false;
        aDEdGamma.ReadOnly := false;
        aDEdLaengec.ReadOnly := false;
        end;
    end else
  if aDEdGamma.Text > '0then
    begin
    if aDEdLaengeb.Text > '0then
      begin
      aDEdAlpha.ReadOnly := true;
      aDEdBeta.ReadOnly := true;
      aDEdLaengec.ReadOnly := true;
      end else
        begin
        aDEdAlpha.ReadOnly := false;
        aDEdBeta.ReadOnly := false;
        aDEdLaengec.ReadOnly := false;
        end;
    end else
  if aDEdLaengeb.Text > '0then
    begin
    if aDEdLaengec.Text > '0then
      begin
      aDEdAlpha.ReadOnly := true;
      aDEdBeta.ReadOnly := true;
      aDEdGamma.ReadOnly := true;
      end else
        begin
        aDEdAlpha.ReadOnly := false;
        aDEdBeta.ReadOnly := false;
        aDEdGamma.ReadOnly := false;
        end
    end;
  end else
  
if aDEdLaengeb.Text > '0then
  begin
  if aDEdAlpha.Text > '0then
    begin
    if aDEdBeta.Text > '0then
      begin
      aDEdGamma.ReadOnly := true;
      aDEdLaengea.ReadOnly := true;
      aDEdLaengec.ReadOnly := true;
      end else
        begin
        aDEdGamma.ReadOnly := false;
        aDEdLaengea.ReadOnly := false;
        aDEdLaengec.ReadOnly := false;
        end;
    if aDEdGamma.Text > '0then
      begin
      aDEdBeta.ReadOnly := true;
      aDEdLaengea.ReadOnly := true;
      aDEdLaengec.ReadOnly := true;
      end else
        begin
        aDEdBeta.ReadOnly := false;
        aDEdLaengea.ReadOnly := false;
        aDEdLaengec.ReadOnly := false;
        end;
    if aDEdLaengec.Text > '0then
      begin
      aDEdBeta.ReadOnly := true;
      aDEdGamma.ReadOnly := true;
      aDEdLaengea.ReadOnly := true;
      end else
        begin
        aDEdBeta.ReadOnly := false;
        aDEdGamma.ReadOnly := false;
        aDEdLaengea.ReadOnly := false;
        end
    end else
  if aDEdBeta.Text > '0then
    begin
    if aDEdGamma.Text > '0then
      begin
      aDEdAlpha.ReadOnly := true;
      aDEdLaengea.ReadOnly := true;
      aDEdLaengec.ReadOnly := true;
      end else
         begin
          aDEdAlpha.ReadOnly := false;
         aDEdLaengea.ReadOnly := false;
         aDEdLaengec.ReadOnly := false;
          end;
    if aDEdLaengec.Text > '0then
      begin
      aDEdAlpha.ReadOnly := true;
      aDEdGamma.ReadOnly := true;
      aDEdLaengea.ReadOnly := true;
      end else
        begin
        aDEdAlpha.ReadOnly := false;
        aDEdGamma.ReadOnly := false;
        aDEdLaengea.ReadOnly := false;
        end
    end else
  if aDEdGamma.Text > '0then
    begin
    if aDEdLaengec.Text > '0then
      begin
      aDEdAlpha.ReadOnly := true;
      aDEdBeta.ReadOnly := true;
      aDEdLaengea.ReadOnly := true;
      end else
        begin
        aDEdAlpha.ReadOnly := false;
        aDEdBeta.ReadOnly := false;
        aDEdLaengea.ReadOnly := false;
        end
    end;
  end;
end;

procedure TForm1.aDEdLaengecChange(Sender: TObject);
begin
if aDEdLaengea.Text > '0then
  begin
  if aDEdAlpha.Text > '0then
    begin
    if aDEdLaengec.Text > '0then
      begin
      aDEdBeta.ReadOnly := true;
      aDEdGamma.ReadOnly := true;
      aDEdLaengeb.ReadOnly := true;
      end else
        begin
        aDEdBeta.ReadOnly := false;
        aDEdGamma.ReadOnly := false;
        aDEdLaengeb.ReadOnly := false;
        end
    end else
  if aDEdBeta.Text > '0then
    begin
    if aDEdLaengec.Text > '0then
      begin
      aDEdAlpha.ReadOnly := true;
      aDEdGamma.ReadOnly := true;
      aDEdLaengeb.ReadOnly := true;
      end else
        begin
        aDEdAlpha.ReadOnly := false;
        aDEdGamma.ReadOnly := false;
        aDEdLaengeb.ReadOnly := false;
        end
    end else
  if aDEdGamma.Text > '0then
    begin
    if aDEdLaengec.Text > '0then
      begin
      aDEdAlpha.ReadOnly := true;
      aDEdBeta.ReadOnly := true;
      aDEdLaengeb.ReadOnly := true;
      end else
        begin
        aDEdAlpha.ReadOnly := false;
        aDEdBeta.ReadOnly := false;
        aDEdLaengeb.ReadOnly := false;
        end
    end else
  if aDEdLaengeb.Text > '0then
    begin
    if aDEdLaengec.Text > '0then
      begin
      aDEdAlpha.ReadOnly := true;
      aDEdBeta.ReadOnly := true;
      aDEdGamma.ReadOnly := true;
      end else
        begin
        aDEdAlpha.ReadOnly := false;
        aDEdBeta.ReadOnly := false;
        aDEdGamma.ReadOnly := false;
        end
    end;
  end else

if aDEdLaengec.Text > '0then
  begin
  if aDEdAlpha.Text > '0then
    begin
    if aDEdBeta.Text > '0then
      begin
      aDEdGamma.ReadOnly := true;
      aDEdLaengea.ReadOnly := true;
      aDEdLaengeb.ReadOnly := true;
      end else
       begin
       aDEdGamma.ReadOnly := false;
       aDEdLaengea.ReadOnly := false;
       aDEdLaengeb.ReadOnly := false;
       end;
    if aDEdGamma.Text > '0then
      begin
      aDEdBeta.ReadOnly := true;
      aDEdLaengea.ReadOnly := true;
      aDEdLaengeb.ReadOnly := true;
      end else
       begin
       aDEdBeta.ReadOnly := false;
       aDEdLaengea.ReadOnly := false;
       aDEdLaengeb.ReadOnly := false;
       end
    end else
  if aDEdBeta.Text > '0then
    begin
      if aDEdGamma.Text > '0then
      begin
      aDEdAlpha.ReadOnly := true;
      aDEdLaengea.ReadOnly := true;
      aDEdLaengeb.ReadOnly := true;
      end else
        begin
        aDEdAlpha.ReadOnly := false;
        aDEdLaengea.ReadOnly := false;
        aDEdLaengeb.ReadOnly := false;
        end
    end;
  end;
end;

end.
InfoBox Formular
Delphi-Quellcode:
unit UnitInfoBox;

interface

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

type
  TForm2 = class(TForm)
    Panel1: TPanel;
    ProgramIcon: TImage;
    ProductName: TLabel;
    Version: TLabel;
    Copyright: TLabel;
    Comments: TLabel;
    OKButton: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure OKButtonClick(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

uses UnitBerechnen;

{$R *.dfm}

procedure TForm2.FormCreate(Sender: TObject);
var
  formregion, beakregion: HRGN;
  beak: Array [0..2] of TPoint;
begin
  inherited;
  formregion := CreateRoundRectRgn(
                  0, 50, clientwidth, clientheight,
                  40, 40 );
  beak[0] := Point( 50, 50 );
  beak[1] := Point( 55, 0 );
  beak[2] := Point( 80, 50 );
  beakregion := CreatePolygonRgn( beak, 3, WINDING );
  CombineRgn( formregion, formregion, beakregion, RGN_OR );

  DeleteObject( beakregion );
  SetWindowRgn( handle, formregion, true );

  Form2.Left := Form1.Left +145;
  Form2.Top := Form1.Top +45;
end;

procedure TForm2.FormPaint(Sender: TObject);
var
  temprgn: HRGN;
begin
  inherited;
  With Canvas.Brush Do Begin
    Color := clBlack;
    Style := bsSolid;
  End;
  temprgn := CreateRectRgn(0,0,1,1);
  GetWindowRgn( Handle, temprgn );
  FrameRgn( Canvas.Handle, temprgn,
            Canvas.Brush.handle, 1, 1 );
  DeleteObject( temprgn );
end;

procedure TForm2.OKButtonClick(Sender: TObject);
begin
  inherited;
close
end;

end.
Danke schon mal
Grüße Anoymouserver
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Zugriffsverletzung bei Adresse 0045976B ...

  Alt 19. Aug 2012, 01:21
Und in welcher Zeile taucht der Fehler auf?

btw. war ne ganz schöne Tipp/Kopierarbeit

Ab dem nächsten Projekt solltest du dich mit DRY, KISS und der Codeformatierung beschäftigen
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.157 Beiträge
 
Delphi 12 Athens
 
#3

AW: Zugriffsverletzung bei Adresse 0045976B ...

  Alt 19. Aug 2012, 01:25
Es wäre natürlich praktisch gewesen, wenn man nur die Codezeilen postet, welche einem der Debugger als vermutliche Fehlerstelle anzeigt.
Aber bei ganzen Dateien, da macht es sich als Dateianhang bestimmt nicht schlecht.

Zitat:
Lesen von Adresse 00000000
Adresse $000000** = nil + eventuelles Offset

Du willst also irgendwo auf was zugreifen, was nicht "existiert", meißt ein Objekt oder Pointer, welches auf NIL steht.

Was du falsch machst:
Ich empfehle ein Tutorial zum Thema Debugging.

Haltepunkt(e) an den Anfang deiner Methoden setzen, welche zu dem Zeitpunkt ausgeführt werden und dann so lange mit F7, bzw. F8 weiter, bis es knallt und nebenbei immer fleißig auf die Werte der Variablen schauen (ddas NIL wird sich da bestimmt nicht übersehen lassen).
Wenn du die Codezeile gefunden hast, wo es knallt und du keine Variablen mehr ansehn kannst, dann Haltepunkt auf die Zeile, das Programm neu starten und wenn's da anhält, dann die Vablen ansehn und schon hast du den Fehler.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (19. Aug 2012 um 01:28 Uhr)
  Mit Zitat antworten Zitat
anoymouserver
(Gast)

n/a Beiträge
 
#4

AW: Zugriffsverletzung bei Adresse 0045976B ...

  Alt 19. Aug 2012, 01:29
Und in welcher Zeile taucht der Fehler auf?
nach der Meldung ist immer diese Zeile markiert:

Form2.ShowModal; {Infobox öffnen} wenn du mir zur Codeformatierung gute Tipps geben kannst bin ich immer dafür offen :D (wie gesagt ist mein erstes Programm)
  Mit Zitat antworten Zitat
anoymouserver
(Gast)

n/a Beiträge
 
#5

AW: Zugriffsverletzung bei Adresse 0045976B ...

  Alt 19. Aug 2012, 01:31
naja das problem ist ich habe den Debugger laufen lassen aber er sag nirgenwo 'Fehler'
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.157 Beiträge
 
Delphi 12 Athens
 
#6

AW: Zugriffsverletzung bei Adresse 0045976B ...

  Alt 19. Aug 2012, 01:33
Tja, wie gesagt.
Haltepnkt drauf, Mauszeger über "Form2" halten und staunen ... da wird dann doch nicht etwa NIL angezeigt?

btw. war ne ganz schöne Tipp/Kopierarbeit

Ab dem nächsten Projekt solltest du dich mit DRY, KISS und der Codeformatierung beschäftigen
Was er damit meint ist, daß sich Methoden wie aDEdLaengecChange, locker in nur kurzen 3 Zeilen Quellcode schreiben lassen, falls man sich nicht so viel Arbeit machen will.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Zugriffsverletzung bei Adresse 0045976B ...

  Alt 19. Aug 2012, 01:34
Ok, das bedeutet, dass es noch keine Instanz für die Form gibt

Die Form2 hast du aus der Liste der automatisch zu erstellenden Formulare entfernt.
Das ist schon soweit ok, aber dann musst du dich auch um die Erzeugug einer Instanz kümmern.

Für so eine billige Form-ShowModal Instanz kann man folgendes benutzen:
Delphi-Quellcode:
with TForm2.Create do
  try
    ShowModal;
  finally
    Free;
  end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.157 Beiträge
 
Delphi 12 Athens
 
#8

AW: Zugriffsverletzung bei Adresse 0045976B ...

  Alt 19. Aug 2012, 01:35
naja das problem ist ich habe den Debugger laufen lassen aber er sag nirgenwo 'Fehler'
Komisch, ich denke er sagt dir daß dort ein Fehler ist?

Zitat:
Meldung: 'Zugriffsverletzung bei Adresse 0045976B in Modul 'ProjektBerechnen.exe'. Lesen von Adresse 00000000'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Zugriffsverletzung bei Adresse 0045976B ...

  Alt 19. Aug 2012, 01:37
naja das problem ist ich habe den Debugger laufen lassen aber er sag nirgenwo 'Fehler'
Na logo sagt er das, denn
Und in welcher Zeile taucht der Fehler auf?
nach der Meldung ist immer diese Zeile markiert:

Form2.ShowModal; {Infobox öffnen}
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
anoymouserver
(Gast)

n/a Beiträge
 
#10

AW: Zugriffsverletzung bei Adresse 0045976B ...

  Alt 19. Aug 2012, 01:41
Für so eine billige Form-ShowModal Instanz kann man folgendes benutzen:
Delphi-Quellcode:
with TForm2.Create do
  try
    ShowModal;
  finally
    Free;
  end;
wenn ich das übernehme kommt die Meldung 'Nicht genügend wirkliche Parameter'?




Ab dem nächsten Projekt solltest du dich mit DRY, KISS und der Codeformatierung beschäftigen
Was er damit meint ist, daß sich Methoden wie aDEdLaengecChange, locker in nur kurzen 3 Zeilen Quellcode schreiben lassen, falls man sich nicht so viel Arbeit machen will. [/QUOTE]
das dacht ich mir aber ich habe bis jetzt leider noch keine Ahnung wie ... aber Tipps nehm ich gerne an
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz