1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156:
| unit Zeichenfenster;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, ExtCtrls, StdCtrls, ComCtrls, IniFiles, umehrkoerper, uplanet;
type TForm1 = class(TForm) PaintBox1: TPaintBox; MainMenu1: TMainMenu; Datei1: TMenuItem; N1: TMenuItem; ber1: TMenuItem; Hilfe1: TMenuItem; Datenladen1: TMenuItem; Datenspeichern1: TMenuItem; Optionen1: TMenuItem; Farbe1: TMenuItem; Neu1: TMenuItem; Button1: TButton; Button3: TButton; Beenden1: TMenuItem; Ansicht1: TMenuItem; Planeten1: TMenuItem; Koordinatensystem1: TMenuItem; CheckBox1: TCheckBox; Button4: TButton; geschwindigkeit: TTrackBar; UniversaleKonstanten1: TMenuItem; OpenDialog1: TOpenDialog; SaveDialog1: TSaveDialog; Label1: TLabel; Label2: TLabel; Edit1: TEdit; Abbildspeichern1: TMenuItem; Button2: TButton; procedure geschwindigkeitChange(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Datenspeichern1Click(Sender: TObject); procedure Datenladen1Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure UniversaleKonstanten1Click(Sender: TObject); procedure Farbe1Click(Sender: TObject); procedure Neu1Click(Sender: TObject); procedure Beenden1Click(Sender: TObject); procedure zeichnen; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure achsenzeichnen; procedure PaintBox1Paint(Sender: TObject); procedure rasterzeichnen; procedure Abbildspeichern1Click(Sender: TObject); private bmp:tbitmap; ini:tinifile; public resetet,gestartet,pausiert,achsen,raster:boolean; mk:tmehrkoerper; anzahl,pause:integer; massstab,xmax,ymax,g,smoothing,zeitschritt:double; alleplaneten,allespuren,rasterfarbe,achsenfarbe:tcolor; procedure destruktor; end;
var Form1: TForm1;
implementation
uses start, planetendaten, koord, konstanten;
{$R *.dfm}
[...]
procedure TForm1.Datenladen1Click(Sender: TObject); type zahlenarray = array of extended; boolarray = array of boolean; var vxarray,vyarray,xarray,yarray,massearray:zahlenarray; festarray:boolarray; i:integer; begin opendialog1.Title:='Startwerte laden :)'; opendialog1.InitialDir:=GetCurrentDir; opendialog1.Filter:='Ini-Datei|*.ini'; opendialog1.DefaultExt:='ini'; opendialog1.FilterIndex:=1; if opendialog1.Execute then ini:=tinifile.create(opendialog1.filename); try begin g:=ini.readfloat('Allgemeine Zahlen','Gravitationskonstante',6.67428e-11); zeitschritt:=ini.readFloat('Allgemeine Zahlen','Zeitschritt',0.01); smoothing:=ini.readfloat('Allgemeine Zahlen','Smoothing',0.1); anzahl:=ini.readInteger('Zahl der Planeten', 'Anzahl', mk.gethigh+1); setlength(vxarray,anzahl); setlength(vyarray,anzahl); setlength(xarray,anzahl); setlength(yarray,anzahl); setlength(massearray,anzahl); setlength(festarray,anzahl); for i:=0 to mk.gethigh do begin vxarray[i]:=ini.readfloat('Startwerte: Planet '+inttostr(i),'Vxstart',mk.getplanet(i).getvstart.getx); vyarray[i]:=ini.readfloat('Startwerte: Planet '+inttostr(i),'Vystart',mk.getplanet(i).getvstart.gety); xarray[i]:=ini.readfloat('Startwerte: Planet '+inttostr(i),'Ortxstart',mk.getplanet(i).getortstart.getx); yarray[i]:=ini.readfloat('Startwerte: Planet '+inttostr(i),'Ortystart',mk.getplanet(i).getortstart.gety); massearray[i]:=ini.readfloat('Startwerte: Planet '+inttostr(i),'Masse',mk.getplanet(i).getmasse); festarray[i]:=ini.readbool('Startwerte: Planet '+inttostr(i),'Sitzt fest?',mk.getplanet(i).planetfest); end; massstab:=ini.readFloat('Einstellungen: Allgemein','Massstab',1); if massstab>1 then begin form5.anzahlaufruf:=true; form5.Visible:=true; end; pause:=ini.readinteger('Einstellungen: Allgemein','Pause',30); achsen:=ini.readbool('Einstellungen: Farben','Raster?',true); achsenfarbe:=stringtocolor(ini.readstring('Einstellungen: Farben','Achsenfarbe','clblack')); raster:=ini.readbool('Einstellungen: Farben','Raster?',raster); rasterfarbe:=stringtocolor(ini.readstring('Einstellungen: Farben','Rasterfarbe','clblack')); checkbox1.checked:=ini.readbool('Einstellungen','Planetenspuren?',true); allespuren:=stringtocolor(ini.readString('Einstellungen: Farben','Spurenfarbe','clblack')); alleplaneten:=stringtocolor(ini.readString('Einstellungen: Farben','Planetenfarbe','clblack')); end; mk:=TMehrkoerper.Create(vxarray, vyarray, xarray, yarray, massearray, festarray); form2.farbenspur:=allespuren; form2.planetfarbe:=alleplaneten; form2.achsenfarbe:=achsenfarbe; form2.rasterfarbe:=rasterfarbe; form6.g:=g; form6.smoothing:=smoothing; form6.zeitschritt:=zeitschritt; mk.setg(g); mk.setzeitschritt(zeitschritt); mk.setsmoothing(smoothing); form6.edit1.text:=floattostr(g); form6.edit2.text:=floattostr(zeitschritt); form6.edit3.text:=floattostr(smoothing); setlength(vxarray,0); setlength(vyarray,0); setlength(xarray,0); setlength(yarray,0); setlength(massearray,0); setlength(festarray,0); finally ini.free; end; end;
[...]
end. |