Avatar billede weis Nybegynder
01. maj 2001 - 15:43 Der er 8 kommentarer og
1 løsning

Gem et memo felt

Hej...

Jeg har på min mainform to Memo felter. Og jeg skal bruge SaveDialog til at gemme indholdet i Memo2 på en fil (Ved klik på Gem som), med et fil navn jeg selv laver.
Jeg skal selvfølgelig også have det sådan at ved tryk på Gem så gemmer den filens ændringer. Og ved luk af programmet skal der også komme en meddelse om indholdet skal gemmes...?

Andreas
Avatar billede borrisholt Novice
01. maj 2001 - 15:46 #1
Memo1.lines.saveToFile er den funktione du skal bruge .. Resten må du nemt selv kunne sjusse dig frem til.

Jens B http://fotx/borisholt
Avatar billede weis Nybegynder
01. maj 2001 - 15:50 #2
Vil du ikke nok skrive resten. Jeg har ikke en anelse om hvad der ellers skal stå... Og husk nu alle tre ting der skal være på en gang...
Avatar billede snowball Novice
01. maj 2001 - 16:17 #3
procedure TForm1.Button1Click(Sender: TObject);
begin
  If Savedialog1.FileName = \'\' then begin
    SaveDialog1.Execute;
    Memo2.Lines.SaveToFile(SaveDialog1.Filename);
  end
  else
    Memo2.Lines.SaveToFile(SaveDialog1.Filename);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if MessageDlg(\'Gem tekst i Memo2 til fil?\',
    mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin
      If Savedialog1.FileName = \'\' then begin
        SaveDialog1.Execute;
        Memo2.Lines.SaveToFile(SaveDialog1.Filename);
      end
      else
        Memo2.Lines.SaveToFile(SaveDialog1.Filename);
  end
end;

Du kan også hente eksemplet her:

http://home1.inet.tele.dk/j-cgeert/gemsom.zip

Snowball
Avatar billede weis Nybegynder
01. maj 2001 - 16:46 #4
>> snowball

Det hele virker næsten. Det er sådan at når SaveDialog vinduet er åbnet og man annuller så kommer meddelsen \"Cannot create file\" Det kunne jeg godt tænke mig at få væk igen.
Avatar billede snowball Novice
01. maj 2001 - 16:49 #5
Ja OK. Den er ikke 100% idiotsikker :)

Laver lige lidt om på den ;)

Snowball
Avatar billede snowball Novice
01. maj 2001 - 16:54 #6
Sådan !

procedure TForm1.Button1Click(Sender: TObject);
begin
  If Savedialog1.FileName = \'\' then begin
    SaveDialog1.Execute;
    If Savedialog1.FileName = \'\' then
      MessageDlg(\'Du har ikke valgt et filnavn.\'+#10#13#10#13+\'Fil ikke gemt!\', mtError, [mbOk], 0)
    else
      Memo2.Lines.SaveToFile(SaveDialog1.Filename);
  end
  else
    Memo2.Lines.SaveToFile(SaveDialog1.Filename);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if MessageDlg(\'Gem tekst i Memo2 til fil?\',
    mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin
      If Savedialog1.FileName = \'\' then begin
        SaveDialog1.Execute;
        If Savedialog1.FileName = \'\' then
          MessageDlg(\'Du har ikke valgt et filnavn.\'+#10#13#10#13+\'Fil ikke gemt!\', mtError, [mbOk], 0)
        else
          Memo2.Lines.SaveToFile(SaveDialog1.Filename);
      end
      else
        Memo2.Lines.SaveToFile(SaveDialog1.Filename);
      end
end;

Snowball
Avatar billede martinlind Nybegynder
02. maj 2001 - 09:20 #7
wies >> Hvis du har nogen intention om at lære at kode, så tror jeg du skal lære at prøve at løse fejlene selv før du kaster dig over os her på eksperten. ( bare et godt råd )
Avatar billede easysoft_studios Nybegynder
13. maj 2001 - 20:16 #8
Sejt! Jeg har sgu lige siddet og lavet det du bekriver, og for mig virke det jeg har skrevet!
Værs\'go!

var
  AFilename: string; //Denne skal opdateres hver gang filen ændres!!

procedure TMainForm.FormShow(Sender: TObject);
begin
  AFileName := \'Nyt Tekstdokument\';
end;

procedure TMainForm.SaveChanges;
var
  W: Integer;
  WMessage: string;
begin
  WMessage := \'Gem ændringerne i \' + AFileName;

  W := Application.MessageBox(PChar(WMessage), \'Gem\', MB_YESNOCANCEL + MB_ICONINFORMATION);
  case W of
    ID_YES: SaveItem.OnClick(Self);
    ID_NO: Editor.Modified := False;
    ID_CANCEL: Abort;
  end;
end;

procedure TMainForm.SaveItemClick(Sender: TObject);
begin
  if ((FileExists(AFileName) = False) xor
    (AFileName = \'Nyt Tekstdokument\')) then begin
    SaveAsItem.OnClick(Self);
  end
  else begin
    Editor.Lines.SaveToFile(AFileName);
    Editor.Modified := False;
  end;
end;

procedure TMainForm.SaveAsItemClick(Sender: TObject);
var
  SaveResp: Integer;
begin
  if SaveDialog1.Execute then begin
    Editor.Lines.SaveToFile(SaveDialog1.FileName);
    AFileName := SaveDialog1.FileName;
    FormCaption.Caption := \'Note [\' + ExtractFileName(SaveDialog1.FileName) + \']\';
    Editor.Modified := False;
  end;
end;

procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if Editor.Modified then
    SaveChanges;

  if Editor.Modified then Abort;
end;

Hvis du skal tjekke begge Memo\'er for ændringer laver du to SaveChanges, to SaveAs osv...

Hvis du ikke kan få det til at virke, kan jeg sende det til dig som demo project.
Avatar billede easysoft_studios Nybegynder
27. juli 2001 - 03:06 #9
snowballs eksempel undersøger ikke engang, om der ER ændringer, og har et rigtig kedeligt \"hul\", hvis man kommer til at klikke på Annuller, I SaveDialog\'en, når man lukker programmet!

Prøv lige at tænke over det!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester