AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Form Automatsch öffnen, wenn ein User es möchte!

Form Automatsch öffnen, wenn ein User es möchte!

Ein Thema von m-werk · begonnen am 17. Jun 2002 · letzter Beitrag vom 21. Jun 2002
Antwort Antwort
Seite 2 von 3     12 3   
jbg

Registriert seit: 12. Jun 2002
3.479 Beiträge
 
Delphi 10.1 Berlin Professional
 
#11
  Alt 17. Jun 2002, 23:13
Schreib einmal die Methode load_inifile so um:
Code:
procedure TKundendaten.load_inifile;
begin
  Ini:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'settings.ini' );
  try
    ExtraForm.CheckBox1.Checked:=ini.ReadBool('Sektion1','check_box', true)
    ShowModal('Juhu, ich bin bis hierher gekommen');
  finally
    Ini.Free;
  end;
end;
Und starte dann das Programm über F9. Wenn keine Meldung erscheint, dann wissen wir zumindest genau, dass ExtraForm.Che... daran schuld ist.
  Mit Zitat antworten Zitat
m-werk

Registriert seit: 14. Jun 2002
215 Beiträge
 
Delphi 2009 Architect
 
#12
  Alt 17. Jun 2002, 23:17
Ich hab jetzt was anderes probiert:

Code:
procedure TKundendaten.save_inifile;
var
Ini : TIniFile;
begin
  Ini:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'settings.ini' );
  try
    Ini.WriteBool('Sektion1','check_box',ExtraForm.CheckBox1.Checked);
  finally
    Ini.Free;
  end;
end;

procedure TKundendaten.load_inifile;
var
Ini : TIniFile;
begin
  Ini:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'settings.ini' );
  try
    ExtraForm.CheckBox1.Checked:=ini.ReadBool('Sektion1','check_box', true)
  finally
    Ini.Free;
  end;
end;
und oben vor der implementation habe ich Ini:TIniFile herausgenommen.

Jetzt kommt zwar keine Fehlermeldung mehr aber die ExtraForm öffnet sich auch nicht!
Grüße, m-werk
  Mit Zitat antworten Zitat
Benutzerbild von thomasdrewermann
thomasdrewermann

Registriert seit: 8. Jun 2002
Ort: Herne
575 Beiträge
 
Delphi 3 Professional
 
#13
  Alt 17. Jun 2002, 23:20
Versuch mal TRY-EXCEPT-FINALLY wegzulassen....
Du hast die INI-DATEI global deklariert?
Deklarier sie doch einfach mal local...
Genauso mit
Code:
Kundendaten: TKundendaten;
versuch damit auch mal global.

Code:
public
    { Public-Deklarationen }
  procedure save_inifile;
  procedure load_inifile;
end;

var
  Kundendaten: TKundendaten;

Code:
procedure TKundendaten.save_inifile;
var
  ini:tinifile;
begin
  Ini:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'settings.ini' );
  Ini.WriteBool('Sektion1','check_box',ExtraForm.CheckBox1.Checked);
  Ini.Free;
end;

procedure TKundendaten.load_inifile;
var
  ini:tinifle;
begin
  Ini:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'settings.ini' );
  ExtraForm.CheckBox1.Checked:=ini.ReadBool('Sektion1','check_box', true)
  Ini.Free;
end;

procedure TKundendaten.FormShow(Sender: TObject);
begin
  load_inifile;
  if ExtraForm.CheckBox1.Checked Then Geburtsdatum.Click;
end;
Code:
procedure TExtraForm.CheckBox1Click(Sender: TObject);
begin
  Kundendaten.save_inifile;
end;
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.479 Beiträge
 
Delphi 10.1 Berlin Professional
 
#14
  Alt 17. Jun 2002, 23:23
Zitat von m-werk:
... aber die ExtraForm öffnet sich auch nicht!
Das liegt vielleicht daran, dass du sie auch nicht anzeigst. Nur das Setzen der CheckBox ruft noch lange nicht ShowModal bzw. Show auf. Das musst du irgendwo einbauen (z.B. im Ereignis OnClick der CheckBox).
  Mit Zitat antworten Zitat
m-werk

Registriert seit: 14. Jun 2002
215 Beiträge
 
Delphi 2009 Architect
 
