Edytor MDI i Zapisz jako - coś nie działa :/

0

Witam :) W swoim edytorrze na oknach MDI mam oczywiście opcję Zapisz jako... Zacznijmy może od kodu :)

procedure Tfrm_main.tbPlikZapiszjakoClick(Sender: TObject);
begin
  if Zapisz.Execute then
  begin
    (ActiveMDIChild as Tfrm_edytor).Edytor.Lines.SaveToFile(Zapisz.FileName);
    tbPlikZapiszClick(Sender);
  end; 
end;

I tak: ta procedurka zapisuje mi zawartość SynEdita o nazwie Edytor do pliku (tworzy go) o nazwie podanej w SaveDialogu (Zapisz). To jest oczywiste. Ale chciałbym, aby po zapisaniu plik ten otwierał się, tj. przec chwilą zapisana jego wersja, a ta która jest tę "starą wersją" została zamknieta, a otworzył się ten dokument przed chwila zapisany :) Próbowałem może podmienić FileName w OpenDialogu (name: Otworz) na Zapisz.FileName. Czyli taka wersja:

procedure Tfrm_main.tbPlikZapiszjakoClick(Sender: TObject);
begin
  if Zapisz.Execute then
  begin
    (ActiveMDIChild as Tfrm_edytor).Edytor.Lines.SaveToFile(Zapisz.FileName);
    Otworz.FileName :=Zapisz.FileName;
    tbPlikZapiszClick(Sender);
  end; 
end;

Oczywiście nie działa :[ Miałem jeszcze inny pomysł - zamknąć aktywne okno i otworzyć ten przec chwilą utworzony. Niestety w OnCloseQuery formy z kontrolką edycyjną Edytor (frm_edytor) jest procedura wyświetlająca alerta a'la "Czy chcesz zapisać zmiany"... :/

Mam nadzieję, że mnie zrozumieliście :) I jak to teraz mam zrobić? [browar]

0
Coldpeer napisał(a)

Ale chciałbym, aby po zapisaniu plik ten otwierał się,

Gdzie żeby się otwierał?

//DOPISANE
Wydaje mi się, że twój program będą pisali wszyscy, tylko nie ty. Cała przyjemność w tym, żeby zrobić to samemu.

0
berl napisał(a)
Coldpeer napisał(a)

Ale chciałbym, aby po zapisaniu plik ten otwierał się,

Gdzie żeby się otwierał?

//DOPISANE
Wydaje mi się, że twój program będą pisali wszyscy, tylko nie ty. Cała przyjemność w tym, żeby zrobić to samemu.

Eee... Piszę go ja :) Tak, masz rację - cała przyjemność żeby zrobić to samemu ;) Tylko, że ja już próbuję i próbuję i tego zrobić nie mogę :/ Jak czegoś nie wiem to pytam przecież :) Dobra, ale zostawmy to na bok :)

Chcę żeby ten dokument zastąpił ten o starej nazwie, tj. np. mam otwarty plik lol.php, biorę "Zapisz jako..." i zapisuję jako rotfl.php. Tylko że teraz w zamian lol.php pojawia się rotfl.php a lol.php oczywiście znika.
...a nie zamknął się lol.php, a otworzył za chwilę rotfl.php. Dlaczego tak nie mogę? Dlatego że w frm_edytor mam w OnCloseQuery komunikat, w którym jeśli wystąpiły zmiany w Edytor, pyta czy zapisać zmiany itp.

Hmm... A może dać na początku procedury pod tbPlikZapiszjako dać:

(ActoveMDIChild as Tfrm_edytor).Edytor.modified := false;

albo po prostu wstawić tbPlikZapiszClick(sender); i wtedy nasz przykładowy lol.php będzie zapisany i wtedy nie wyświetli się ten komunikat... Pomyślę jeszcze nad tym :)

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