Autor Beitrag
lexmy3
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

WIN 2000 Prof. + Office 2000
Delphi 5 Enterprise
BeitragVerfasst: Mo 12.12.05 16:27 
Hey habe mein Programm fast fertig und dann sowas :(

Habe mehrere Forms die ich mit Visible/Anvisible auf und zumache. Am Ende wird das Prog. mit SaveDialog abgeschlossen.

Jetzt habe ich bemerkt, dass Nach dem Beenden Im Taskmanager unter Prozesse mein Projekt noch läuft. Warum das denn????

Wie komme ich aus diese Lappalie ??

Hat vieleicht einer eine Idee??

Mfg
Ironwulf
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 733
Erhaltene Danke: 2



BeitragVerfasst: Mo 12.12.05 16:31 
du musst die erste form mit close schließen, also z.b. form1.close
azubi_20
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 593

WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
BeitragVerfasst: Mo 12.12.05 16:35 
So kann man auch eine Anwendung beenden :
ausblenden Delphi-Quelltext
1:
Application.terminate					
lexmy3 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

WIN 2000 Prof. + Office 2000
Delphi 5 Enterprise
BeitragVerfasst: Mo 12.12.05 16:39 
user profile iconIronwulf hat folgendes geschrieben:
du musst die erste form mit close schließen, also z.b. form1.close


Ja aber dan ist doch nur die erste Form geschlossen und ich habe noch 9 andere!!
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mo 12.12.05 16:45 
Wenn die Hauptform eines Programms geschlossen wird, dann werden die anderen automatisch mit geschlossen. Ein Form1.close beendet das komplette Programm (wenn Form1 die Mainform ist).

_________________
We are, we were and will not be.
lexmy3 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

WIN 2000 Prof. + Office 2000
Delphi 5 Enterprise
BeitragVerfasst: Mo 12.12.05 16:51 
user profile iconazubi_20 hat folgendes geschrieben:
So kann man auch eine Anwendung beenden :
ausblenden Delphi-Quelltext
1:
Application.terminate					


Hey, ein Guter Anfang!!
Damit klappt es zwar aber nur wenn ich das Prog. bis zum Schluss durchjage.
Was ist wenn ich zwischen der Forms abbreche?
Dann läuft es immer noch im Taskmanager.

Mfg

aus Frankfurt
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Mo 12.12.05 17:05 
Irgendwie hast Du was Falsch gemacht:
Du definierst diverse Forms, eines davon ist dein Hauptformular. Das ist sichtbar, sobald Du das Programm startest. Per Definition ist es das erste Formular, das im Hauptprogramm per Application.CreateForm erzeugt wird.

Normalerweise muss man sich überhaupt nicht darum kümmern, wer was wann wo und wieso geschlossen, terminiert etc. wird...

Also denke ich, Du hast dein Hauptprogramm zerballert (Projekts->View Source).

Poste mal

_________________
Na denn, dann. Bis dann, denn.
lexmy3 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

WIN 2000 Prof. + Office 2000
Delphi 5 Enterprise
BeitragVerfasst: Mo 12.12.05 17:31 
user profile iconalzaimar hat folgendes geschrieben:
Irgendwie hast Du was Falsch gemacht:
Du definierst diverse Forms, eines davon ist dein Hauptformular. Das ist sichtbar, sobald Du das Programm startest. Per Definition ist es das erste Formular, das im Hauptprogramm per Application.CreateForm erzeugt wird.

Normalerweise muss man sich überhaupt nicht darum kümmern, wer was wann wo und wieso geschlossen, terminiert etc. wird...

Also denke ich, Du hast dein Hauptprogramm zerballert (Projekts->View Source).

Poste mal


Nabend,

Ich habe 10 Forms und habe jetzt in jeder Form unter OnClose Procedur mit Form1.Close gesetzt. Doch irgendwie schließt mein 9 Form das 10 mit ab !!??? Ohne auf Close zu klicken!!! Wohlgemerkt

Mfg
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Mo 12.12.05 17:37 
10 Formulare? Alle auf einmal sichtbar? Aha.
Und welches ist das Hauptformular, also das mit dem Menü etc.? Die Anderen kannst Du öffnen, schliessen, wie's beliebt, aber wenn Du das Hauptformular schliesst, dann wird die Anwendung auch beendet.

Normalerweise ist es doch so:
Hauptformular wird sichtbar. Nun klickst Du irgendwo rauf oder rufst eine Funktion ab (per Menü oder so) und dann wird ein weiteres Fenster sichtbar, z.B. ein Dialog. Hier füllst Du datenfelder aus oder machst sonstwas. Irgendwann klickst Du auf OK oder Abbruch und landest wieder im Hauptformular, wie FireFox, Word, eigentlich *jedes* Programm. WEnn Du dann das Hauptformulat schließt, dann ist eben Schluss...

Was machst Du anders?

Ohne Code o.ä. ist es schwer, da, wie heisst es so schön, meine Glaskugel heute nicht will...

_________________
Na denn, dann. Bis dann, denn.
r2c2
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 324
Erhaltene Danke: 2

Linux

BeitragVerfasst: Mo 12.12.05 18:31 
user profile iconlexmy3 hat folgendes geschrieben:
user profile iconazubi_20 hat folgendes geschrieben:
So kann man auch eine Anwendung beenden :
ausblenden Delphi-Quelltext
1:
Application.terminate					


Hey, ein Guter Anfang!!
Damit klappt es zwar aber nur wenn ich das Prog. bis zum Schluss durchjage.
Was ist wenn ich zwischen der Forms abbreche?
Dann läuft es immer noch im Taskmanager.

Öhm... funktioniert vielleicht, is aber nicht Sinn und Zweck dieser Funktion. Guck mal in die Delphi-Hilfe. Terminate is sowas wie der Not-Aus-Schalter, wenn sonst nix mehr geht...

Machs so, wie das hier schon n paar Mal steht:
ausblenden Delphi-Quelltext
1:
2:
3:
Form1.Close;
//bzw.
Application.MainForm.Close,


Ansonsten:
Zitat:

Ohne Code o.ä. ist es schwer, da, wie heisst es so schön, meine Glaskugel heute nicht will...

dito

mfg

Christian

_________________
Kaum macht man's richtig, schon klappts!
lexmy3 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

WIN 2000 Prof. + Office 2000
Delphi 5 Enterprise
BeitragVerfasst: Di 13.12.05 09:16 
Ansonsten:
Zitat:

Ohne Code o.ä. ist es schwer, da, wie heisst es so schön, meine Glaskugel heute nicht will...

dito

mfg

Christian[/quote]

Moijen Moijen,

Also momentan habe ich es so, dass wenn ich auf WEITER klicke um zum letzten Fenster zu kommen, macht er mir das letzte fenster auch aus. Wenn ich aber die OnClose Prozedur rausmache, macht es wie gewünscht. Aber wenn ich auf close klicke laüft das Prog noch im Taskmanager.

hier mein Quelltext vieleicht wir einer schlau daraus:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
  procedure TFormCosts.ButtonWeiterClick(Sender: TObject);
// und ins RichEditCosts////////////////////////
var
   lCounter: Integer;
begin
// löschen der ersten Zeile /////////////////////
RichEditCosts.Lines.Delete(0);

//und Erstellen der Überschrifft in Fett + Zeilenumbruch//////
  with RichEditCosts do
    begin
    SetFocus;
    SelStart := Length(Text);
    SelAttributes.Style := [fsBold];
    Lines.Add ('9   Costs'#13#10);
    SelAttributes.Style := SelAttributes.Style-[fsBold];
    end;
  // Initialisierung der Laufvariablen
lCounter := 0;
  // Schleife zum Durchlaufen aller Einträge der ListBox
while lCounter < CheckListBoxCosts.Items.Count
do begin
  // Alle in Folge markierte Einträge ins RichEdit (Schleife)
if CheckListBoxCosts.Checked[lCounter]
then begin
RichEditCosts.Lines.Add (CheckListBoxCosts.Items.Strings[lCounter]);
end; // for While
  // Schleifenzähler erhöhen, damit der nächste Eintrag gewählt wird
inc(lCounter);
end; // for if

// Weiter zum letzten Fenster
FormCosts.Close;
FormFinal.Show;

FormFinal.Report.Lines. Delete(0); // erste Zeile Löschen wegen Überschrift

// Sammeln der RichEditEinträge ins FormFinalRichEdit(Report)//////////////////
FormFinal.Report.Lines.AddStrings (Form1.RichEdit1.Lines );

FormFinal.Report.Lines.Add (#13#10);    // Zeilenumbruch

// einfügen des RichEdits über Zwischenablage, weil formatiert/////////////////
FormGeneral.RichEditGeneral.SelectAll;
FormGeneral.RichEditGeneral.CopyToClipBoard;
FormFinal.Report.PasteFromClipBoard;
{FormFinal.Report.Lines.AddStrings (FormGeneral.RichEditGeneral.Lines);}

FormFinal.Report.Lines.Add (#13#10);    // Zeilenumbruch

FormSewage.RichEditSewage.SelectAll;
FormSewage.RichEditSewage.CopyToClipBoard;
FormFinal.Report.PasteFromClipBoard;
{FormFinal.Report.Lines.AddStrings (FormSewage.RichEditSewage.Lines);}

FormFinal.Report.Lines.Add (#13#10);    // Zeilenumbruch

FormHeating.RichEditHeating.SelectAll;
FormHeating.RichEditHeating.CopyToClipBoard;
FormFinal.Report.PasteFromClipBoard;
{FormFinal.Report.Lines.AddStrings (FormHeating.RichEditHeating.Lines); }

FormFinal.Report.Lines.Add (#13#10);    // Zeilenumbruch

FormAir.RichEditAir.SelectAll;
FormAir.RichEditAir.CopyToClipBoard;
FormFinal.Report.PasteFromClipBoard;
{FormFinal.Report.Lines.AddStrings (FormAir.RichEditAir.Lines); }

FormFinal.Report.Lines.Add (#13#10);    // Zeilenumbruch

FormElectro.RichEditElectro.SelectAll;
FormElectro.RichEditElectro.CopyToClipBoard;
FormFinal.Report.PasteFromClipBoard;
{FormFinal.Report.Lines.AddStrings (FormElectro.RichEditElectro.Lines);}

FormFinal.Report.Lines.Add (#13#10);    // Zeilenumbruch

FormLifts.RichEditLifts.SelectAll;
FormLifts.RichEditLifts.CopyToClipBoard;
FormFinal.Report.PasteFromClipBoard;
{FormFinal.Report.Lines.AddStrings (FormLifts.RichEditLifts.Lines); }

FormFinal.Report.Lines.Add (#13#10);    // Zeilenumbruch

FormBuilding.RichEditBuilding.SelectAll;
FormBuilding.RichEditBuilding.CopyToClipBoard;
FormFinal.Report.PasteFromClipBoard;
{FormFinal.Report.Lines.AddStrings (FormBuilding.RichEditBuilding.Lines);}

FormFinal.Report.Lines.Add (#13#10);    // Zeilenumbruch

FormDefaults.RichEditDefaults.SelectAll;
FormDefaults.RichEditDefaults.CopyToClipBoard;
FormFinal.Report.PasteFromClipBoard;
{FormFinal.Report.Lines.AddStrings (FormDefaults.RichEditDefaults.Lines);}

FormFinal.Report.Lines.Add (#13#10);    // Zeilenumbruch

FormCosts.RichEditCosts.SelectAll;
FormCosts.RichEditCosts.CopyToClipBoard;
FormFinal.Report.PasteFromClipBoard;
{FormFinal.Report.Lines.AddStrings (FormCosts.RichEditCosts.Lines);}

end;

procedure TFormCosts.ButtonClearClick(Sender: TObject);
var
   lCounter: integer;
begin
     for lCounter:=CheckListBoxCosts.Items.Count-1 downto 0
     do begin
     if CheckListBoxCosts.Checked [lCounter]
     then begin CheckListBoxCosts.Items.Delete (lCounter);
     end;
         end;
     CheckListBoxCosts.Items.SaveToFile ('C:Word\Costs.doc');
     CheckListBoxCosts.Items.LoadFromFile ('C:Word\Costs.doc');
     EditCosts.Clear;
                     end;

procedure TFormCosts.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Form1.Close
end;

end.


Mfg

Lexmy3
chriss1988
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 389

windows xp prof,home,windows98
delphi5
BeitragVerfasst: Di 13.12.05 09:23 
wenn ich das richtig verstanden hab whast du mehrere formen und du willst alle zusammen beenden oder willst du wenn du auf form 4 bist nur form4 beenden und zu form 3 zurückkehren oder wie
lexmy3 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

WIN 2000 Prof. + Office 2000
Delphi 5 Enterprise
BeitragVerfasst: Di 13.12.05 09:33 
user profile iconchriss1988 hat folgendes geschrieben:
wenn ich das richtig verstanden hab whast du mehrere formen und du willst alle zusammen beenden oder willst du wenn du auf form 4 bist nur form4 beenden und zu form 3 zurückkehren oder wie


Moijen,

Habe in jedem Fenster einen WEITER und einen ZURÜCK Buttons um fom Fenster zu Fenster zu springen, doch wenn ich auf einmal das Prog. beenden muss möchte ich es durch klicken auf OnClose =>(X) in jedem Fenster bewerkstelligen.

Darum auch das mit:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TFormCosts.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Form1.Close
end;

end.

Mfg
Lexmy3
chriss1988
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 389

windows xp prof,home,windows98
delphi5
BeitragVerfasst: Di 13.12.05 09:37 
warum machst du es net mit nem button click
ausblenden Delphi-Quelltext
1:
2:
3:
procedure TForm2.Button2Click(sender: TObject);
form2.close;
end;

und fürs weiter
ausblenden Delphi-Quelltext
1:
2:
3:
procedure TForm2.Button2Click(sender: TObject);
form3.showmodal;
end;



so funktionierts bei mir
lexmy3 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

WIN 2000 Prof. + Office 2000
Delphi 5 Enterprise
BeitragVerfasst: Di 13.12.05 09:49 
[quote="user profile iconchriss1988"]warum machst du es net mit nem button click

Ja ich verstehe, doch wenn der Anwender auf Close drückt was dann??? Das muss ich doch auch irgendwie ordentlich beenden lassen.

Frage: Werden durch die Anwendung ShowModal die restlichen Fenster im Hintergrund aufbleiben? Das muss nömlich so sein , denn ich mus durch ZURÜCK Sachen nachkorrigieren könen.

Mfg
chriss1988
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 389

windows xp prof,home,windows98
delphi5
BeitragVerfasst: Di 13.12.05 09:59 
hier ma en beispiel

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm2.Button2Click(Sender: TObject);
begin
form3.showmodal;   //öffnet form3
form3.close; //schließ form3
end;

procedure TForm2.Button3Click(Sender: TObject);
begin
form1.close;  //bei betätigen des buttons(schießen)schließst sich die form 1 und 2 zusammen
form2.close;
end;
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Di 13.12.05 10:22 
TForm.ShowModal führt bereits ein Close aus. Das braucht man nicht nochmal explizit

Zum entgültigen Beenden der Anwendung sollte Application.Terminate verwendet werden.

Ein Close-Aufruf in FormClose ergibt keinen Sinn ;-)

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
chriss1988
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 389

windows xp prof,home,windows98
delphi5
BeitragVerfasst: Di 13.12.05 10:30 
warum sinnlos das sin 2 verschiedene button der eine beendet das programm
der andere wechelt nur auf ne andere form
lexmy3 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

WIN 2000 Prof. + Office 2000
Delphi 5 Enterprise
BeitragVerfasst: Di 13.12.05 10:35 
user profile iconBenBE hat folgendes geschrieben:
TForm.ShowModal führt bereits ein Close aus. Das braucht man nicht nochmal explizit

Zum entgültigen Beenden der Anwendung sollte Application.Terminate verwendet werden.

Ein Close-Aufruf in FormClose ergibt keinen Sinn ;-)


Hallo,

Jetzt bin ich total verirrt habe gerade festgestellt das mit OnClose das Prog. immer Beendet wird.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TFormGeneral.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
Application.Terminate
end;


Also das hier macht alles aus

Kann mir einer erklären was jetzt denn dieses OnClose genau bewirkt??!!

Mfg
lexmy3 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

WIN 2000 Prof. + Office 2000
Delphi 5 Enterprise
BeitragVerfasst: Di 13.12.05 12:07 
:oops: Habe mein Problem jetzt entdeckt und bin wohl selbst schuld. Die Befehle oben ergeben alle ihren Sinn.

Also alles im Grünnen Bereich 8)

Mfg

from Fraport