![]() |
|
|||||||
![]() |
|
|
Опции темы |
|
|
#1 |
|
Форумчанин
Регистрация: 25.11.2006
Адрес: Казахстан
Сообщений: 102
Репутация: 71
|
Есть такой вопрос. Сейчас пишу прогу (блокнот), прошу профессионалов не смеятся, многие наверно с этого начинали, так вот код:
Код:
Я хочу её немного усовершенствовать, а именно создать такую фигню: когда чел закрывает прогу ( TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean) ), то прога проверяет был ли изменён текст (событие TForm1.Memo1Change). И если текст был изменён, то прога выдаёт сообщение сохранить или нет, если нет, то прога закрывается, а если да, то надо сохранить и закрыть. Как это сделать? У меня есть тока догатки, можно создать свою процедуру (или функцию) сохранения текста и при нажатии кнопки её вызывать и когда при выходе чел нажимает «ДА» (т.е. хочет сохранить текст). Написать свою процедуру никак не получается, помогите. |
|
|
|
|
|
#2 |
|
Delphi/C++/C#
Профессионал
Регистрация: 29.10.2006
Сообщений: 2,116
Репутация: 601
|
в TForm1.FormCloseQuery пишешь такую строчку:
if Application.MessageBox('SAVE?','LOO k at ME!',36)=mrYes then {Сюда пишешь код сохранения (или просто процедуру сохранения)}; |
|
|
|
|
|
#3 |
|
Форумчанин
Регистрация: 25.11.2006
Адрес: Казахстан
Сообщений: 102
Репутация: 71
|
zetrix спасибо. Как ты предложил, всё работает. Только приходится 2 раза дублировать один и тот же код. Он у меня дублируется в
// При закрытии программы procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); и в // Кнопка "Сохранить" procedure TForm1.Button2Click(Sender: TObject); А когда я пытаюсь создать свою процедуру: procedure kol; var my_file: TextFile; // Файл в который будут записаны данные fname: String[90]; // Путь к фалу i: word; begin fname := Edit1.Text; {$i-} // Запрещаем компилятору проверять ошибки. AssignFile(my_file, fname); Rewrite(my_file); // Открыть файл для перезаписи {$i+} for i := 0 to Memo1.Lines.Count do writeln(my_file, Memo1.Lines[i]); CloseFile(my_file); end; То выдаётся такая ошибка: [Error] Unit1.pas(51): Undeclared identifier: 'Edit1' Вот 51 строка fname := Edit1.Text; Короче получается так, когда создаёшь свою процедуру, то почему-то обычные объекты становятся недоступными типа Edit, Memoи тд., почему? И ещё вопрос: почему в Делфи такие маленькие программы таких больших размеров (около 300-400 Кб)? |
|
|
|
|
|
#4 | |||
|
Delphi/C++/C#
Профессионал
Регистрация: 29.10.2006
Сообщений: 2,116
Репутация: 601
|
Цитата:
Цитата:
procedure Tform1.kol; var ... Тогда всё будет доступно. Цитата:
Последний раз редактировалось zetrix; 25.11.2006 в 19:23. |
|||
|
|
|
|
|
#5 | |
|
Старый брюзга
Заслуженный модератор
Регистрация: 22.11.2006
Адрес: Москва, Коньково
Сообщений: 8,851
Репутация: 2392
|
Цитата:
по-моему, здесь это тоже описывалось. посмотри в разделе про апи. не найдешь (или не поймешь) - открывай тему, поможем... но, вроде, там была темка с похожим названием (а может, я и путаю - форумов много, а я - один).
__________________
Когда я вижу "памагити" в названии темы - я хватаюсь за пистолет... Последний раз редактировалось mihali4; 26.11.2006 в 01:05. |
|
|
|
|
|
|
#6 |
|
Форумчанин
Регистрация: 25.11.2006
Адрес: Казахстан
Сообщений: 102
Репутация: 71
|
zetrix большое спасибо за помощь, ты меня очень выручил.
mihali4 не нашёл такую тему. |
|
|
|
|
|
#7 |
|
Delphi/C++/C#
Профессионал
Регистрация: 29.10.2006
Сообщений: 2,116
Репутация: 601
|
пустяки... дело-то житейское
|
|
|
|
|
|
#8 |
|
Старый брюзга
Заслуженный модератор
Регистрация: 22.11.2006
Адрес: Москва, Коньково
Сообщений: 8,851
Репутация: 2392
|
__________________
Когда я вижу "памагити" в названии темы - я хватаюсь за пистолет... |
|
|
|
|
|
#9 | |
|
Форумчанин
Регистрация: 25.11.2006
Адрес: Казахстан
Сообщений: 102
Репутация: 71
|
Цитата:
Этот форум вообще классный, жаль я тока недавно о нём узнал. Большое спасибо автору сайта за создание этого форума. |
|
|
|
|
|
|
#10 |
|
Форумчанин
Регистрация: 25.11.2006
Адрес: Казахстан
Сообщений: 102
Репутация: 71
|
Вы не представляете моей радости, когда всё-таки получилось сократить вес программы. Был вот такой список:
vcl;rtl;vclx;indy;inet;xmlrtl;vclie ;inetdbbde;inetdbxpress;dbrtl;dsnap ;dsnapcon;vcldb;soaprtl;VclSmp;dbex press;dbxcds;inetdb;bdertl;vcldbx;w ebdsnap;websnap;adortl;ibxpress;tee ui;teedb;tee;dss;visualclx;visualdb clx;vclactnband;vclshlctrls;Intrawe bDB_50_70;Intraweb_50_70;Rave50CLX; Rave50VCL;dclOfficeXP Я из него убрал только indy и программа стала весить не 400 а 20 кб. Двадцатикратное уменьшение – круто. Токо вот интересно для чего этот indy нужен? |
|
|
|
![]() |
| Опции темы | |
|
|
Похожие темы
|
||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение |
| Переход к другой процедуре | Detka | Общие вопросы Delphi | 7 | 13.07.2008 16:50 |
| Вопрос по процедуре | VenMaster | Общие вопросы Delphi | 5 | 13.06.2008 17:37 |
| вопрос по процедуре GotoXY и TextAttr и | Mister Been | Паскаль | 8 | 03.06.2008 10:52 |
| как в процедуре объявить массив? | kolduev | Помощь студентам | 7 | 18.02.2008 23:35 |
| Ошибка в процедуре | GAGARIN-NEW | Помощь студентам | 2 | 21.12.2007 09:23 |