ich stehe mal wieder total auf dem Schlauch. Bitte helft mir mal einen Schritt zur Seite.
Ich möchte Eigenschaften einer Form in einer INI Datei speichern und beim erneuten Aufruf der Form wieder übernehmen.
Ich möchte damit ein bestehendes Projekt erweitern.
In dem Projekt habe ich eine neue Form (Unit2) erzeugt und diese bei uses der Hauptform (Unit1) eingefügt.
Ein Button auf die mainform, welcher mir dann die neue Form (Unit2) Modal aufruft.
Das neue Fenster wird auch erstellt, aber die Eigenschaften werden nicht entsprechend geändert.
Fehlermeldungen sehe ich auch keine.
Nehme ich nun den Grundlegenden Code und schreibe das alles in ein neues Projekt mit lediglich einer Form, klappt das wie vorgesehen.
Ich bin im Moment maximal verwirrt
Hier mal die Variante die Funktioniert:
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, IniFiles, Forms, Controls, Graphics, Dialogs;
type
{ TForm1 }
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
public
end;
var
Form1: TForm1;
const
inifile = 'goarista.ini';
implementation
{$R *.lfm}
{ TForm1 }
procedure setupForm(ini: TIniFile);
var
i: integer;
begin
i := ini.ReadInteger('window', 'height', 240);
Form1.Height := i; //ini.ReadInteger('window', 'height', 240);
Form1.Width := ini.ReadInteger('window', 'width', 320);
Form1.Color := ini.ReadInteger('window', 'color', clNone);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
ini: TIniFile;
begin
ini := TIniFile.Create(inifile);
try
setupForm(ini); {hier kommen gleich die Lese/Schreibbefehle rein}
finally
Form1.Caption:= inttoStr(Form1.Height) + ' x ' + IntToStr(Form1.Width);
ini.Free;
end;
end;
end.
Aufruf mit:
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2 := TForm2.Create(nil); //Form wird erstellt
Form2.ShowModal; //Form wird angezeigt
FreeAndNil(Form2); //Form wieder freigegeben;
end;
Code: Alles auswählen
unit Unit2;
{$mode ObjFPC}{$H+}
interface
uses
Classes, SysUtils, IniFiles, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TForm2 }
TForm2 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
public
end;
var
Form2: TForm2;
const
inifile = 'goarista.ini';
implementation
{$R *.lfm}
{ TForm2 }
procedure setupForm(ini: TIniFile);
var
i: integer;
begin
i := ini.ReadInteger('window', 'height',240);
Form2.Height := i; //ini.ReadInteger('window', 'height', 240);
Form2.Width := ini.ReadInteger('window', 'width', 320);
Form2.Color := ini.ReadInteger('window', 'color', clNone);
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
Form2.Caption:='Schließen';
sleep(5000);
close;
end;
procedure TForm2.FormCreate(Sender: TObject);
var
ini : TIniFile;
begin
ini := TIniFile.Create(inifile);
try
setupForm(ini); {hier kommen gleich die Lese/Schreibbefehle rein}
finally
ini.Free;
end;
end;
end.
Code: Alles auswählen
[window]
height=625
width=789
color=15461355