#15
  Alt 17. Jun 2002, 23:26
Hi, hab ich alles schon probiert, es kommt jetzt zwar keine Fehlermeldung, aber die ExtraForm wird nicht geöffnet, obwohl die Checkbox in der ExtraForm aktiviert ist!
Grüße, m-werk
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.479 Beiträge
 
Delphi 10.1 Berlin Professional
 
#16
  Alt 17. Jun 2002, 23:39
Poste mal den Code in Ereignis OnClick von Button Geburtsdatum.
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#17
  Alt 18. Jun 2002, 08:11
Hallo m-werk,

dein Code, der ganz oben steht ist OK. Das Ini.Create vor den try ... finally Block zu setzen ist eigentlich nicht gut, weil auch diese Anweisung grundsätzlich zu einem Fehler führen könnte. Du schreibst oben:

Zitat:
Soweit sogut. Wenn ich die Checkbox aktiviere, bekomme ich folgende Fehlermeldung:
Zugriffsverletzung bei Adresse 00383638. Lesen von Adresse 00383638
Das heißt doch, das der Fehler beim Code liegt, der beim Anklicken der CheckBox ausgeführt wird. Kannst du den bitte einmal posten?
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
m-werk

Registriert seit: 14. Jun 2002
215 Beiträge
 
Delphi 2009 Architect
 
#18
  Alt 18. Jun 2002, 09:11
So sieht der Code beim Button Geburtsdatum aus:

Code:
procedure TKundendaten.GeburtsdatumClick(Sender: TObject);
var i,r:Integer;
begin
  r:=DM.ADOSHaupt.RecNo;
for i:=1 to DM.ADOSHaupt.RecordCount do begin
  if (StrToDate(Copy(DM.ADOSHaupt.FieldByName('Geburtsdatum').AsString,0,6)+C opy(DateToStr(now+7),7,4))<=now+7)
  and (StrToDate(Copy(DM.ADOSHaupt.FieldByName('Geburtsdatum').AsString,0,6)+C opy(DateToStr(now),7,4))>now)
then begin
  DM.ADOSHaupt.RecNo:=i;
  DM.ADOSHaupt.Filtered:=true;
  ExtraForm.Show;
  Exit;
end
else DM.ADOSHaupt.RecNo:=r;
end;
end;
Grüße, m-werk
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.479 Beiträge
 
Delphi 10.1 Berlin Professional
 
#19
  Alt 18. Jun 2002, 11:15
Zitat von MrSpock:
Das Ini.Create vor den try ... finally Block zu setzen ist eigentlich nicht gut, weil auch diese Anweisung grundsätzlich zu einem Fehler führen könnte.
So so. Und was macht dein finally-Block wenn Ini irgendwo hinzeigt? Der finally-Block soll ja nur die Resourcen freigeben, die auch reserviert wurde. Wenn TIniFile.Create fehlschlägt, dann wird auch keine Instanz erzeugt.
Selbst Borland macht es vor wie man es machen soll:
Code:
  FlippedList := TList.Create;
  try
    ...
    for Loop := 0 to ControlCount - 1 do with Controls[Loop] do
    begin
      FlippedList.Add(Controls[Loop]);
      Left := TheWidth - Width - Left;
    end;
    ...
  finally
     FlippedList.Free;
  end;
Und so nebenbei wirft der Compiler bei deiner Programmierweise mit Create in den TRY-Block nur Warnungen aus. Die Lösung mit vorherigem setzen auf nil ist auch nicht gerade der schönste Programmierstil. (ich verweise an dieser Stelle auf den Object Pascal Style Guide)


@m-werk:
hast du auch überprüft, ob der Code zum wählen, ob der Dialog nun angezeigt werden soll, auch richtig arbeitet?

Was mir da z.B. aufgefallen ist:
(StrToDate(Copy(DM.ADOSHaupt.FieldByName('Geburtsd atum').AsString,0,6)
Was soll denn die Null bei Copy(). gehöhrt da nicht vielleicht eine 1 hin?
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#20
  Alt 18. Jun 2002, 11:34
Hallo jgb,

das tolle an Free is, dass es (im Gegensatz zu Destroy) auch bei Nil funktioniert. Das bedeutet, dass der Finally Teil immer funktioniert.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 15:54 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