Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Zu dumm für If() oder was is mit MessageDlg() los?
Experience1986 - Do 05.02.04 15:55
Titel: Zu dumm für If() oder was is mit MessageDlg() los?
Hi,
Ich wollte meinen Benutzer daran erinnern das er eine Änderung im aktuellen Formular gemacht hat, und möchte ihn per MessageDlg() fragen ob er die Änderungen speichern oder Verwerfen will.
Ich setze also eine Global Variable "vReallyClose" (Integer) und gebe dieser den Wert 1.
Wird eine Änderung gemacht, so wird vReallyClose auf 0 gesetzt.
Nun vorher hatte ich bereits vReallyClose als Boolean, allderdings, jedes mal wenn man Auf den Schließen Button (btn_Save) klickt, welcher die If abfrage macht, ob nun MessageDlg(9 aufgerufen werden soll, oder ob das Formular direkt Versteckt werden soll (Hide), ruft mein Programm JEDES mal die MessageDlg() auf, obwohl ich mir davor schon vReallyClose per Showmessage augegeben habe, und mich damit vergewissert habe, das der Wert 1 ist, womit also das Formular direkt geschlossen werden soll, da ja keine Änderung gemacht wurde.
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:
| procedure TFRM_IE_SearchbarEditor.Button1Click(Sender: TObject); begin if (vReallyClose=0) then begin
if MessageDlg('Du hast gerade Änderungen vorgenommen.'+#13+ 'Sollen diese Änderungen nun gespeichert werden?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin btn_SaveClick(Sender); FRM_IE_SearchbarEditor.Hide; vReallyClose:=1; end else begin FRM_IE_SearchbarEditor.Hide; vReallyClose:=1; end; end else begin FRM_IE_SearchbarEditor.Hide; vReallyClose:=1; end; end; |
Was kann das sein, als erstes dachte ich das es an einem Textfeld lag, dem ich sagte das es bei OnChange vReallyClose auf 0 setzen soll, aber auch nun mit nur RadionButtons und normalen Buttons mit OnClick prozeduren bleibt das Problem weiterhin bestehen.
Ich bin ratlos, was kann es noch sein?
Chatfix - Do 05.02.04 16:04
Was willst Du denn jetzt wissen?
Warum es nicht mir Boolean geht? (also theoretsich müsste es mit boolean gehen)
ich kann die genaue frage aus deinem text nicht rauslesen
Experience1986 - Do 05.02.04 16:06
Ich will wissen, warum die MessageDLg auftauacht obwohl das durch If() eigentlich ausgeschlossen ist.
Chatfix - Do 05.02.04 16:11
lass dir doch durch
Delphi-Quelltext
1:
| ShowMessage(IntToStr(vReallyClose)); |
vor dem IF mal ausgeben was in der variable drinsteht...
weil wenn 0 drin wäre dann würde auch der Dlg nicht kommen...
Experience1986 - Do 05.02.04 16:18
OK, OK, obwohl ich die vRallyClose oben bei den Globalen Vars auf 1 definiert habe, war bei showmessage doch 0, also habich am ende von Onshow des Formualrs vReallyClose nochmal auf 1 gestellt nun geht es.
Chatfix - Do 05.02.04 16:20
na bitte, nun kannst du auch wieder auf Boolean umstellen, dann sparst du bissl speicher^^
Experience1986 - Do 05.02.04 16:27
Soso, die Speicheroptimierung, ist es denn soo wichtig grade bei soetwas speicher optimiert zu coden?
Macht es einen soo großen unterschied?
Chatfix - Do 05.02.04 16:49
ob es wichtig ist musst du entscheiden, und in unserer rechner generation wirst du kaum einen unterschied merken...
wieviel man genau spart kann ich dir nicht sagen
EDIT: 700. Posting...
Gausi - Fr 06.02.04 23:35
Mal so ne Frage am Rande...: Seid ihr sicher, dass auf einem 32BitSystem eine Boolsche Varaiable nur 1Bit belegt? Hab mal irgendwo gehört, dass das intern auch 32Bit belegt, wegen Geschwindigkeitsvorteilen...kann mich dabei aber auch irren. Erscheint mir aber logisch.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!