Если я правильно понимаю, если ваше приложение «не мешает» Windows завершить свою работу, Windows нормально НЕ завершает работу приложения, поскольку для этого нет необходимости, не нужно освобождать память, ресурсы и пр. Так, если это утверждение верно (это легко можно проверить, но я слишком ленив сейчас), то событие OnCloseQuery – ваш единственный шанс сохранения данных на диске. Я не думаю что эта логика слишком плоха, просто это одна из тех причуд Windows, которую нужно знать и пользоваться ею. Что может произойти в описанном выше сценарии: редактируемая в настоящий момент запись не будет отправлена (Post) в базу данных, но та же самая вещь может случиться и при нормальном завершении приложения.
При выходе из windows, вы вызываете WM_CLOSE api (или что-то типа этого) для каждого работающего в настоящий момент приложения. Программа закрывается точно таким же образом, как если бы вы щелкнули на кнопке закрытия или вызвали close из главной формы. Поэтому вам не нужно предпринимать никаких дополнительный действий, связанных с завершением работы с таблицами.
Delphi 1
Свойство DatabaseName тесно связано с:
• каталогом, где расположены ваши табличные файлы.
• BDE-псевдоним вашей базы данных.
• DatabaseName вашего компонента TDatabase, если вы имеете его.
Выводы?
Delphi 3
Это будет работать, если вы уже установили атрибуты поля и ассоциировали его с полем вашей таблицы. Если вы установили значение в Инспекторе Объектов, т.е. задали строку, не думайте, что это сработает во время выполнения приложения. Если вы попытаетесь во время прогона установить свойство TField.DefaultExpression примерно так:
MyField.DefaultExpression := 'MyValue';
то это скомпилируется, но при создании в таблице новой записи, скажем, при щелчке на кнопке + в DBNavigator, значения по умолчанию вы не получите. Чтобы во время работы приложения все работало, код должен быть таким:
MyField.DefaultExpression := '''MyValue''';
В Инспекторе Объектов вам нужно просто поместить значение 'MyValue' (используя одинарные кавычки).
Nomadic отвечает:
Как только Вы экспортировали интерфейс провайдера, эта команда контекстного меню перестает быть видимой. Чтобы снова включить ее, Вы должны удалить ассоциированное свойство в Редакторе Библиотеки Типов, и затем нажать кнопку обновления информации в Редакторе Библиотеки Типов (Type Library Editor's Refresh button). Вы могли бы также удалить точку вхождения «Get_XXX» в исходном тексте RemoteDataModule.
Nomadic отвечает:
В редакторе библиотеки типов (typelib) Вы можете добавить свои интерфейсы и сделать их членами оригинального coClass. После этого Вы можете обращаться к этим интерфейсам, используя следующий синтаксис:
(IDispatch(RemoteServer.AppServer) as IAnother)
Необходимо заметить, что это будет работать только, если Вы используете DCOM как транспорт.
Nomadic отвечает:
A: Для DBD 5.0 в файл c:\windows\pdoxwin.ini вставить в секцию
[Properties]
SystemFont=Arial Cyr
Для DBD 7.0 нужно исправить реестр: ключ
HKCU\Software\Borland\DBD\7.0\Preferences\Properties\
SystemFont="Fixedsys"
Если такой ключ не существует, его следует создать. Впрочем, для просмотра таблиц все равно можно порекомендовать rx Database Explorer – у него это получается очень хорошо.
Ребят, я давно делаю под HТ (под 95 не знаю, не пробовал) такую вещь:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
"1252"="c_1251.nls"
Если вы имеете дополнения, исправления или пожелания, шлите мне письма по адресу rlove@pobox.com .
Текущая версия данного FAQ'а доступна по адресу.
Авторские права: 1996 Robert J. Love
Данный FAQ свободен для копирования, распространения и изменения формата.
Многие из этих вопросов и ответов взяты непосредственно из документов Borland. Авторские права таких ответов остаются у Borland.