Pomoc z notatnikiem

0

Witam.
Mam pewien problem : otóż, korzystając z kompendium napisałem prosty notatnik w Delphi 7. Jednak mam kilka pytań.
-Jak zrobić, aby po naciśnięciu przycisku "Zakończ" lub "Nowy", wyświetlał się komunikat message box, który będzie pytać czy na pewno chcę zamknąć program przed zapisem, a jeśli dam nie to aby odwoływał do zapisu.
-Mimo ustawienia filtrów w obu komponentach (save i open) nadal podczas zapisywania pliku program zapisuje go bez rozszerzenia.
Dzięki z góry za pomoc

Link do programu : http://www.sendspace.pl/file/636fc89abf1cccb77565bb8

0

Tam gdzie tworzysz nowy dokument zrób:

procedure TfGlowny.Nowy1Click(Sender: TObject);
begin
  if Edytor.Modified then
  begin
    case Application.MessageBox('Czy chcesz zapisać zmiany?', PAnsiChar(Application.Title),
      MB_YESNOCANCEL or MB_ICONQUESTION) of
    ID_YES:
      begin
        //tu zapis
      end;
    IDCANCEL: exit;
    end;
  end;
  Nazwa_pliku:='';
  Edytor.Lines.Clear;
  Edytor.Modified:= False;
end;

W zdarzeniu OnCloseQuery:

procedure TfGlowny.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if Edytor.Modified then
  begin
    case Application.MessageBox('Czy chcesz zapisa zmiany?', PAnsiChar(Application.Title),
      MB_YESNOCANCEL or MB_ICONQUESTION) of
    ID_YES:
      begin
         //tu zapis
      end;
    IDCANCEL: CanClose:= False;
    end;
  end;
end;

W SaveDialog ustaw DefaultExt na txt

0

gdzie dać do OnCloseQuery? tnz. nie mam go wśród komponentów

0

sorki, za to głupie pytanie, i za double post >.> jednak po zrobieniu wszystkiego wyskakuje mi ten błąd : http://img33.imageshack.us/img33/4679/bladak.png

0

Pokaż jak to teraz wygląda po przeróbkach. Komunikat pojawia się ponieważ próbujesz zapisać plik pod nazwą "".

0
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, StdCtrls;

type
  TfGlowny = class(TForm)
    Edytor: TMemo;
    MainMenu1: TMainMenu;
    Plik1: TMenuItem;
    Otwrz1: TMenuItem;
    Zapisz1: TMenuItem;
    Zapiszjako1: TMenuItem;
    Zakocz1: TMenuItem;
    Edycja1: TMenuItem;
    Kopiuj1: TMenuItem;
    Wytnij1: TMenuItem;
    Wklej1: TMenuItem;
    Zaznaczwszystko1: TMenuItem;
    Usun1: TMenuItem;
    PopupMenu1: TPopupMenu;
    Edycja2: TMenuItem;
    Kopiuj2: TMenuItem;
    Wytnija1: TMenuItem;
    Wklej2: TMenuItem;
    Za1: TMenuItem;
    Usu1: TMenuItem;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    Nowy1: TMenuItem;
    procedure Nowy1Click(Sender: TObject);
    procedure Zapiszjako1Click(Sender: TObject);
    procedure Otwrz1Click(Sender: TObject);
    procedure Zakocz1Click(Sender: TObject);
    procedure Kopiuj1Click(Sender: TObject);
    procedure Wklej1Click(Sender: TObject);
    procedure Wytnij1Click(Sender: TObject);
    procedure Zaznaczwszystko1Click(Sender: TObject);
    procedure Usun1Click(Sender: TObject);
    procedure Zapisz1Click(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  private
  

  public
    Nazwa_pliku : String;
  end;

var
  fGlowny: TfGlowny;

implementation

{$R *.dfm}

procedure TfGlowny.Nowy1Click(Sender: TObject);
begin
  if Edytor.Modified then
  begin
    case Application.MessageBox('Czy chcesz zapisać zmiany?', PAnsiChar(Application.Title),
      MB_YESNOCANCEL or MB_ICONQUESTION) of
    ID_YES:
      begin
        Nazwa_pliku:=SaveDialog1.FileName;
    Edytor.Lines.SaveToFile(Nazwa_pliku);
      end;
    IDCANCEL: exit;
    end;
  end;
  Nazwa_pliku:='';
  Edytor.Lines.Clear;
  Edytor.Modified:= False;
end;

procedure TfGlowny.Zapiszjako1Click(Sender: TObject);
begin
  if SaveDialog1.Execute then
  begin
    Nazwa_pliku:=SaveDialog1.FileName;
    Edytor.Lines.SaveToFile(Nazwa_pliku);
  end;
end;

procedure TfGlowny.Otwrz1Click(Sender: TObject);
begin

  if OpenDialog1.Execute then
  begin
    Nazwa_pliku:=OpenDialog1.FileName;
    Edytor.Lines.LoadFromFile(Nazwa_pliku);
  
end;
end;

procedure TfGlowny.Zakocz1Click(Sender: TObject);
begin
Close;
end;

procedure TfGlowny.Kopiuj1Click(Sender: TObject);
begin
  Edytor.CopyToClipboard;
end;

procedure TfGlowny.Wklej1Click(Sender: TObject);
begin
  Edytor.PasteFromClipboard;
end;

procedure TfGlowny.Wytnij1Click(Sender: TObject);
begin
  Edytor.CutToClipboard;
end;

procedure TfGlowny.Zaznaczwszystko1Click(Sender: TObject);
begin
  Edytor.SelectAll;
end;

procedure TfGlowny.Usun1Click(Sender: TObject);
begin
Edytor.SelText := '';
end;

procedure TfGlowny.Zapisz1Click(Sender: TObject);
begin
    if Nazwa_pliku<>'' then Edytor.Lines.SaveToFile(Nazwa_pliku)
                       else Zapiszjako1Click(Self);
end;




procedure TfGlowny.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if Edytor.Modified then
  begin
    case Application.MessageBox('Czy chcesz zapisa zmiany?', PAnsiChar(Application.Title),
      MB_YESNOCANCEL or MB_ICONQUESTION) of
    ID_YES:
      begin
         Nazwa_pliku:=SaveDialog1.FileName;
    Edytor.Lines.SaveToFile(Nazwa_pliku);
      end;
    IDCANCEL: CanClose:= False;
    end;
  end;
end;

end. 

To cały kod programu. Za pomoc byłbym wdzięczny ; )

0
      begin
         Nazwa_pliku:=SaveDialog1.FileName;
         Edytor.Lines.SaveToFile(Nazwa_pliku);
      end;

Tutaj pobierasz nazwę pliku z SaveDialog'u, ale nie wiesz co w nim jest - może wywołaj najpierw dialog lub sprawdź czy nie jest ""

0

czyli jak to napisać?

0

tak jak w Zapiszjako

0

"Error in module Unit1 : Declaration of class Ttf Glowny is missing or incorrect" A forma nazywa się TfGlowny a nie TtfGlowny..

0

Zobacz czy gdzieś przez przypadek nie wpisałeś spacji

0

Error in module Unit1 : Declaration of class Ttf Glowny is missing or incorrect
Przecież ten błąd ewitentnie wskazuje na niepoprawny identyfikator klasy - może zacznij się stosować do błędów kompilacji i najpierw je analizuj, a potem zadawaj pytania na forum; Jak nie znasz na tyle angielskiego to możesz posłużyć się jakimkolwiek tłumaczem on-line, np. Google Translator.

1 użytkowników online, w tym zalogowanych: 0, gości: 1