Autor Beitrag
tilli19222
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 17.12.10 21:10 
Hallo liebe Forumgemeinde,

hat jemand eine Idee warum der SaveDialog gleich nach dem Starten des Programms ausgeführt wird und nicht nur wenn ich auf den entsprechenden Button klicke?



ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
procedure TForm1.Button1Click(Sender: TObject);
  var zeile1, zeile2, zeile3, zeile4, zeile5, zeile6: string;
      pu: Tstringlist;

begin
  zeile1 := editk1.text;
  zeile2 := editkt2.text;
  zeile3 := editk3.text;
  zeile4 := editj1.text;
  zeile5 := editj2.text;
  zeile6 := editj3.text;
  pu := Tstringlist.Create;
  try
    pu.Add(Zeile1);
    pu.Add(Zeile2);
    pu.Add(Zeile3);
    with savedialog1 do if execute then
      pu.SaveToFile(filename);
  finally pu.free End;
end;


Moderiert von user profile iconMartok: Delphi-Tags gesetzt
Moderiert von user profile iconGausi: Topic aus Sonstiges (Delphi) verschoben am Fr 17.12.2010 um 20:44
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 17.12.10 21:23 
Dann hast du Button1Click auch als Ereignishandler in OnCreate oder OnShow oder so stehen. Schau mal beim Formular im Objektinspektor. ;-)
tilli19222 Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 17.12.10 21:36 
leider nein :(
und wenn ich bei der procedure noch ein close; einfüge schließt es sich auch nicht
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 17.12.10 23:03 
Häng am besten einmal das Projekt komplett an, sonst raten wir hier nur herum...
Tranx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: Sa 18.12.10 09:37 
Die einfachste Methode, ist einen Haltepunkt in der Button1Click-Prozedur zu setzen und dann nachzusehen, von welcher Prozedur das Programm kommt. (Debugfenster Aufrufstack) Vielleicht bekommst Du da schon heraus, wer der "Verursacher" ist. Bei Onchange-Prozedurenm ist das häufig so. Bei einer OnClick-Prozedur für einen Button hatte ich das noch nie.

Ein Möglichkeit, es einfach abzustellen ist, Du schreibst folgende Zeilen an den Anfang der Prozedur:

ausblenden Delphi-Quelltext
1:
2:
  if not(Button1.focused) then
    exit;


Dann wird der Rest nur ausgeführt, wenn Button1 den Focus hat.

_________________
Toleranz ist eine Grundvoraussetzung für das Leben.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 18.12.10 10:10 
user profile iconTranx hat folgendes geschrieben Zum zitierten Posting springen:
Dann wird der Rest nur ausgeführt, wenn Button1 den Focus hat.
Das kann beim Programmstart aber auch der Fall sein. ;-)
Zudem ist die Bekämpfung von Symptomen bei Programmierfehlern...
tilli19222 Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Sa 18.12.10 12:08 
Hier der ganze Code:

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:
procedure TForm1.Button1Click(Sender: TObject);
  var zeile1, zeile2, zeile3: string;
      pu: Tstringlist;

