Autor Beitrag
maier1990
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 13.03.10 02: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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Sa 13.03.10 03:07 
Hallo,

jede dieser großen Textkomponenten (RichEdit, Memo, SynEdit usw) haben die Eigenschaft Modified. Also mit

ausblenden Delphi-Quelltext
1:
2:
  if SynEdit.Modified then
    //was auch immer


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



BeitragVerfasst: Sa 13.03.10 04:43 
Ich Benutze jezt diesen Code:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Sa 13.03.10 05: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



BeitragVerfasst: Sa 13.03.10 05:39 
Könnt ihr mir pls diesen Code verbessern?

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 918
Erhaltene Danke: 158

Win 10
VS 2013, VS2015
BeitragVerfasst: Sa 13.03.10 09: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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Sa 13.03.10 10:48 
hi, versuchs mal so!
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
if SynEdit1.Modified then
begin
  if MessageDlg('Daten wurden geändert...! Speichern ?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
     SynEdit1.SaveToFile(Dateiname);//wobei der Dateiname und Ort vom laden in synedit bekannt sein sollte!
 
  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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 573

WIN XP/2000 & 7Prof (Familie:Win95,Win98)

BeitragVerfasst: Sa 13.03.10 12:01 
Also ich denke mal, dass es so in etwa gehen müsste:
ausblenden 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;


Edit:
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



BeitragVerfasst: Sa 13.03.10 13:40 
Oke das hier ist jetzt mein Code:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: Sa 13.03.10 13:42 
Das geht mit SaveDialog1.execute ...

_________________
Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
ALF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Sa 13.03.10 13: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
ausblenden 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 user profile iconffgorcky 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



BeitragVerfasst: Sa 13.03.10 14:03 
Wen ich das von user profile iconffgorcky 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Sa 13.03.10 14:12 
Das kommt von c+p :evil:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Sa 13.03.10 14: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



BeitragVerfasst: Sa 13.03.10 17:23 
Anders Hobby suchen hmm Nö
Grundlagen Lernen no time leider
aber ich habs geschafft geht alles
bole
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 107
Erhaltene Danke: 15

win 10

BeitragVerfasst: Sa 13.03.10 17: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



BeitragVerfasst: Sa 13.03.10 17:40 
Ja vllt stimmts auch.
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Sa 13.03.10 17:43 
Antort:
Keine Zeit um Grundlagen zu lernen, lesen und verstehen
würde ja sonst gern helfen :rofl:
Gruss Alf

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
ffgorcky
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 573

WIN XP/2000 & 7Prof (Familie:Win95,Win98)

BeitragVerfasst: Mi 24.03.10 22: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:
ausblenden 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: user profile iconALF, 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...