AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Checkbox-wert aus INI lesen und form schliessen geht nicht
Thema durchsuchen
Ansicht
Themen-Optionen

Checkbox-wert aus INI lesen und form schliessen geht nicht

Offene Frage von "lore"
Ein Thema von lore · begonnen am 2. Jun 2008 · letzter Beitrag vom 4. Jun 2008
Antwort Antwort
Seite 1 von 2  1 2      
lore

Registriert seit: 2. Jun 2008
Ort: Norderstedt
29 Beiträge
 
#1

Checkbox-wert aus INI lesen und form schliessen geht nicht

  Alt 2. Jun 2008, 16:19
Folgendes Problem:
2 Formulare: frmMain und frmMeldung

Eigentlich will ich nur so einen Standard Dialog beim ersten Start der Applikation haben wie "Klausel gelesen etc.."


frmMeldung hat eine checkbox. Wenn checkbox1.state = cbChecked dann

Delphi-Quellcode:
ini := TiniFile.Create(meinVerzeichnis + '\config.ini');
ini.WriteString('Intro','State','wert');
Also: schreibe checked in INI und mache dann ein

frmMeldung.close;

Beim Starten von frmMain, soll der der Wert der Checkbox aus einer INI gelesen werden.
Wenn also in der INI 'checked' steht, dann darf nur noch Main starten aber das frmMeldung eben nicht mehr...

Hat jemand ein Beispiel was ich machen muss? Es funktioniert so richtig gar nicht, weil das close ja eigentlich vor'm create gemacht wird und somit hat die Checkbox wieder denn voreingstellten Wert "cbGrayed" und startet wieder artig...

irgendwie habe ich einen Knoten gerad' im Kopf

Wann also starte ich wie die frmMeldung beim ersten Mal?
Wann schreibe ich den Wert in die INI? Ist writeString richtig? WriteBool ging gar nicht...
Wie kann ich sicherstellen, dass die frmMeldung nicht wieder startet?


Danke schonmal vorab,

Karsten
Karsten
  Mit Zitat antworten Zitat
Benutzerbild von smallsmoker
smallsmoker

Registriert seit: 12. Nov 2007
Ort: Duisburg
283 Beiträge
 
#2

Re: Checkbox-wert aus INI lesen und form schliessen geht nic

  Alt 2. Jun 2008, 16:25
Wilkommen in der DP

wenn ich dich richtig verstanden habe willst du das man im programm einstellen kann ob beim start eine info (oder so) gezeigt werden soll ?
wenn ja dann speichere doch einfach deinen checkbox wert so:

Delphi-Quellcode:
try
ini := TiniFile.Create(meinVerzeichnis + '\config.ini');
ini.Writebool('Intro','State',checkbox.checked);
finally
ini.free
frmMeldung.close;
end;
und beim starten des programm im projekt quellcode (projekt -> quellcode anzeigen)

Delphi-Quellcode:
try
ini := TiniFile.Create(meinVerzeichnis + '\config.ini');
if ini.readbool('Intro','State',false) then frmMeldung.show; //oder so
finally
ini.free
end;
is jetzt ausm kopf also könnten fehler drinnen sein

mfg smallsmoker

€: btw.: ließ das doch mal lieber noch mal durch ini-dateien
  Mit Zitat antworten Zitat
lore

Registriert seit: 2. Jun 2008
Ort: Norderstedt
29 Beiträge
 
#3

Re: Checkbox-wert aus INI lesen und form schliessen geht nic

  Alt 2. Jun 2008, 17:05
Hi smallSmoker
schonmal Danke vorab (auch für den Link), und ja, du hattest mich richtig verstanden. Den ersten Teil habe ich so auch erfolgreich übernehmen können:
Delphi-Quellcode:
procedure TfrmMeldung.cb1Click(Sender: TObject);
var ini : Tinifile;
begin
    try
    ini := TiniFile.Create(ini_stdVerz + '\config.ini');
    ini.WriteBool('Intro', 'status', cb1.checked);
     finally
    ini.free;
    frmMeldung.Close;
    end;
end;
Allerdings weiß ich nicht, ob das Event so stimmt, also wenn einer das anhakt.. dann bedeutet auf Delphi "cblClick" ich denke mal,dass passt schon.


projekt quellcode (projekt -> quellcode anzeigen); Meinst du ich soll den Code hier reinschreiben:

Delphi-Quellcode:
program intro2;

uses
  Forms,
  main in 'main.pas{frmMain},
  frmIntro in 'frmIntro.pas{frmMeldung};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TfrmMain, frmMain);
  Application.CreateForm(TfrmMeldung, frmMeldung);