begin
  zeile1 := editk1.text;
  zeile2 := editk2.text;
  zeile3 := editk3.text;
  pu := Tstringlist.Create;
  try
    pu.Add(Zeile1);
    pu.Add(Zeile2);
    pu.Add(Zeile3);
    with savedialog1 do if execute then
      pu.SaveToFile(filename);
  finally pu.free End;
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
   Monataktuell := StrToInt(EditMaktuell.text);
   Jahraktuell := StrToInt(EditJaktuell.text);

   if (Monataktuell=01) and (Jahraktuell=2011) then Monataktuell:=1;
   if (Monataktuell=02) and (Jahraktuell=2011) then Monataktuell:=2;
   if (Monataktuell=03) and (Jahraktuell=2011) then Monataktuell:=3;
   if (Monataktuell=04) and (Jahraktuell=2011) then Monataktuell:=4;
   if (Monataktuell=05) and (Jahraktuell=2011) then Monataktuell:=5;
   if (Monataktuell=06) and (Jahraktuell=2011) then Monataktuell:=6;
   if (Monataktuell=07) and (Jahraktuell=2011) then Monataktuell:=7;
   if (Monataktuell=09) and (Jahraktuell=2011) then Monataktuell:=9;
   if (Monataktuell=10) and (Jahraktuell=2011) then Monataktuell:=11;
   if (Monataktuell=11) and (Jahraktuell=2011) then Monataktuell:=11;
   if (Monataktuell=12) and (Jahraktuell=2011) then Monataktuell:=12;
   if (Monataktuell=01) and (Jahraktuell=2012) then Monataktuell:=13;
   if (Monataktuell=02) and (Jahraktuell=2012) then Monataktuell:=14;
   if (Monataktuell=03) and (Jahraktuell=2012) then Monataktuell:=15;
   if (Monataktuell=04) and (Jahraktuell=2012) then Monataktuell:=16;
   if (Monataktuell=05) and (Jahraktuell=2012) then Monataktuell:=17;
   if (Monataktuell=06) and (Jahraktuell=2012) then Monataktuell:=18;
   if (Monataktuell=07) and (Jahraktuell=2012) then Monataktuell:=19;
   if (Monataktuell=09) and (Jahraktuell=2012) then Monataktuell:=21;
   if (Monataktuell=10) and (Jahraktuell=2012) then Monataktuell:=22;
   if (Monataktuell=11) and (Jahraktuell=2012) then Monataktuell:=23;
   if (Monataktuell=12) and (Jahraktuell=2012) then Monataktuell:=24;
   if (Monataktuell=01) and (Jahraktuell=2013) then Monataktuell:=25;
   if (Monataktuell=02) and (Jahraktuell=2013) then Monataktuell:=26;
   if (Monataktuell=03) and (Jahraktuell=2013) then Monataktuell:=27;
   if (Monataktuell=04) and (Jahraktuell=2013) then Monataktuell:=28;
   if (Monataktuell=05) and (Jahraktuell=2013) then Monataktuell:=29;
   if (Monataktuell=06) and (Jahraktuell=2013) then Monataktuell:=30;
   if (Monataktuell=07) and (Jahraktuell=2013) then Monataktuell:=31;
   if (Monataktuell=09) and (Jahraktuell=2013) then Monataktuell:=33;
   if (Monataktuell=10) and (Jahraktuell=2013) then Monataktuell:=34;
   if (Monataktuell=11) and (Jahraktuell=2013) then Monataktuell:=35;
   if (Monataktuell=12) and (Jahraktuell=2013) then Monataktuell:=36;
   if (Monataktuell=01) and (Jahraktuell=2014) then Monataktuell:=37;
   if (Monataktuell=02) and (Jahraktuell=2014) then Monataktuell:=38;
   if (Monataktuell=03) and (Jahraktuell=2014) then Monataktuell:=39;
   if (Monataktuell=04) and (Jahraktuell=2014) then Monataktuell:=40;
   if (Monataktuell=05) and (Jahraktuell=2014) then Monataktuell:=41;
   if (Monataktuell=06) and (Jahraktuell=2014) then Monataktuell:=42;
   if (Monataktuell=07) and (Jahraktuell=2014) then Monataktuell:=43;
   if (Monataktuell=09) and (Jahraktuell=2014) then Monataktuell:=45;
   if (Monataktuell=10) and (Jahraktuell=2014) then Monataktuell:=46;
   if (Monataktuell=11) and (Jahraktuell=2014) then Monataktuell:=47;
   if (Monataktuell=12) and (Jahraktuell=2014) then Monataktuell:=48;
   if (Monataktuell=01) and (Jahraktuell=2015) then Monataktuell:=49;
   if (Monataktuell=02) and (Jahraktuell=2015) then Monataktuell:=50;
   if (Monataktuell=03) and (Jahraktuell=2015) then Monataktuell:=51;
   if (Monataktuell=04) and (Jahraktuell=2015) then Monataktuell:=52;
   if (Monataktuell=05) and (Jahraktuell=2015) then Monataktuell:=53;
   if (Monataktuell=06) and (Jahraktuell=2015) then Monataktuell:=54;
   if (Monataktuell=07) and (Jahraktuell=2015) then Monataktuell:=55;
   if (Monataktuell=09) and (Jahraktuell=2015) then Monataktuell:=57;
   if (Monataktuell=10) and (Jahraktuell=2015) then Monataktuell:=58;
   if (Monataktuell=11) and (Jahraktuell=2015) then Monataktuell:=59;
   if (Monataktuell=12) and (Jahraktuell=2015) then Monataktuell:=60;
   if (Monataktuell=01) and (Jahraktuell=2016) then Monataktuell:=61;
   if (Monataktuell=02) and (Jahraktuell=2016) then Monataktuell:=62;
   if (Monataktuell=03) and (Jahraktuell=2016) then Monataktuell:=63;
   if (Monataktuell=04) and (Jahraktuell=2016) then Monataktuell:=64;
   if (Monataktuell=05) and (Jahraktuell=2016) then Monataktuell:=65;
   if (Monataktuell=06) and (Jahraktuell=2016) then Monataktuell:=66;
   if (Monataktuell=07) and (Jahraktuell=2016) then Monataktuell:=67;
   if (Monataktuell=09) and (Jahraktuell=2016) then Monataktuell:=69;
   if (Monataktuell=10) and (Jahraktuell=2016) then Monataktuell:=70;
   if (Monataktuell=11) and (Jahraktuell=2016) then Monataktuell:=71;
   if (Monataktuell=12) and (Jahraktuell=2016) then Monataktuell:=72;
   if (Monataktuell=01) and (Jahraktuell=2017) then Monataktuell:=73;
   if (Monataktuell=02) and (Jahraktuell=2017) then Monataktuell:=74;
   if (Monataktuell=03) and (Jahraktuell=2017) then Monataktuell:=75;
   if (Monataktuell=04) and (Jahraktuell=2017) then Monataktuell:=76;
   if (Monataktuell=05) and (Jahraktuell=2017) then Monataktuell:=77;
   if (Monataktuell=06) and (Jahraktuell=2017) then Monataktuell:=78;
   if (Monataktuell=07) and (Jahraktuell=2017) then Monataktuell:=79;
   if (Monataktuell=09) and (Jahraktuell=2017) then Monataktuell:=81;
   if (Monataktuell=10) and (Jahraktuell=2017) then Monataktuell:=82;
   if (Monataktuell=11) and (Jahraktuell=2017) then Monataktuell:=83;
   if (Monataktuell=12) and (Jahraktuell=2017) then Monataktuell:=84;


