Mały problem z poleceniem :)

0

Robie coś w stylu notatnika, i dałem taki oto kod dla polecenia "nowy":

begin

IF nota.Modified=false THEN BEGIN nota.ClearAll; opendialog1.FileName:=; savedialog1.FileName:=; status.Panels.Items[0].text:='Gotowy'; zapisz1.Enabled:=false; zapiszkopie1.enabled:=false; notatnik.Caption:=nazwa; nota.Modified:=false; END;

IF (nota.Modified=true) AND (opendialog1.FileName='') THEN
BEGIN
w:=messagebox(handle,'Tekst został zmieniony.' +#13 +#13 +'Czy chcesz zapisać zmiany?',nazwa,MB_ICONWARNING + MB_YESNOCANCEL);
IF w=IDYES THEN BEGIN savedialog1.Execute; IF savedialog1.FileName THEN BEGIN nota.Lines.SaveToFile(savedialog1.filename); nota.Clearall; opendialog1.FileName:=; savedialog1.FileName:=''; status.Panels.Items[0].text:='Gotowy'; zapisz1.Enabled:=false; zapiszkopie1.enabled:=false; notatnik.Caption:=nazwa; nota.Modified:=false; END; END;
IF w=IDNO THEN BEGIN nota.Clearall; opendialog1.FileName:=; savedialog1.FileName:=; status.Panels.Items[0].text:='Gotowy'; nota.Modified:=false; zapiszkopie1.enabled:=false; notatnik.Caption:=nazwa; zapisz1.Enabled:=false; END;
IF w=IDCANCEL THEN BEGIN exit; END;
END;

IF (nota.Modified=true) AND (opendialog1.FileName'') THEN
BEGIN
w:=messagebox(handle,PChar('Tekst w pliku ' +ExtractFileName(opendialog1.filename) +' został zmieniony.' +#13 +#13 +'Czy chcesz zapisać zmiany?'),nazwa,MB_ICONWARNING + MB_YESNOCANCEL);
IF w=IDYES THEN BEGIN savedialog1.filename:=opendialog1.FileName; Nota.Lines.SaveToFile(savedialog1.FileName); nota.Clearall; opendialog1.FileName:=; savedialog1.FileName:=; status.Panels.Items[0].text:='Gotowy'; zapisz1.Enabled:=false; zapiszkopie1.enabled:=false; notatnik.Caption:=nazwa; nota.Modified:=false; END;
IF w=IDNO THEN BEGIN nota.Clearall; opendialog1.FileName:=; savedialog1.FileName:=; status.Panels.Items[0].text:='Gotowy'; zapisz1.Enabled:=false; zapiszkopie1.enabled:=false; notatnik.Caption:=nazwa; nota.Modified:=false; END;
IF w=IDCANCEL THEN BEGIN exit; END;
END;

end;

gdzie "nota" to synmemo. Wszystko działa, ale nie uwzgledniłem sytuacji, kiedy plik juz istnieje. Program ma sie zapytac, czy go nadpisać. Czy ktoś wie jak przerobić w/w kod aby tak zrobić - ja sie juz w tym gubie.

Proszę o pomoc :)

0

O ***. Jak się wziąć za taki kod?? To już chyba łatwiej przeanalizować kod programu w edytorze szestastkowym.

0

If FileExists(OpenDialog.FileName) THEN //jest plik
ELSE //zgadnij ;]

Polecam jeszcze artykół:
http://www.4programmers.net/view.php?id=5

PS: wystarczyło pytanie bez kodu ;]

0

Mogleś troche ten kod sformatować, wiecej roboty ale ulatwia udzielanie odpowiedzi

0

Co do odpowiedzi wewr0e - to wiem. Ale jak to wsadzic w ten kod - probowałem i wtedy on zamyka opendialog. Pomocy!

0

hehe ja tam zrozumiałem jezeli nie otworzono pliku i tekst jest zmodyfikowny to wyswietl cos a reszta to ble ble ble ble ble ble ble ble ble ;P
zamiast takich instrukcji nie moges zrobic jezeli w ogole jest zmodyfikowany to neich zapisze i potem wątki opendialog lub savedialog?
zobacz przykład LOGOAPP tam to ci łądnie pokazują lub demo richedit!

0

Ale jak to wsadzic w ten kod - probowałem i wtedy on zamyka opendialog. Pomocy!

Człowieku oszalałeś?
Komu chce się to czytać sformatuj to, to pogadamy!

0

O ***. Jak się wziąć za taki kod?? To już chyba łatwiej przeanalizować kod programu w edytorze szestastkowym.

Nie mogę się z tym nie zgodzić.

0

A może po prostu daj overwriteprompt na true w opcjach savedialogu? :)

