Registriert seit: 2. Jun 2008
Ort: Norderstedt
29 Beiträge
|
Re: Checkbox-wert aus INI lesen und form schliessen geht nic
2. Jun 2008, 23:54
Moin Nick,
das ist irgendwie der Wurm drin glaube ich..jetzt bin ich wieder bei EAccessViolation (bestimmt ein doppelter aufruf) angekommen..man kann nix closen was nicht da ist usw. Magst Du nochmal drauf gucken? Ist wohl nicht mein Jahr..
Wenn ich das richtig sehe, dann ist
0 = false = cbUnchecked = form zeigen
1 = true = cbChecked = form nicht anzeigen.
Wenn du den Quellcode mal ausprobieren willst, ändere einfach erstmal die Werte der config.ini von 1 auf Null. Wenn nichts gezeigt wird ist alles gut, wenn das zweite Fenster gezeigt wird, dann muss ich noch ein ExceptionHandling machen. Letzteres entsteht aber nur aufgrund des logischen Fehlers von mir.
Projekt-> Quelltext anzeigen:
Delphi-Quellcode:
program intro2;
uses
Forms,
main in 'main.pas' {frmMain},
frmIntro in 'frmIntro.pas' {frmMeldung},
sysutils,
StdCtrls,
inifiles;
{$R *.res}
var ini: TiniFile;
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TfrmMain, frmMain);
Application.CreateForm(TfrmMeldung, frmMeldung);
try
ini:=TIniFile.create(ExtractFilePath(ParamStr(0))+'config.ini');
if ini.readbool('Intro','State',false) then
begin
frmMeldung.show; //Wird übersprungen und nicht ausgeführt
end;
finally
ini.free
end;
Application.Run;
end.
frmMain:
Delphi-Quellcode:
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TfrmMain = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
frmMain: TfrmMain;
implementation
uses frmIntro, inifiles;
{$R *.dfm}
procedure TfrmMain.FormCreate(Sender: TObject);
var ini : TiniFile;
begin
try
ini:=TIniFile.create(ExtractFilePath(ParamStr(0))+' config.ini');
// ini.Writebool('Intro','State',frmMeldung.cb1.Checked); //kann nicht gehen, weil frmMeldung noch nicht existiert
if ini.readbool(' Intro',' State',false) then frmMeldung.show; //erzeugt EAccessViolation
finally
ini.Free;
end;
end;
end.
frmIntro
Delphi-Quellcode:
unit frmIntro;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TfrmMeldung = class(TForm)
cb1: TCheckBox;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure cb1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
frmMeldung: TfrmMeldung;
implementation
uses main, inifiles ;
{$R *.dfm}
procedure TfrmMeldung.Button1Click(Sender: TObject);
begin
end;
// Wenn das Häckchen gesetzt wird, tu was..
procedure TfrmMeldung.cb1Click(Sender: TObject);
var ini : Tinifile;
begin
try
ini:=TIniFile.create(ExtractFilePath(ParamStr(0))+' config.ini');
ini.WriteBool(' Intro', ' state', false);
finally
ini.free;
frmMeldung.Close;
end;
end;
procedure TfrmMeldung.FormClose(Sender: TObject; var Action: TCloseAction);
var ini : TiniFile;
begin
try //stellt sicher, dass beim schliessen auch der richtig Wert in der INI steht
ini:=TIniFile.create(ExtractFilePath(ParamStr(0))+' config.ini');
ini.Writebool(' Intro',' State',cb1.Checked);
finally
ini.Free;
end;
end;
end. // END OF ALL
So, ich hoffe ich belaste ihr von keinem zu doll die nerven und gelobe mal Besserung.
Danke vorab für deine Hilfe!!
Karsten
Karsten
|