| Autor | Beitrag | 
| maier1990 Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Sa 13.03.10 01:10 
 
Hallo
Ich hab es jetzt hinbekommen das beim Schließen abgefragt wird ob man Speichern will oder nicht, allerdings kommt das immer. Ich will wen beim Synedit Text was geändert wurde das es dann kommt. Ist das möglich?
 lg
 | 
|  | 
| elundril 
          Beiträge: 3747
 Erhaltene Danke: 123
 
 Windows Vista, Ubuntu
 Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
 
 | 
Verfasst: Sa 13.03.10 02:07 
 
Hallo,
 jede dieser großen Textkomponenten (RichEdit, Memo, SynEdit usw) haben die Eigenschaft Modified. Also mit 
 		                       Delphi-Quelltext 
 									| 1:2:
 
 |   if SynEdit.Modified then
 |  kannst du abfragen ob der Text verändert wurde (Beim speichern natürlich immer Modified auf false setzen, sonst bringts ja nix.   )
 lg elundril_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
 | 
|  | 
| maier1990 Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Sa 13.03.10 03:43 
 
Ich Benutze jezt diesen Code:
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 
 | procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);begin
 if SynEdit1.Modified then
 
 if saveDialog1.Execute
 
 then ShowMessage('Datei gespeichert unter : '+saveDialog1.FileName)
 else ShowMessage('Speichern nicht erfolgreich');
 |  Sobald in Synedit was geändert wurde, und ich Beenden will kommt zwar der Speicher Dialog und die Message das Erfolgreich gespeichert wurde, aber es Speichert nichts ab.
 Lg | 
|  | 
| Xentar 
          Beiträge: 2077
 Erhaltene Danke: 2
 
 Win XP
 Delphi 5 Ent., Delphi 2007 Prof
 
 | 
Verfasst: Sa 13.03.10 04:14 
 
Du solltst vielleicht auch was speichern, statt einfach nur die Meldung anzuzeigen..
 Edit:
 Ich kenn die Komponente nicht, aber sowas wie SynEdit.SaveToFile  oder SynEdit.Lines.SaveToFile  oder so gibt es bestimmt...
 _________________ PROGRAMMER: A device for converting coffee into software.
 | 
|  | 
| maier1990 Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Sa 13.03.10 04:39 
 
Könnt ihr mir pls diesen Code verbessern?
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 
 | procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);var Dateiname : string;
 begin
 if SynEdit1.Modified then
 Dateiname := SaveDialog1.FileName;
 SynEdit1.Lines.SaveToFile(Dateiname);
 if saveDialog1.Execute
 
 then ShowMessage('Datei gespeichert unter : '+saveDialog1.FileName)
 else ShowMessage('Speichern nicht erfolgreich');
 |  Ich check es nimmer    Da kommt immer eine Fehler meldung das der angegebene Pfad nicht gefunden werden kann | 
|  | 
| jfheins 
          Beiträge: 918
 Erhaltene Danke: 158
 
 Win 10
 VS 2013, VS2015
 
 | 
Verfasst: Sa 13.03.10 08:24 
 
Es ist eben nur fast sinnvoll erst zu speichern (.SaveToFile) und dann erst abzufragen, wohin gespeichert werden soll (.execute)
 Btw.: Wenn du mal suchst, findest du ganz bestimmt Beispiele für den korrekten Gebrauch von dem Savedialog.
 | 
|  | 
| ALF 
          Beiträge: 1085
 Erhaltene Danke: 53
 
 WinXP, Win7, Win10
 Delphi 7 Enterprise, XE
 
 | 
Verfasst: Sa 13.03.10 09:48 
 
