Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запуск программы в том месте, где ее закрыли 
:(
    Опции темы
Dima85
Дата 15.6.2009, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 19.7.2007

Репутация: нет
Всего: нет



Пользуюсь Delphi 7. Подскажите пожалуйста как сделать что бы форма программы открывалась там где ее закрыли в последний раз (интересуют координаты top, left)? Нужно в реестр записывать координаты и в дальнейшем перед запуском их грузить или есть какое-то более простое решение?
PM MAIL   Вверх
Keeper89
Дата 15.6.2009, 00:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



В реестр, можно еще в файл.


--------------------
PM MAIL WWW   Вверх
REZiaMIX
  Дата 15.6.2009, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 346
Регистрация: 3.11.2007

Репутация: нет
Всего: 4



Вопрос делиться на две части:
1) Что надо сохранить!? 
2) Куда сохранить?

1) Однозначно самым легким решением будет - сохранить Left & Top
2) Куда сохранить!?
Тут уж как работает фантазия:
В реестр , в файл простой записью , в xml файл через дополнительную библиотеку , в ini файл , в тело ехе-файла(для любителей извращений), и т.д.
Что может быть проще(енто на C++):
Код

//save
FILE * sett;
sett = fopen("myprog.conf","wb+");
fwrite(&Form1->Left,sizeof(Form1->Left),1,sett);
fwrite(&Form1->Top,sizeof(Form1->Top),1,sett);
fclose(sett);

//load
FILE * sett;
sett = fopen("myprog.conf","rb");
fread(&Form1->Left,sizeof(Form1->Left),1,sett);
fread(&Form1->Top,sizeof(Form1->Top),1,sett);
fclose(sett);


Для дельфи думаю есть аналоги данных функций.
Также в дельфи должен быть класс TRegistry для работы с реестром.

Это сообщение отредактировал(а) REZiaMIX - 15.6.2009, 00:46


--------------------
user posted image
PM MAIL   Вверх
Dima85
Дата 15.6.2009, 00:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 19.7.2007

Репутация: нет
Всего: нет



Какие есть способы сохранения данных и в дальнейшем загрузка их, я знаю, спасибо.

Вопрос был в том что может в Delphi это можно сделать одной командой, как допустим показывать программу всегда по центру рабочего стола и.т.д.
PM MAIL   Вверх
Keeper89
Дата 15.6.2009, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



Цитата(Dima85 @  15.6.2009,  01:56 Найти цитируемый пост)
Вопрос был в том что может в Delphi это можно сделать одной командой, как допустим показывать программу всегда по центру рабочего стола и.т.д. 

Можете предусмотреть свою опцию - сохранять координаты. Встроенной команды нет.
З.Ы. Я бы сделал это в INI-файле.

Это сообщение отредактировал(а) Keeper89 - 15.6.2009, 00:58


--------------------
PM MAIL WWW   Вверх
Данкинг
Дата 15.6.2009, 01:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 9
Всего: 130



Цитата(Keeper89 @  15.6.2009,  01:58 Найти цитируемый пост)
Я бы сделал это в INI-файле.

Между прочим, одно из условий сертификации программы Microsoft'ом - сохранение данных в реестре. smile

Добавлено через 34 секунды
Цитата(Dima85 @  15.6.2009,  01:33 Найти цитируемый пост)
Нужно в реестр записывать координаты и в дальнейшем перед запуском их грузить или есть какое-то более простое решение? 

А записывать в реестр - слишком сложно? smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
REZiaMIX
Дата 15.6.2009, 01:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 346
Регистрация: 3.11.2007

Репутация: нет
Всего: 4



Цитата(Данкинг @ 15.6.2009,  01:31)
Между прочим, одно из условий сертификации программы Microsoft'ом - сохранение данных в реестре. smile

К тому же , WINAPI функции по работе с реестром - deprecated , и не факт что они будут работать в будущих версиях windows.
Также с ini файлами(точнее с попытками сохранить их не в том месте) могут быть проблемы в vista.
Думаю тут лучшее решение - реестр.
Темболее с TRegistry в дельфи , работа с реестром сводиться к нескольким строчкам кода  smile 
Да и через WINAPI - не сложно. 


--------------------
user posted image
PM MAIL   Вверх
Keeper89
Дата 15.6.2009, 02:14 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



Цитата(Данкинг @  15.6.2009,  02:31 Найти цитируемый пост)
Между прочим, одно из условий сертификации программы Microsoft'ом - сохранение данных в реестре. smile

Да ну этот реестр фтопку, раздувать его по пустякам... ровно как и сертификацию  smile  smile 
А записать настройки в свой файл в директории приложения проблем меньше, ИМХО конечно.