try
ini := TiniFile.Create(meinVerzeichnis + '\config.ini');
if ini.readbool('Intro','State',false) then frmMeldung.show;
finally
ini.free
end;

Application.Run;
end.
äähm, wo deklariere ich hier denn uses inifiles; var ini...
Sowas hatte ich mir allerdings auch schon vorab überlegt, weiß aber leider nicht weiter *bettel*
Magst du mir nochmal auf die Sprünge helfen?
Danke,
Karsten
Karsten
  Mit Zitat antworten Zitat
Benutzerbild von smallsmoker
smallsmoker

Registriert seit: 12. Nov 2007
Ort: Duisburg
283 Beiträge
 
#4

Re: Checkbox-wert aus INI lesen und form schliessen geht nic

  Alt 2. Jun 2008, 17:07
Delphi-Quellcode:
program intro2;

uses
  Forms,
  main in 'main.pas{frmMain},
  frmIntro in 'frmIntro.pas{frmMeldung},
  inifiles;

{$R *.res}

var ini:tinifile;

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TfrmMain, frmMain);
  Application.CreateForm(TfrmMeldung, frmMeldung);

try
ini := TiniFile.Create(meinVerzeichnis + '\config.ini');
if ini.readbool('Intro','State',false) then frmMeldung.show;
//bzw if (not ini.readbool('Intro','State',false)) then frmMeldung.show;
finally
ini.free
end;

Application.Run;
end.
  Mit Zitat antworten Zitat
lore

Registriert seit: 2. Jun 2008
Ort: Norderstedt
29 Beiträge
 
#5

Re: Checkbox-wert aus INI lesen und form schliessen geht nic

  Alt 2. Jun 2008, 17:27
äähm,

ganz kurz, wie kann ich in den ProjektQuelltext var's erstellen? Hast Du 'nen Link für mich zur Hand?

danke,

karsten
Karsten
  Mit Zitat antworten Zitat
Benutzerbild von smallsmoker
smallsmoker

Registriert seit: 12. Nov 2007
Ort: Duisburg
283 Beiträge
 
#6

Re: Checkbox-wert aus INI lesen und form schliessen geht nic

  Alt 2. Jun 2008, 19:30
guck doch mal #4 an da hab ich doch schon ne variable drinne
  Mit Zitat antworten Zitat
lore

Registriert seit: 2. Jun 2008
Ort: Norderstedt
29 Beiträge
 
#7

Re: Checkbox-wert aus INI lesen und form schliessen geht nic

  Alt 2. Jun 2008, 19:43
äähm, da schlug mich wohl kurz die Blindheit.. ich werd' mal morgen weitermachen und schonmal vielen Dank! Wenn ich's hinhab' oder auch nicht, meld ich mich
Karsten
  Mit Zitat antworten Zitat
lore

Registriert seit: 2. Jun 2008
Ort: Norderstedt
29 Beiträge
 
#8

Re: Checkbox-wert aus INI lesen und form schliessen geht nic

  Alt 2. Jun 2008, 22: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
Angehängte Dateien
Dateityp: zip intro2_163.zip (233,0 KB, 2x aufgerufen)
Karsten
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Checkbox-wert aus INI lesen und form schliessen geht nic

  Alt 3. Jun 2008, 07:18
Du willst während des Erzeugens des Hauptformular bereits das andere Formular anzeigen. Dieses ist aber noch gar nicht angelegt, deshalb knallt es.
Delphi-Quellcode:
  Application.CreateForm(TfrmMain, frmMain); //hier wird der Code von frmMain.FormCreate ausgeführt
Application.CreateForm(TfrmMeldung, frmMeldung); //hier wird das 2. Formular erzeugt
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
lore

Registriert seit: 2. Jun 2008
Ort: Norderstedt
29 Beiträge
 
#10

Re: Checkbox-wert aus INI lesen und form schliessen geht nic

  Alt 3. Jun 2008, 09:04
Hi deddyH,
Zitat:
Du willst während des Erzeugens des Hauptformular bereits das andere Formular anzeigen. Dieses ist aber noch gar nicht angelegt, deshalb knallt es
deswegen schrieb ich ja auch schon
Zitat:
"..man kann nix closen was nicht da ist"
Die Frage ist aber, wie löst man das? Ich hatte keine Idee dazu aber Tatsache ist, dass es Millionfach benutzt wird, sonst würde man ja jedesmal die Lizenzbestimmungen beim Starten der Applikation lesen müssen. Ich wollte nämlich auch nicht in die Registry schreiben

Hast Du ein Idee dazu?

Danke,
Karsten
Karsten
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz