From f91fa17d9d182f82c2984814403e8d97da9c8604 Mon Sep 17 00:00:00 2001 From: karlmichaelschindler <karlmichaelschindler@7e267752-d5d8-41c0-93cd-a7fa012602f9> Date: Mon, 21 Sep 2020 17:00:57 +0000 Subject: [PATCH] reading eelsin works. git-svn-id: svn+ssh://michael-ep3.physik.uni-halle.de/Users/Shared/EELS2@105 7e267752-d5d8-41c0-93cd-a7fa012602f9 --- source/Lazarus-GUI/EELS.lps | 173 ++++++++++++++----------------- source/Lazarus-GUI/UDiagramm.lfm | 2 +- source/Lazarus-GUI/UFileIO.pas | 51 ++++++--- source/Lazarus-GUI/UMainForm.lfm | 2 +- source/Lazarus-GUI/UMainForm.pas | 172 ++++++++++++++++++++++++++++-- 5 files changed, 284 insertions(+), 116 deletions(-) diff --git a/source/Lazarus-GUI/EELS.lps b/source/Lazarus-GUI/EELS.lps index 60970f6..619fd13 100644 --- a/source/Lazarus-GUI/EELS.lps +++ b/source/Lazarus-GUI/EELS.lps @@ -2,11 +2,11 @@ <CONFIG> <ProjectSession> <Version Value="11"/> - <Units Count="12"> + <Units Count="10"> <Unit0> <Filename Value="EELS.lpr"/> <IsPartOfProject Value="True"/> - <CursorPos X="41" Y="21"/> + <CursorPos X="14" Y="18"/> <UsageCount Value="202"/> <Loaded Value="True"/> </Unit0> @@ -16,9 +16,10 @@ <ComponentName Value="MainForm"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> + <IsVisibleTab Value="True"/> <EditorIndex Value="1"/> - <TopLine Value="351"/> - <CursorPos X="64" Y="335"/> + <TopLine Value="269"/> + <CursorPos Y="397"/> <UsageCount Value="202"/> <Loaded Value="True"/> <LoadedDesigner Value="True"/> @@ -26,19 +27,18 @@ <Unit2> <Filename Value="UEELSBoson.pas"/> <IsPartOfProject Value="True"/> - <EditorIndex Value="3"/> - <TopLine Value="45"/> + <EditorIndex Value="4"/> <CursorPos Y="74"/> - <UsageCount Value="173"/> + <UsageCount Value="255"/> <Loaded Value="True"/> </Unit2> <Unit3> <Filename Value="UFileIO.pas"/> <IsPartOfProject Value="True"/> - <EditorIndex Value="4"/> - <TopLine Value="61"/> - <CursorPos X="32" Y="69"/> - <UsageCount Value="121"/> + <EditorIndex Value="3"/> + <TopLine Value="104"/> + <CursorPos X="40" Y="86"/> + <UsageCount Value="203"/> <Loaded Value="True"/> </Unit3> <Unit4> @@ -46,7 +46,7 @@ <IsPartOfProject Value="True"/> <EditorIndex Value="5"/> <CursorPos Y="189"/> - <UsageCount Value="48"/> + <UsageCount Value="134"/> <Loaded Value="True"/> <DefaultSyntaxHighlighter Value="None"/> </Unit4> @@ -55,7 +55,7 @@ <IsPartOfProject Value="True"/> <EditorIndex Value="6"/> <CursorPos X="91"/> - <UsageCount Value="53"/> + <UsageCount Value="139"/> <Loaded Value="True"/> <DefaultSyntaxHighlighter Value="None"/> </Unit5> @@ -65,172 +65,155 @@ <ComponentName Value="DiagrammForm"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> - <IsVisibleTab Value="True"/> <EditorIndex Value="2"/> - <TopLine Value="25"/> - <CursorPos X="33" Y="45"/> - <UsageCount Value="22"/> + <CursorPos Y="4"/> + <UsageCount Value="108"/> <Loaded Value="True"/> <LoadedDesigner Value="True"/> </Unit6> <Unit7> - <Filename Value="/opt/sw/share/lazarus/lcl/grids.pas"/> - <UnitName Value="Grids"/> + <Filename Value="/opt/sw/share/lazarus/lcl/include/control.inc"/> <EditorIndex Value="-1"/> - <TopLine Value="5257"/> - <CursorPos Y="5270"/> - <UsageCount Value="2"/> + <TopLine Value="3534"/> + <CursorPos Y="3554"/> + <UsageCount Value="10"/> </Unit7> <Unit8> - <Filename Value="/opt/sw/share/lazarus/lcl/include/wincontrol.inc"/> + <Filename Value="/opt/sw/share/lazarus/lcl/include/menuitem.inc"/> <EditorIndex Value="-1"/> - <TopLine Value="8371"/> - <CursorPos Y="8387"/> - <UsageCount Value="1"/> + <TopLine Value="72"/> + <CursorPos Y="85"/> + <UsageCount Value="2"/> </Unit8> <Unit9> - <Filename Value="/opt/sw/share/lazarus/lcl/include/customedit.inc"/> + <Filename Value="/opt/sw/share/lazarus/lcl/grids.pas"/> + <UnitName Value="Grids"/> <EditorIndex Value="-1"/> - <TopLine Value="656"/> - <CursorPos Y="672"/> - <UsageCount Value="1"/> + <TopLine Value="2525"/> + <CursorPos Y="2539"/> + <UsageCount Value="10"/> </Unit9> - <Unit10> - <Filename Value="/opt/sw/share/lazarus/lcl/forms.pp"/> - <UnitName Value="Forms"/> - <EditorIndex Value="-1"/> - <TopLine Value="799"/> - <CursorPos X="3" Y="750"/> - <UsageCount Value="2"/> - </Unit10> - <Unit11> - <Filename Value="/opt/sw/share/lazarus/lcl/include/control.inc"/> - <EditorIndex Value="-1"/> - <TopLine Value="3534"/> - <CursorPos Y="3548"/> - <UsageCount Value="4"/> - </Unit11> </Units> <JumpHistory Count="30" HistoryIndex="29"> <Position1> <Filename Value="UMainForm.pas"/> - <Caret Line="478" TopLine="465"/> + <Caret Line="344" Column="19" TopLine="322"/> </Position1> <Position2> <Filename Value="UMainForm.pas"/> - <Caret Line="481" TopLine="465"/> + <Caret Line="345" Column="44" TopLine="323"/> </Position2> <Position3> <Filename Value="UMainForm.pas"/> - <Caret Line="491" Column="22" TopLine="473"/> + <Caret Line="347" Column="19" TopLine="325"/> </Position3> <Position4> <Filename Value="UMainForm.pas"/> - <Caret Line="494" TopLine="473"/> + <Caret Line="348" Column="19" TopLine="326"/> </Position4> <Position5> <Filename Value="UMainForm.pas"/> - <Caret Line="493" TopLine="473"/> + <Caret Line="349" Column="19" TopLine="327"/> </Position5> <Position6> - <Filename Value="../f90/doboson.f90"/> - <Caret Line="50" TopLine="36"/> + <Filename Value="UMainForm.pas"/> + <Caret Line="350" Column="19" TopLine="328"/> </Position6> <Position7> - <Filename Value="../f90/doboson.f90"/> - <Caret Line="112" TopLine="98"/> + <Filename Value="UMainForm.pas"/> + <Caret Line="351" Column="56" TopLine="329"/> </Position7> <Position8> - <Filename Value="../f90/doboson.f90"/> - <Caret Line="113" TopLine="98"/> + <Filename Value="UMainForm.pas"/> + <Caret Line="352" Column="19" TopLine="330"/> </Position8> <Position9> - <Filename Value="../f90/doboson.f90"/> - <Caret Line="115" TopLine="98"/> + <Filename Value="UMainForm.pas"/> + <Caret Line="353" Column="19" TopLine="331"/> </Position9> <Position10> - <Filename Value="../f90/doboson.f90"/> - <Caret Line="149" Column="29" TopLine="142"/> + <Filename Value="UMainForm.pas"/> + <Caret Line="354" Column="49" TopLine="332"/> </Position10> <Position11> - <Filename Value="../f90/doboson.f90"/> - <Caret Column="90"/> + <Filename Value="UMainForm.pas"/> + <Caret Line="355" Column="19" TopLine="333"/> </Position11> <Position12> - <Filename Value="../f90/doboson.f90"/> - <Caret Line="22" Column="9"/> + <Filename Value="UMainForm.pas"/> + <Caret Line="356" Column="21" TopLine="334"/> </Position12> <Position13> - <Filename Value="../f90/doboson.f90"/> - <Caret Line="35" Column="60" TopLine="11"/> + <Filename Value="UMainForm.pas"/> + <Caret Line="358" Column="19" TopLine="336"/> </Position13> <Position14> - <Filename Value="../f90/doboson.f90"/> - <Caret Line="36" Column="34" TopLine="12"/> + <Filename Value="UMainForm.pas"/> + <Caret Line="359" Column="19" TopLine="337"/> </Position14> <Position15> - <Filename Value="../f90/doboson.f90"/> - <Caret Line="236" Column="7" TopLine="212"/> + <Filename Value="UMainForm.pas"/> + <Caret Line="360" Column="19" TopLine="338"/> </Position15> <Position16> - <Filename Value="../f90/doboson.f90"/> - <Caret Line="247" Column="18" TopLine="223"/> + <Filename Value="UMainForm.pas"/> + <Caret Line="361" Column="19" TopLine="339"/> </Position16> <Position17> - <Filename Value="../f90/doboson.f90"/> - <Caret Line="248" Column="16" TopLine="224"/> + <Filename Value="UMainForm.pas"/> + <Caret Line="362" Column="59" TopLine="340"/> </Position17> <Position18> - <Filename Value="../f90/doboson.f90"/> - <Caret Line="249" Column="16" TopLine="225"/> + <Filename Value="UMainForm.pas"/> + <Caret Line="363" Column="19" TopLine="341"/> </Position18> <Position19> - <Filename Value="../f90/doboson.f90"/> - <Caret Line="263" Column="22" TopLine="239"/> + <Filename Value="UMainForm.pas"/> + <Caret Line="364" Column="19" TopLine="342"/> </Position19> <Position20> - <Filename Value="../f90/doboson.f90"/> - <Caret Line="264" Column="20" TopLine="240"/> + <Filename Value="UMainForm.pas"/> + <Caret Line="365" Column="52" TopLine="343"/> </Position20> <Position21> <Filename Value="UMainForm.pas"/> - <Caret Line="493" Column="14" TopLine="468"/> + <Caret Line="366" Column="19" TopLine="344"/> </Position21> <Position22> <Filename Value="UMainForm.pas"/> - <Caret Line="478" TopLine="468"/> + <Caret Line="255" TopLine="255"/> </Position22> <Position23> <Filename Value="UMainForm.pas"/> - <Caret Line="475" Column="34" TopLine="470"/> + <Caret Line="345" Column="89" TopLine="333"/> </Position23> <Position24> <Filename Value="UDiagramm.pas"/> - <Caret Line="19" Column="30"/> + <Caret Line="4"/> </Position24> <Position25> - <Filename Value="UDiagramm.pas"/> - <Caret Line="24" Column="30"/> + <Filename Value="UMainForm.pas"/> + <Caret Line="384" Column="43" TopLine="374"/> </Position25> <Position26> <Filename Value="UMainForm.pas"/> - <Caret Line="496" Column="31" TopLine="472"/> + <Caret Line="253" TopLine="233"/> </Position26> <Position27> - <Filename Value="UDiagramm.pas"/> - <Caret Line="34" Column="33" TopLine="10"/> + <Filename Value="UFileIO.pas"/> + <Caret Line="86" Column="40" TopLine="81"/> </Position27> <Position28> - <Filename Value="UDiagramm.pas"/> - <Caret Line="9" Column="23" TopLine="9"/> + <Filename Value="UMainForm.pas"/> + <Caret Line="391" TopLine="312"/> </Position28> <Position29> - <Filename Value="UDiagramm.pas"/> - <Caret Line="46" Column="28" TopLine="22"/> + <Filename Value="UMainForm.pas"/> + <Caret Line="264" Column="53" TopLine="251"/> </Position29> <Position30> - <Filename Value="UDiagramm.pas"/> - <Caret Line="53" Column="28" TopLine="25"/> + <Filename Value="UMainForm.pas"/> + <Caret Line="253" Column="57" TopLine="251"/> </Position30> </JumpHistory> <RunParams> diff --git a/source/Lazarus-GUI/UDiagramm.lfm b/source/Lazarus-GUI/UDiagramm.lfm index e4b5dea..b6d4164 100644 --- a/source/Lazarus-GUI/UDiagramm.lfm +++ b/source/Lazarus-GUI/UDiagramm.lfm @@ -1,7 +1,7 @@ object DiagrammForm: TDiagrammForm Left = 384 Height = 532 - Top = 134 + Top = 414 Width = 662 Caption = 'DiagrammForm' ClientHeight = 532 diff --git a/source/Lazarus-GUI/UFileIO.pas b/source/Lazarus-GUI/UFileIO.pas index b2c1810..e8a61b1 100644 --- a/source/Lazarus-GUI/UFileIO.pas +++ b/source/Lazarus-GUI/UFileIO.pas @@ -5,12 +5,14 @@ unit UFileIO; interface uses - Classes, SysUtils, + Classes, SysUtils, Dialogs, UEELSBoson; type Tdoublearray = array of double; Tintegerarray = array of integer; + Tstringarray = array of string; + Toscarray = array of Fosc_array; procedure read_eelsin( var ImpactEnergy: double; @@ -25,11 +27,11 @@ procedure read_eelsin( var NumberOfLayers: integer; var NumberOfEpsilons: integer; var NumberOfPeriodic: integer; - var LayerName: array of string; + var LayerName: Tstringarray; var Thickness: Tdoublearray; var Epsilon: Tdoublearray; var NumberOfOscillators: Tintegerarray; - var Oscillator: array of Fosc_array + var Oscillator: Toscarray ); procedure write_eelsin; procedure read_bosin; @@ -50,17 +52,26 @@ procedure read_eelsin( var NumberOfLayers: integer; var NumberOfEpsilons: integer; var NumberOfPeriodic: integer; - var LayerName: array of string; + var LayerName: Tstringarray; var Thickness: Tdoublearray; var Epsilon: Tdoublearray; var NumberOfOscillators: Tintegerarray; - var Oscillator: array of Fosc_array + var Oscillator: Toscarray ); var eelsin: text; - i, j: integer; + i, j, index, Oscillator_length, here: integer; + FileOpenDialog: TOpenDialog; + line: string; begin - assign(eelsin, 'eelsin'); + FileOpenDialog := TOpenDialog.Create(nil); + FileOpenDialog.Options := [ofFileMustExist]; + FileOpenDialog.Title := 'Select eelsin file:'; + if not FileOpenDialog.Execute then + ShowMessage('Open file was cancelled') + else + begin + assign(eelsin, FileOpenDialog.FileName); reset (eelsin); readln(eelsin, ImpactEnergy); readln(eelsin, IncidenceAngle); @@ -72,18 +83,34 @@ begin readln(eelsin, Comment1); readln(eelsin, Comment2); readln(eelsin, NumberOfLayers, NumberOfPeriodic); -// setlength(LayerName, NumberOfLayers); + setlength(LayerName, NumberOfLayers); setlength(Thickness, NumberOfLayers); setlength(Epsilon, NumberOfLayers); + setlength(NumberOfOscillators, NumberOfLayers); + index := 0; + Oscillator_length := 0; for i := 0 to NumberOfLayers - 1 do begin - readln(eelsin, LayerName[i], Thickness[i]); + readln(eelsin, line); + LayerName[i] := copy(line,0,10); + line := copy(line,10, 20); + // replace D for double precision with E + here := pos('D', line); + if here <> 0 then + line[here] := 'E'; + TryStrToFloat(line, Thickness[i]); readln(eelsin, Epsilon[i], NumberOfOscillators[i]); -// setlength(Oscillator, NumberOfLayers, NumberOfOscillators); - for j := 0 to NumberOfOscillators[i] - 1 do - readln(eelsin, Oscillator[i][1], Oscillator[i][2], Oscillator[i][3]); + Oscillator_length := Oscillator_length + NumberOfOscillators[i]; + setlength(Oscillator, Oscillator_length); + for j := 1 to NumberOfOscillators[i] do + begin + readln(eelsin, Oscillator[index][1], Oscillator[index][2], Oscillator[index][3]); + inc(index); + end; end; close(eelsin); + end; + FileOpenDialog.Destroy; end; procedure write_eelsin; diff --git a/source/Lazarus-GUI/UMainForm.lfm b/source/Lazarus-GUI/UMainForm.lfm index bed087f..2198a69 100644 --- a/source/Lazarus-GUI/UMainForm.lfm +++ b/source/Lazarus-GUI/UMainForm.lfm @@ -1,7 +1,7 @@ object MainForm: TMainForm Left = 314 Height = 755 - Top = 23 + Top = 303 Width = 731 Caption = 'EELS' ClientHeight = 755 diff --git a/source/Lazarus-GUI/UMainForm.pas b/source/Lazarus-GUI/UMainForm.pas index 0d2d16b..d8563c1 100644 --- a/source/Lazarus-GUI/UMainForm.pas +++ b/source/Lazarus-GUI/UMainForm.pas @@ -229,11 +229,171 @@ begin end; procedure TMainForm.EELSImportMenuItemClick(Sender: TObject); +var + i, j, index: integer; begin -// read_eelsin(ImpactEnergy, IncidenceAngle, AngularAperturePhiA, AngularAperturePhiB, -// IntervalWMin, IntervalWMax, IntervalWDelta, Comment1, Comment2, -// NumberOfLayers, NumberOfEpsilons, NumberOfPeriodic, LayerName, Thickness, -// Epsilon, NumberOfOscillators, Oscillator); + read_eelsin(ImpactEnergy, IncidenceAngle, AngularAperturePhiA, AngularAperturePhiB, + IntervalWMin, IntervalWMax, IntervalWDelta, Comment1, Comment2, + NumberOfLayers, NumberOfEpsilons, NumberOfPeriodic, LayerName, Thickness, + Epsilon, NumberOfOscillators, Oscillator); + + ImpactEnergyEdit.Text := FormatFloat('0.00', ImpactEnergy); + IncidenceAngleEdit.Text := FormatFloat('0.00', IncidenceAngle); + AngularAperturePhiAEdit.Text := FormatFloat('0.00', AngularAperturePhiA); + AngularAperturePhiBEdit.Text := FormatFloat('0.00', AngularAperturePhiB); + IntervalWMinEdit.Text := FormatFloat('0.00', IntervalWMin); + IntervalWMaxEdit.Text := FormatFloat('0.00', IntervalWMax); + IntervalWDeltaEdit.Text := FormatFloat('0.00', IntervalWDelta); + Comment1Edit.Text := Comment1; + Comment2Edit.Text := Comment2; +// EELS part 2 + if length(Layergroup) > NumberOfLayers then + begin + for i := NumberOfLayers to length(Layergroup) - 1 do + begin + Layergroup[i].NameLabel.Destroy; + Layergroup[i].NameEdit.Destroy; + Layergroup[i].ThicknessLabel.Destroy; + Layergroup[i].ThicknessEdit.Destroy; + Layergroup[i].EpsilonLabel.Destroy; + Layergroup[i].EpsilonEdit.Destroy; + Layergroup[i].OsciLabel.Destroy; + Layergroup[i].OsciStringGrid.Destroy; + Layergroup[i].AddOscillatorButton.Destroy; + Layergroup[i].RemoveOscillatorButton.Destroy; + end; + setlength(Layergroup, NumberOfLayers); + end + else if length(Layergroup) < NumberOfLayers then + begin + setlength(LayerName, NumberOfLayers); + setlength(Thickness, NumberOfLayers); + setlength(Epsilon, NumberOfLayers); + setlength(NumberOfOscillators, NumberOfLayers); + i := length(Layergroup); + repeat + setlength(LayerGroup, i + 1); + Layergroup[i].NameLabel := TLabel.Create(self); + Layergroup[i].NameLabel.Parent := self; + Layergroup[i].NameLabel.Left := 320; + Layergroup[i].NameLabel.Height := 16; + Layergroup[i].NameLabel.Top := 62 + (i) * 100; + Layergroup[i].NameLabel.Width := 74; + Layergroup[i].NameLabel.Caption := 'Layer name:'; + + Layergroup[i].NameEdit := TEdit.Create(self); + Layergroup[i].NameEdit.Parent := self; + Layergroup[i].NameEdit.Left := 400; + Layergroup[i].NameEdit.Height := 22; + Layergroup[i].NameEdit.Top := 56 + (i) * 100; + Layergroup[i].NameEdit.Width := 104; + Layergroup[i].NameEdit.Alignment := taRightJustify; + Layergroup[i].NameEdit.Tag := i; + + Layergroup[i].ThicknessLabel := TLabel.Create(self); + Layergroup[i].ThicknessLabel.Parent := self; + Layergroup[i].ThicknessLabel.Left := 320; + Layergroup[i].ThicknessLabel.Height := 16; + Layergroup[i].ThicknessLabel.Top := 87 + (i) * 100; + Layergroup[i].ThicknessLabel.Width := 97; + Layergroup[i].ThicknessLabel.Caption := 'Thickness (nm):'; + + Layergroup[i].ThicknessEdit := TEdit.Create(self); + Layergroup[i].ThicknessEdit.Parent := self; + Layergroup[i].ThicknessEdit.Left := 423; + Layergroup[i].ThicknessEdit.Height := 22; + Layergroup[i].ThicknessEdit.Top := 81 + (i) * 100; + Layergroup[i].ThicknessEdit.Width := 80; + Layergroup[i].ThicknessEdit.Alignment := taRightJustify; + Layergroup[i].ThicknessEdit.Tag := i; + + Layergroup[i].EpsilonLabel := TLabel.Create(self); + Layergroup[i].EpsilonLabel.Parent := self; + Layergroup[i].EpsilonLabel.Left := 320; + Layergroup[i].EpsilonLabel.Height := 16; + Layergroup[i].EpsilonLabel.Top := 112 + (i) * 100; + Layergroup[i].EpsilonLabel.Width := 47; + Layergroup[i].EpsilonLabel.Caption := 'Epsilon:'; + + Layergroup[i].EpsilonEdit := TEdit.Create(self); + Layergroup[i].EpsilonEdit.Parent := self; + Layergroup[i].EpsilonEdit.Left := 423; + Layergroup[i].EpsilonEdit.Height := 22; + Layergroup[i].EpsilonEdit.Top := 106 + (i) * 100; + Layergroup[i].EpsilonEdit.Width := 80; + Layergroup[i].EpsilonEdit.Alignment := taRightJustify; + Layergroup[i].EpsilonLabel.Tag := i; + + Layergroup[i].OsciLabel := TLabel.Create(self); + Layergroup[i].OsciLabel.Parent := self; + Layergroup[i].OsciLabel.Left := 320; + Layergroup[i].OsciLabel.Height := 16; + Layergroup[i].OsciLabel.Top := 135 + (i) * 100; + Layergroup[i].OsciLabel.Width := 68; + Layergroup[i].OsciLabel.Caption := 'Oscillators:'; + + Layergroup[i].OsciStringGrid := TStringGrid.Create(self); + Layergroup[i].OsciStringGrid.Parent := self; + Layergroup[i].OsciStringGrid.Left := 512; + Layergroup[i].OsciStringGrid.Height := 94; + Layergroup[i].OsciStringGrid.Top := 56 + (i) * 100; + Layergroup[i].OsciStringGrid.Width := 204; + Layergroup[i].OsciStringGrid.AutoAdvance := aaRightDown; + Layergroup[i].OsciStringGrid.ColCount := 3; + Layergroup[i].OsciStringGrid.Constraints.MaxHeight := 94; + Layergroup[i].OsciStringGrid.Constraints.MinHeight := 94; + Layergroup[i].OsciStringGrid.FixedCols := 0; + Layergroup[i].OsciStringGrid.Options := [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goEditing, goSmoothScroll]; + Layergroup[i].OsciStringGrid.RowCount := 2; + Layergroup[i].OsciStringGrid.RowCount := NumberOfOscillators[i] + 1; + Layergroup[i].OsciStringGrid.FixedRows := 1; + Layergroup[i].OsciStringGrid.ScrollBars := ssVertical; + Layergroup[i].OsciStringGrid.Rows[0].add('frequ.'); + Layergroup[i].OsciStringGrid.Rows[0].add('q'); + Layergroup[i].OsciStringGrid.Rows[0].add('gam/wto'); + Layergroup[i].OsciStringGrid.Tag := i; + + Layergroup[i].AddOscillatorButton := TButton.Create(self); + Layergroup[i].AddOscillatorButton.Parent := self; + Layergroup[i].AddOscillatorButton.Left := 423; + Layergroup[i].AddOscillatorButton.Height := 25; + Layergroup[i].AddOscillatorButton.Top := 128 + (i) * 100; + Layergroup[i].AddOscillatorButton.Width := 40; + Layergroup[i].AddOscillatorButton.Caption := '+'; + Layergroup[i].AddOscillatorButton.Tag := i; + Layergroup[i].AddOscillatorButton.OnClick := @AddOscillatorButtonClick; + // Layergroup[i].AddOscillatorButton.TabOrder := 16; + + Layergroup[i].RemoveOscillatorButton := TButton.Create(self); + Layergroup[i].RemoveOscillatorButton.Parent := self; + Layergroup[i].RemoveOscillatorButton.Left := 464; + Layergroup[i].RemoveOscillatorButton.Height := 25; + Layergroup[i].RemoveOscillatorButton.Top := 128 + (i) * 100; + Layergroup[i].RemoveOscillatorButton.Width := 40; + Layergroup[i].RemoveOscillatorButton.Caption := '-'; + Layergroup[i].RemoveOscillatorButton.Tag := i; + Layergroup[i].RemoveOscillatorButton.OnClick := @RemoveOscillatorButtonClick; + // Layergroup[i].RemoveOscillatorButton.TabOrder := 22; + + inc(i); + until (length(Layergroup) = NumberOfLayers); + end; + for i := 0 to NumberOfLayers - 1 do + begin + Layergroup[i].NameEdit.Text := LayerName[i]; + Layergroup[i].ThicknessEdit.Text := FormatFloat('0.00',Thickness[i]); + Layergroup[i].EpsilonEdit.Text := FormatFloat('0.00',Epsilon[i]); + Layergroup[i].OsciStringGrid.RowCount := NumberOfOscillators[i] + 1; + end; + index := 0; + for i := 0 to NumberOfLayers -1 do + for j := 1 to NumberOfOscillators[i] do + begin + Layergroup[i].OsciStringGrid.Cells[0,j] := FormatFloat('0.000', Oscillator[index,1]); + Layergroup[i].OsciStringGrid.Cells[1,j] := FormatFloat('0.000', Oscillator[index,2]); + Layergroup[i].OsciStringGrid.Cells[2,j] := FormatFloat('0.000', Oscillator[index,3]); + inc(index); + end; end; procedure TMainForm.EELSExportMenuItemClick(Sender: TObject); @@ -405,7 +565,6 @@ begin OsciStringGrid.InsertRowWithValues(OsciStringGrid.RowCount, ['0','0','0']); OsciStringGrid.Height := OsciStringGrid.Height + 23; inc(NumberOfOscillators[index]); - // setlength(Oscillator, NumberOfOscillators[0]); end; end; procedure TMainForm.RemoveOscillatorButtonClick(Sender: TObject); @@ -419,7 +578,6 @@ begin OsciStringGrid.DeleteRow(OsciStringGrid.RowCount - 1); OsciStringGrid.Height := OsciStringGrid.Height - 23; dec(NumberOfOscillators[index]); -// setlength(Oscillator, NumberOfOscillators[0]); end; end; @@ -430,7 +588,6 @@ var Oscillator_length: integer; i, j, index: integer; begin - // todo: set the variables. NumberOfEpsilons := NumberOfLayers; if NumberOfPeriodic = -1 then begin @@ -493,6 +650,7 @@ begin setlength(yout, nout); doboson(TargetTemperature, InstrumentalWidth, GaussianFraction, Asymmetry, EMin, EMax, IntervalWMin, IntervalWMax, IntervalNW, F_Array, xout, yout, nout); + DiagrammForm.Visible := true; end; -- GitLab