hi, versuchs mal so!
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 
 | if SynEdit1.Modified thenbegin
 if MessageDlg('Daten wurden geändert...! Speichern ?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
 SynEdit1.SaveToFile(Dateiname);
 SynEdit1.Modified := false;
 
 end;
 |  Wobei man dies auch zum zwischenspeichern nehmen kann! (eigene Procedure)
 Gruss ALf_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg,  währe dieses Forum leer!
 | 
|  | 
| ffgorcky 
          Beiträge: 573
 
 WIN XP/2000 & 7Prof (Familie:Win95,Win98)
 
 
 | 
Verfasst: Sa 13.03.10 11:01 
 
Also ich denke mal, dass es so in etwa gehen müsste:
 		Edit:                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 
 | procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);var Dateiname : string;
 begin
 if SynEdit1.Modified then
 begin
 if MessageDlg('Sie haben etwas geändert'+#13#10+' - also dies Datei neu abspeichern ?', mtConfirmation, [mbYes, mbNo], 0, mbYes) = mrYes then
 if SaveDialog1.execute then
 begin
 Dateiname := SaveDialog1.FileName;
 SynEdit1.Lines.SaveToFile(Dateiname);
 ShowMessage('Datei gespeichert unter : '+saveDialog1.FileName);
 end
 else
 ShowMessage('Speichern wegen Abbruch nicht erfolgreich');
 end;
 end;
 |  Du könntest dann auch in Deinen else -Zweig noch ein Action:=caNone;  mit einfügen, wenn Du nicht möchtest, dass sich das Programm dann so einfach schließt, wenn man den Speichern-Dialog einfach so abgebrochen hat. Dann müsstest Du die beiden Befehle aber natürlich in begin  und end;  einrahmen. | 
|  | 
| maier1990 Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Sa 13.03.10 12:40 
 
Oke das hier ist jetzt mein Code:
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 
 | procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);var Dateiname: string;
 begin
 if SynEdit1.Modified then
 if MessageDlg('Daten wurden geändert...! Speichern ?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
 else
 SynEdit1.Lines.SaveToFile(Dateiname);
 
 SynEdit1.Modified := false;
 
 end;
 |  Wenn ich auf Beenden geh kommt nichts nur wen was verändert ist.
 Aber wen ich dan auf ja klicken will kommt immer:
 Das System kann den angegebenen Dateipfad nicht finden.
 Wie mach ich es das dan das Speichern unter Feld kommt?
 lg | 
|  | 
| platzwart 
          Beiträge: 1054
 Erhaltene Danke: 78
 
 Win 7, Ubuntu 9.10
 Delphi 2007 Pro, C++, Qt
 
 | 
Verfasst: Sa 13.03.10 12:42 
 
Das geht mit SaveDialog1.execute ... _________________ Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
 | 
|  | 
| ALF 
          Beiträge: 1085
 Erhaltene Danke: 53
 
 WinXP, Win7, Win10
 Delphi 7 Enterprise, XE
 
 | 
Verfasst: Sa 13.03.10 12:47 
 
schau mal was ich geschrieben habe!!!!
 	  | Zitat: |  	  | //wobei der Dateiname und Ort vom laden in synedit bekannt sein sollte! 
 | 
 und Du löschtst den Dateiename in
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 
 | procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);var Dateiname: string;
 begin
 |  was soll man dazu sagen!
 oder schau dir das von   ffgorcky  an!
 Gruss Alf_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg,  währe dieses Forum leer!
 | 
|  | 
| maier1990 Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Sa 13.03.10 13:03 
 
Wen ich das von   ffgorcky  nimm kommt beim Compilieren immer
 [Error] es.pas(8522): Too many actual parameters
 [Error] es.pas(8533): Statement expected but 'PROCEDURE' found
 [Fatal Error] helper.dpr(272): Could not compile used unit 'es.pas' | 
|  | 
| ALF 
          Beiträge: 1085
 Erhaltene Danke: 53
 
 WinXP, Win7, Win10
 Delphi 7 Enterprise, XE
 
 | 
Verfasst: Sa 13.03.10 13:12 
 
Das kommt von c+p    ohne zu lesen und zu verstehen 
 schau dir den Dialog an!!_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg,  währe dieses Forum leer!
 | 
|  | 
| Blackheart666 
          Beiträge: 2195
 
 XP
 D3Prof, D6Pers.
 
 | 
Verfasst: Sa 13.03.10 13:23 
 
