AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Bei Beenden von Form prüfen ob Daten schon gespeichert s
Thema durchsuchen
Ansicht
Themen-Optionen

Bei Beenden von Form prüfen ob Daten schon gespeichert s

Ein Thema von Albi · begonnen am 31. Mai 2003 · letzter Beitrag vom 1. Jun 2003
Antwort Antwort
Albi

Registriert seit: 4. Mai 2003
Ort: Berlin
458 Beiträge
 
Delphi 7 Professional
 
#1

Bei Beenden von Form prüfen ob Daten schon gespeichert s

  Alt 31. Mai 2003, 08:05
Kann mir jemand helfen, ich hätte gern in meinem Prog eine Abfrage, die überprüft, ob die Daten schön gespeichert sind. Sprich ich gebe etwas ein und drücke Beenden, nun sind die Daten ja noch nicht gespeichert und es soll ne Meldung kommen.

Ich habe es mit der Abfrage über die Felder versucht aber das geht ja nicht, da die Felder nach dem speichern nicht leer sind.

Kann mir jemand nen Tipp geben?
  Mit Zitat antworten Zitat
Benutzerbild von Mirilin
Mirilin

Registriert seit: 21. Dez 2002
Ort: Lenzburg
861 Beiträge
 
Delphi 6 Professional
 
#2
  Alt 31. Mai 2003, 08:37
Nimm eine Boolean-Variable
Saved : Boolean; wenn du speicherst setzt du sie auf True.
Beim OnChange setzt, setzt du sie auf False.
Und beim Beenden fragst du dann wenn False ist ob man speichern soll.

Gruss Mirilin
Tobias
Die Physik ist für die Physiker eigentlich viel zu schwer.
  Mit Zitat antworten Zitat
czapie

Registriert seit: 17. Nov 2002
Ort: Berlin
384 Beiträge
 
Delphi 5 Standard
 
#3
  Alt 31. Mai 2003, 10:20
Du mußt dann bloß noch dafür sorgen, dass das Programm auch wirklich nicht beendet wird.
Also nicht dass dann irgendein Hinweis/Dialog was auch immer kommt, aberschwups dann ist das Prog auf einmal weg.

Czapie.
Was man zu verstehen gelernt hat, fürchtet man nicht mehr.
(Marie Curie)
http://www.cafes-in-berlin.com
  Mit Zitat antworten Zitat
Basic-Master

Registriert seit: 9. Mär 2003
Ort: Brilon
395 Beiträge
 
Delphi 2007 Enterprise
 
#4
  Alt 31. Mai 2003, 12:42
Hi,
etwa so?
Delphi-Quellcode:
uses ... , dialogs, ...

type
  TForm1 = class(TForm)
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    saved:boolean;
  end;

...
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if not saved then begin
  if messagedlg('Es wurde nicht gespeichert. Trotzdem beenden?', mtconfirmation, [mbyes, mbno], -1) = mryes then
  canclose := true
  else
  canclose := false;
end;
end;
musst halt nur das OnCloseQuery-Event von dem Form auf FormCloseQuery einstellen...
Christian
  Mit Zitat antworten Zitat
Albi

Registriert seit: 4. Mai 2003
Ort: Berlin
458 Beiträge
 
Delphi 7 Professional
 
#5
  Alt 31. Mai 2003, 19:35
Vielen Dank für die schnelle Antwort, werde es morgen gleich mal ausprobieren.
  Mit Zitat antworten Zitat
Albi

Registriert seit: 4. Mai 2003
Ort: Berlin
458 Beiträge
 
Delphi 7 Professional
 
#6
  Alt 1. Jun 2003, 09:34
Habe das mal ausprobiert, nun komme ich aber wieder nicht weiter. Wie rufe diese auf, so das, wenn ich auf schließen klicke diese FormQueryClose kontrolliert wird. Ich es versucht mit

Code:
Form2.CloseQuery
Aber da passiert nichts.

Ich glaub ich muß noch viel lernen.
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#7
  Alt 1. Jun 2003, 09:45
Hi,
die Funktion Form1CloseQuery muss im Objektmanager eingetragen werden unter Ereignisse->OnCloseQuery (falls du das nicht gemacht hast).
Des Weiteren ruft das Formular OnCloseQuery vor dem Beenden selber auf. Das heißt, du brauchst das nicht manuell aufrufen.

Falls das alles immer noch nicht funktioniert, gestatte mir eine Frage: hast du Variable beim verändern auf false und beim speichern auf true gesetzt?

Chris
  Mit Zitat antworten Zitat
Albi

Registriert seit: 4. Mai 2003
Ort: Berlin
458 Beiträge
 
Delphi 7 Professional
 
#8
  Alt 1. Jun 2003, 09:57
end;Ich denke mal ich habe an alles gedacht. Ich habe in meine beiden Edit Felder ein OnChange eingebaut (Saved:= False bzw. True) und habe auch auf dem Form2 das onCloseQuery Ereignis eingetragen aber wenn ich dann das Form beende, schließt er es einfach ganz normal.

Hier mal der Code

Delphi-Quellcode:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if not saved then begin
if Saved then begin
  if MessageDlg('Es wurde nicht gespeichert. Trotzdem beenden?', mtconfirmation, [mbyes, mbno], -1) = mryes then
  CanClose := true
   else
   CanClose := false;
end;
Und fürs Setzen:

Delphi-Quellcode:
procedure TForm2.Edit1Change(Sender: TObject);
begin
 Saved:= False;
end;
[edit=Daniel B]Delphi-Tags eingefügt. MfG Daniel B.[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von Mirilin
Mirilin

Registriert seit: 21. Dez 2002
Ort: Lenzburg
861 Beiträge
 
Delphi 6 Professional
 
#9
  Alt 1. Jun 2003, 12:34
Delphi-Quellcode:
procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
const
  s = 'Änderungen sind nicht gespeichert, vor dem Beenden speichern?';
begin
  if not Saved then
  begin
    CanClose := True;
    case MessageDlg(s,mtConfirmation,[mbYes,mbNo,mbCancel],0) of
      mrYes : Save; //Save wäre Speicerprozedur...
      mrCancel : CanClose := False;
    end;
  end;
end;

Gruss Mirilin
Tobias
Die Physik ist für die Physiker eigentlich viel zu schwer.
  Mit Zitat antworten Zitat
Albi

Registriert seit: 4. Mai 2003
Ort: Berlin
458 Beiträge
 
Delphi 7 Professional
 
#10
  Alt 1. Jun 2003, 18:19
Super jetzt funktioniert es genau so wie das haben wollte, vielen Dank und ich habe wieder was dazu gelernt.
  Mit Zitat antworten Zitat
Antwort Antwort


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 22:11 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