0

Sorry chłopaki -ale ja tak pisze - serio - kod oczywiście działa. Co do overwrite - ale własnie to ma być "bezpiueczny" program i pytać - zaraz wam to ładnie sformatuje !!

0

No to tak. Jest to polecenie gdy ktoś kliknie menu plik --> nowy. Oprócz tego mam jeszcze polecenia podobne (albo bardziej skomplikowane) na otówrz, zapisz, zapisz jako, zamknij. (Wszystkie sam robiłem).

BEGIN

IF nota.Modified=false THEN
BEGIN
nota.ClearAll;
opendialog1.FileName:='';
savedialog1.FileName:='';
status.Panels.Items[0].text:='Gotowy';
zapisz1.Enabled:=false;
zapiszkopie1.enabled:=false;
notatnik.Caption:=nazwa;
nota.Modified:=false;
END;

IF (nota.Modified=true) AND (opendialog1.FileName='') THEN
BEGIN

w:=messagebox(handle,'Tekst został zmieniony.' +#13 +#13 +'Czy chcesz zapisać zmiany?',nazwa,MB_ICONWARNING + MB_YESNOCANCEL);

IF w=IDYES THEN 

BEGIN
savedialog1.Execute;
IF savedialog1.FileName'' THEN
BEGIN nota.Lines.SaveToFile(savedialog1.filename);
nota.Clearall;
opendialog1.FileName:='';
savedialog1.FileName:='';
status.Panels.Items[0].text:='Gotowy';
zapisz1.Enabled:=false;
zapiszkopie1.enabled:=false;
notatnik.Caption:=nazwa;
nota.Modified:=false;
END;
END;

IF w=IDNO THEN
BEGIN
nota.Clearall;
opendialog1.FileName:='';
savedialog1.FileName:='';
status.Panels.Items[0].text:='Gotowy';
nota.Modified:=false;
zapiszkopie1.enabled:=false;
notatnik.Caption:=nazwa;
zapisz1.Enabled:=false;
END;

IF w=IDCANCEL THEN
BEGIN
exit;
END;
END;

IF (nota.Modified=true) AND (opendialog1.FileName'') THEN
BEGIN
w:=messagebox(handle,PChar('Tekst w pliku ' +ExtractFileName(opendialog1.filename) +' został zmieniony.' +#13 +#13 +'Czy chcesz zapisać zmiany?'),nazwa,MB_ICONWARNING + MB_YESNOCANCEL);

IF w=IDYES THEN
BEGIN
savedialog1.filename:=opendialog1.FileName;
Nota.Lines.SaveToFile(savedialog1.FileName);
nota.Clearall; opendialog1.FileName:='';
savedialog1.FileName:='';
status.Panels.Items[0].text:='Gotowy';
zapisz1.Enabled:=false;
zapiszkopie1.enabled:=false;
notatnik.Caption:=nazwa;
nota.Modified:=false;
END;

IF w=IDNO THEN BEGIN
nota.Clearall;
opendialog1.FileName:='';
savedialog1.FileName:='';
status.Panels.Items[0].text:='Gotowy';
zapisz1.Enabled:=false;
zapiszkopie1.enabled:=false;
notatnik.Caption:=nazwa;
nota.Modified:=false;
END;

IF w=IDCANCEL THEN
BEGIN
exit;
END;
END;

END;

I wszystko jasne :)

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