Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 390

Раздел: Delphi » Прочее
/ вопрос открыт /

Здравствуйте. Скажите, пожалуйста, можно сделать так, что бы мои окна (если можно то все окна) сворачивались на мою форму. И ещё я уже задавал вопрос (как в Memo1 сохранить как...), а если я работаю с текстом в Memo1,
как мне просто сохранить, то есть нажал сохранить, работаю дальше, опять сохранил, как в Notepad, чтобы не указывать путь.

Толков Геннадий Викторович Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Толков Геннадий Викторович (статус: Посетитель)
Вопрос отправлен: 10 марта 2007, 02:21
Состояние вопроса: открыт, ответов: 2.

Ответ #1. Отвечает эксперт: Роман

Здравствуйте, Толков Геннадий Викторович!Ну имя то так или иначе прийдётся указывать,другое дело что можно скажем условится,что если имя и путь сохранения не указан то будем сохранять всегда в некой папке по умолчанию в часности в примере (при нажатии save) это:C:\Documents and Settings\Rem_si\Рабочий стол,т\е по умолчанию сохраняем на рабочем столе с именем document.txt. А когда мы укажем путь в save as то вдальнейшем при нажатии кнопки save сохранение будет происходить по указанному пути.

Приложение:
  1. unit Unit1;
  2. interface
  3. uses
  4. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5. Dialogs, StdCtrls;
  6. type
  7. TForm1 = class(TForm)
  8. Button1: TButton;
  9. Memo1: TMemo;
  10. Button2: TButton;
  11. SaveDialog1: TSaveDialog;
  12. procedure Button1Click(Sender: TObject);
  13. procedure Button2Click(Sender: TObject);
  14. procedure FormCreate(Sender: TObject);
  15. private
  16. { Private declarations }
  17. public
  18. { Public declarations }
  19. end;
  20. var
  21. Form1: TForm1;
  22. savePath:string;
  23. implementation
  24. //!!!!!!!!!!!!!!!!!!!!!!!!!!
  25. uses
  26. ActiveX, ShlObj;
  27. //!!!!!!!!!!!!!!!!!!!!!!!!!!
  28. {$R *.dfm}
  29.  
  30. function GetDeskTopPath : string;
  31. var
  32. shellMalloc: IMalloc;
  33. ppidl: PItemIdList;
  34. PerDir: string;
  35. begin
  36. ppidl := nil;
  37. try
  38. if SHGetMalloc(shellMalloc) = NOERROR then
  39. begin
  40. SHGetSpecialFolderLocation(Form1.Handle, CSIDL_DESKTOP, ppidl);
  41. SetLength(Result, MAX_PATH);
  42. if not SHGetPathFromIDList(ppidl, PChar(Result)) then
  43. raise exception.create('SHGetPathFromIDList failed : invalid pidl');
  44. SetLength(Result, lStrLen(PChar(Result)));
  45. end;
  46. finally
  47. if ppidl <> nil then
  48. shellMalloc.free(ppidl);
  49. end;
  50. end;
  51. /////////////////////////////////////////////////
  52. procedure TForm1.FormCreate(Sender: TObject);
  53. begin
  54. savePath:=GetDeskTopPath+'document.txt'
  55. end;
  56. /////// save ////////////////////////
  57. procedure TForm1.Button1Click(Sender: TObject);
  58. begin
  59. memo1.Lines.SaveToFile(savePath);
  60. end;
  61. //////////// save as... ////////////////////
  62. procedure TForm1.Button2Click(Sender: TObject);
  63. begin
  64. if savedialog1.Execute then
  65. begin
  66. savePath:= savedialog1.FileName ;
  67. memo1.Lines.SaveToFile(savePath);
  68. end;
  69. end;
  70.  
  71. end.


Ответ отправил: Роман (статус: 5-ый класс)
Время отправки: 10 марта 2007, 04:13
Оценка за ответ: 5

Ответ #2. Отвечает эксперт: Spawn

Здравствуйте, Толков Геннадий Викторович! Можно сделать так, при первом сохранении записываем в переменную имя файла, а при послеюдующих сохранениях проверяем, если переменная "не пуста", то сохраняем в тот файл, что указан в переменной, если же "пуста", то выводим диалог сохранения.
Пример в приложении.

Приложение:
  1. private
  2. { Private declarations }
  3. Filename: String;
  4.  
  5. procedure TForm1.Button1Click(Sender: TObject);
  6. begin
  7. if (Filename <> '') and (FileExists(Filename)) then
  8. memo1.Lines.SaveToFile(Filename)
  9. else
  10. if SaveDialog1.Execute then
  11. begin
  12. memo1.Lines.SaveToFile(SaveDialog1.FileName);
  13. Filename:= SaveDialog1.Filename;
  14. end;
  15. end;


Ответ отправил: Spawn (статус: 1-ый класс)
Время отправки: 10 марта 2007, 09:03


Мини-форум вопроса

Всего сообщений: 1; последнее сообщение — 11 марта 2007, 13:18; участников в обсуждении: 1.
Шарайчук Сергей Олександрович

Шарайчук Сергей Олександрович (статус: 2-ой класс), 11 марта 2007, 13:18 [#1]:

Если ти открил какойто файл и редактируэш ево,или знаеш точно куда и скаким именим будеш ево сохранять, нужно зделать следуйщее:

var file:textfile;
f:string;
begin
f:='c:\file.txt';
//или
f:=opendialog1.filename//присваеваеш переменной адрес файла
assignfile(file,f);
rewrite(file);//открываеш файл для перезаписи
write(file,a);//записываеш переменною а в файл
closefile(file);//закрываеш файл, и сохраняеш ево
end;
Я бы изменил мир, но Бог не дает исходники!

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:25
Выполнено за 0.03 сек.