03 Dialoge
45 Werte des Dialoges auf Platte speichern
Das die Werte des Dialoges auch nach beenden der Anwendung erhalten bleiben, speichern wir die Daten auf die Platte.
Es wird nicht überprüft, ob geschrieben werden kann, etc.
Wen man dies will müsste man mit IOResult, etc. überprüfen.
Hier kommt noch sysutils hinzu, sie wird für FileExits gebraucht.
uses
SysUtils, // Für Dateioperationen
Die Datei, in welcher sich die Daten für den Dialog befinden.
const
DialogDatei = 'parameter.cfg';
Zu Beginn werden die Daten, wen vorhaden von der Platte geladen, ansonten werden sie erzeugt.
constructor TMyApp.Init;
begin
inherited Init;
// Prüfen ob Datei vorhanden.
if FileExists(DialogDatei) then begin
// Daten von Platte laden.
AssignFile(fParameterData, DialogDatei);
Reset(fParameterData);
Read(fParameterData, ParameterData);
CloseFile(fParameterData);
// ansonsten Default-Werte nehmen.
end else begin
with ParameterData do begin
Druck := %0101;
Schrift := 2;
Hinweis := 'Hello world !';
end;
end;
end;
Die Daten werden auf die Platte gespeichert, wen Ok gedrückt wird.
procedure TMyApp.MyParameter;
var
Dia: PDialog;
Rect: TRect;
dummy: word;
Ptr: PView;
begin
Rect.Assign(0, 0, 35, 15);
Rect.Move(23, 3);
Dia := New(PDialog, Init(Rect, 'Parameter'));
with Dia^ do begin
// CheckBoxen
Rect.Assign(2, 3, 18, 7);
Ptr := New(PCheckBoxes, Init(Rect,
NewSItem('~D~atei',
NewSItem('~Z~eile',
NewSItem('D~a~tum',
NewSItem('~Z~eit',
nil))))));
Insert(Ptr);
// Label für CheckGroup.
Rect.Assign(2, 2, 10, 3);
Insert(New(PLabel, Init(Rect, 'Dr~u~cken', Ptr)));
// RadioButton
Rect.Assign(21, 3, 33, 6);
Ptr := New(PRadioButtons, Init(Rect,
NewSItem('~G~ross',
NewSItem('~M~ittel',
NewSItem('~K~lein',
nil)))));
Insert(Ptr);
// Label für RadioGroup.
Rect.Assign(20, 2, 31, 3);
Insert(New(PLabel, Init(Rect, '~S~chrift', Ptr)));
// Edit Zeile
Rect.Assign(3, 10, 32, 11);
Ptr := New(PInputLine, Init(Rect, 50));
Insert(Ptr);
// Label für Edit Zeile
Rect.Assign(2, 9, 10, 10);
Insert(New(PLabel, Init(Rect, '~H~inweis', Ptr)));
// Ok-Button
Rect.Assign(7, 12, 17, 14);
Insert(new(PButton, Init(Rect, '~O~K', cmOK, bfDefault)));
// Schliessen-Button
Rect.Assign(19, 12, 32, 14);
Insert(new(PButton, Init(Rect, '~A~bbruch', cmCancel, bfNormal)));
end;
if ValidView(Dia) <> nil then begin // Prüfen ob genügend Speicher.
Dia^.SetData(ParameterData); // Dialog mit den Werten laden.
dummy := Desktop^.ExecView(Dia); // Dialog ausführen.
if dummy = cmOK then begin // Wen Dialog mit Ok beenden, dann Daten vom Dialog in Record laden.
Dia^.GetData(ParameterData);
// Daten auf Platte speichern.
AssignFile(fParameterData,DialogDatei);
Rewrite(fParameterData);
Write(fParameterData, ParameterData);
CloseFile(fParameterData);
end;
Dispose(Dia, Done); // Dialog und Speicher frei geben.
end;
end;