Wie man an diesem und den anderen Threads von Meier1990 sieht fehlem ihm sämtliche Grundlagen. 
Meist haben sich aber Mitglieder gefunden die ihm Copy & Paste Code zur Verfügung stellen.
 Am besten würde helfen nur Stichworte in den Raum zu stellen, das würde dafür sorgen mal die Delphi Hilfe zu benutzen und Eigeninitiative zu zeigen.
 Mein Rat an Meier1990, entweder Grundlagen lernen oder ein anderes Hobby zulegen.
 | 
|  | 
| maier1990 Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Sa 13.03.10 16:23 
 
Anders Hobby suchen hmm Nö
Grundlagen Lernen no time leider
 aber ich habs geschafft geht alles
 | 
|  | 
| bole 
          Beiträge: 107
 Erhaltene Danke: 15
 
 win 10
 
 
 | 
Verfasst: Sa 13.03.10 16:35 
 
ich denke Du würdest sogar Zeit sparen wenn Du erst die Grundlagen lernst. Deine Programme wären in einem Bruchteil der Zeit fertig! _________________ ein programm macht nicht das was du willst sondern was du schreibst!
 | 
|  | 
| maier1990 Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Sa 13.03.10 16:40 
 
Ja vllt stimmts auch.
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 
 | procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);var Dateiname : string;
 ClickedBtn: Word;
 begin
 if SynEdit1.Modified then
 begin
 ClickedBtn := MessageDlg('Wollen sie ihr Script Speichern?', mtConfirmation, [mbAbort, mbYes, mbNo], 0);
 if ClickedBtn = id_yes then
 if SaveDialog1.execute then
 begin
 Dateiname := SaveDialog1.FileName;
 SynEdit1.Lines.SaveToFile(Dateiname);
 ShowMessage('Datei gespeichert unter : '+saveDialog1.FileName);
 end
 else
 ShowMessage('Speichern wegen Abbruch nicht erfolgreich');
 end
 if ClickedBtn := id_abort then
 begin
 Form11.ShowModal;
 end;
 |  Wieso geht der Abort Button nicht?
 Lg | 
|  | 
| ALF 
          Beiträge: 1085
 Erhaltene Danke: 53
 
 WinXP, Win7, Win10
 Delphi 7 Enterprise, XE
 
 | 
Verfasst: Sa 13.03.10 16:43 
 
Antort:
Keine Zeit um Grundlagen zu lernen, lesen und verstehen würde ja sonst gern helfen    Gruss Alf_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg,  währe dieses Forum leer!
 | 
|  | 
| ffgorcky 
          Beiträge: 573
 
 WIN XP/2000 & 7Prof (Familie:Win95,Win98)
 
 
 | 
Verfasst: Mi 24.03.10 21:37 
 
Wenn Du Dein Programm weiter laufen lassen möchtest, wenn Du den Abort-Button gedrückt hast, dann müsstest Du das doch nur entsprechend abfragen: 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 
 |   if SaveDialog1.execute then
 if ClickedBtn = id_yes then
 begin
 Dateiname := SaveDialog1.FileName;
 SynEdit1.Lines.SaveToFile(Dateiname);
 ShowMessage('Datei gespeichert unter : '+saveDialog1.FileName);
 end
 else if ClickedBtn = id_no then
 begin
 ShowMessage('Sie wollten wohl doch nicht speichern...');
 end
 else if ClickedBtn := id_abort then
 begin
 Form11.ShowModal;
 end;
 |   denke mal, dass [us]ALF[/us] dass so gesagt hat, weil Du in Deiner IF -Abfrage Deine begin  und end  nicht richtig gesetzt hast.
 Vor dem ShowMessage('Speichern wegen Abbruch nicht erfolgreich'); fehlt meiner Ansicht nach bei Deinem Quelltext noch ein begin .
 ---------------------------------------------------------------------------------------------------------------------------------------------
 Wobei ich jetzt so gerade überlege, dass bei einem abort doch Der SaveDialog nicht als executed gilt - oder irre ich da jetzt?
PS:  ALF , ich hoffe mal, dass er diese Frage jetzt durchs selbst in Bücher einlesen sowieso schon beantworten konnte, weil wir ihn so eine Zeit da jetzt "im Stich gelassen" haben - aber das Thema ist ja immer noch offen... | 
|  |