(diese Umwandlung der Zahlenwerte kommt regelmäßig auch mit anderen Variablen vor,
8er Monate rausgenommen --- wurden zu Smilies)


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
   if KM1 - Monataktuell = 6 then GroupBox1.color := clyellow;

   if Monataktuell <= KM1-7 then
   begin
   Label2.Color := clgreen;
   GroupBox1.Color := clgreen;
   end;

   if KM1 - Monataktuell < 6 then
   begin
   Label2.Color := clred;
   GroupBox1.color := clred;
   end;
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 18.12.10 13:43 
user profile icontilli19222 hat folgendes geschrieben Zum zitierten Posting springen:
Hier der ganze Code:
Der ist ja nicht das Problem. Was in der Formulardefinition, sprich in der .dfm, steht, ist hier relevant...
Deshalb meinte ich ja, dass es sinnvoll ist, das Projekt anzuhängen.

Mit Debuggen und im Objektinspektor kannst du es auch selbst suchen.
tilli19222 Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Sa 18.12.10 13:53 
mit

ausblenden Delphi-Quelltext
1:
2:
if not(Button1.focused) then
    exit;


funktioniert es
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 18.12.10 14:01 
:autsch: Klar funktioniert es, aber es wäre wohl sinnvoller die Ursache zu beheben, nämlich den Fehler... :roll:
Tranx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: Sa 18.12.10 17:57 
Eins ist schon mal klar, die 100 IF-Abfragen kannst Du extrem vereinfachen. Es scheint so zu sein, dass die Beziehung zwischen Monataktuell und Jahraktuell im Ergebnis wie folgt ist:

ausblenden Delphi-Quelltext
1:
  Monataktuell := (Jahraktuell-2011)*12+Monataktuell;					


Zumal es eine Integer-Variable mit 0 am Anfang nicht gibt: 01 = 1, da die Variable ja in binärem Format abgespeichert wird.

Aber das ist nicht die Ursache für Den Fehler, vereinfacht nur die Lesbarkeit des Quellcodes.

Also bleibt nur das Debugging übrig. Du setzt einen Haltepunkt an der ersten Zeile der Prozedur Button1Click. Wichtig ist, dass Du im Quelltext der Unit {$D+} setzt (gleich hinter der ersten Zeile mit UNIT), damit der Debugger überhaupt ausgeführt wird. Dann startest Du das Programm aus der Delphi-Umgebung heraus. Und wenn das Programm am Haltepunkt anhält, dann schaust Du um Aufrufstack nach, welche Prozeduren dort aufgelistet sind. Könntest Du das mal tun und uns den Inhalt des Aufrufstacks mitteilen. Vielleicht findet sich schon der Fehler. Ansonsten wäre alles nur Raterei.

_________________
Toleranz ist eine Grundvoraussetzung für das Leben.
tilli19222 Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Sa 18.12.10 21:22 
Wenn der Haltepunkt bei begin gesetzt ist und dann nur in der Zeile nach beginn

Bild1

Bild2

Moderiert von user profile iconNarses: Bilder als Anhang hochgeladen.
Einloggen, um Attachments anzusehen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 18.12.10 21:29 
Wie schon gesagt: Am besten häng das Projekt oder zumindest die .dfm Datei an. Im Screenshot sieht es so aus als sei der Button normal geklickt worden.
tilli19222 Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Sa 18.12.10 21:57 
Hier das Proket als .rar-Archiv.
Einloggen, um Attachments anzusehen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 18.12.10 22:13 
LOL, was habe ich ganz am Anfang geschrieben... :roll:
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Dann hast du Button1Click auch als Ereignishandler in OnCreate oder OnShow oder so stehen. Schau mal beim Formular im Objektinspektor. ;-)

Und so ist es auch...
CreateWithButtonClick
Einloggen, um Attachments anzusehen!

Für diesen Beitrag haben gedankt: tilli19222
tilli19222 Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Sa 18.12.10 22:40 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
LOL, was habe ich ganz am Anfang geschrieben... :roll:
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Dann hast du Button1Click auch als Ereignishandler in OnCreate oder OnShow oder so stehen. Schau mal beim Formular im Objektinspektor. ;-)

Und so ist es auch...
[Bild: CreateWithButtonClick]

:-D ok danke
habe ereignishandler von button1 geguckt