Это сообщение отредактировал(а) Keeper89 - 15.6.2009, 02:16


--------------------
PM MAIL WWW   Вверх
Rennigth
Дата 15.6.2009, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 49
Всего: 76



Цитата(Keeper89 @  15.6.2009,  02:14 Найти цитируемый пост)
А записать настройки в свой файл в директории приложения проблем меньше, ИМХО конечно.

Крайне не желательно... если уж в файл писать то он должен храниться в Application Data smile


Цитата(Dima85 @  15.6.2009,  00:56 Найти цитируемый пост)
Вопрос был в том что может в Delphi это можно сделать одной командой

В пакете Jedi, Eh есть для этого специальные компоненты. Бесплатных не видел, но и не искал  smile  поищи, наверника найдешь, а в принципе написать самому дело 1-2 часов с перекурами smile


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
THandle
  Дата 15.6.2009, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 65
Всего: 372



Цитата(Dima85 @  15.6.2009,  01:56 Найти цитируемый пост)
как допустим показывать программу всегда по центру рабочего стола и.т.д. 


Свойство Position формы. smile Там есть несколько заранее заготовленных позиций.
PM   Вверх
Keeper89
Дата 15.6.2009, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



Цитата(Rennigth @  15.6.2009,  09:56 Найти цитируемый пост)
Крайне не желательно... если уж в файл писать то он должен храниться в Application Data smile

Я читал про политики безопасности Майкрософт и изолированное хранилище. Единственное, что мне не нравится - запись идет на диск с системой, а для установки программ может быть отведен другой диск. Получается, что программу ставишь в одно место, а настройки она будет хранить в другом, увеличивая в размерах этот системный диск. Конечно можно использовать перемещаемое хранилище, но его местонахождение в системе тоже не от разработчика зависит. В общем, мне не очень нравится. 

Это сообщение отредактировал(а) Keeper89 - 15.6.2009, 10:44


--------------------
PM MAIL WWW   Вверх
Rennigth
Дата 15.6.2009, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 49
Всего: 76



Цитата(Keeper89 @  15.6.2009,  10:41 Найти цитируемый пост)
 Единственное, что мне не нравится - запись идет на диск с системой, а для установки программ может быть отведен другой диск. Получается, что программу ставишь в одно место, а настройки она будет хранить в другом, увеличивая в размерах этот системный диск. Конечно можно использовать перемещаемое хранилище, но его местонахождение в системе тоже не от разработчика зависит. В общем, мне не очень нравится. 

Так то оно так, просто можно влипнуть если прав на запись не будет. Вообщем наверное для каждого конкретного случая нужно искать золотую середину  smile или вообще делать опционально...


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
CodeMonkey
Дата 15.6.2009, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



В JVCL (кто такие JCL, JVCL, JEDI) есть компонент TFormStorage (вкладка JvPersistence), который можно просто кинуть на форму, понакидать в него свойств, которые вы хотите сохранять. Они сами будут сохраняться и восстанавливаться при открытии/закрытии формы. 
Осталось только завести в приложении компонент TAppRegistryStorage или TAppIniFileStorage (не помню точных названий) и настроить, где хранить настройки (имя файла, ключ реестра и т.п.), после чего связать TFormStorage с TAppXXXStorage.

На самом деле всё выглядит проще, чем кажется, не так страшно.

Библиотека ставится простым запуском install.bat. Сначала стаим JCL, затем - JVCL. Поддержка D2009 и Билдеров присутствует.

Ну и позволю себе дать ссылочки на обсуждения:
ini-файлы vs реестр.
место хранения настроек.

P.S.
Цитата(Rennigth @  15.6.2009,  08:56 Найти цитируемый пост)
Бесплатных не видел, но и не искал

А JEDI, типа не бесплатен?  smile  Кто ж такой нехороший человек с вас деньги за неё содрал? smile))

Цитата(REZiaMIX @  15.6.2009,  01:53 Найти цитируемый пост)
WINAPI функции по работе с реестром - deprecated , и не факт что они будут работать в будущих версиях windows

...одной рукой схватился за сердце, второй - за бутылку валерьянки...


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Rennigth
Дата 15.6.2009, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 49
Всего: 76



Цитата(CodeMonkey @  15.6.2009,  11:07 Найти цитируемый пост)
А JEDI, типа не бесплатен?    Кто ж такой нехороший человек с вас деньги за неё содрал? ))

Забыл что они бесплатные smile, каюсь  smile просто много пакетов разных разработчиков приходиться использовать, и основная их часть платная  smile 


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Dima85
Дата 15.6.2009, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 19.7.2007

Репутация: нет
Всего: нет



Всем спасибо.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0604 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.