c++builder - Объявление Bookmark глобально


0

Здравствуйте.

Подскажите, пожалуйста, как сделать маркер глобальным, чтобы к нему можно было получить доступ с любой формы проект (unit.cpp). Проект разрабатывается в С++ Builder.

Пример. Нужно на unit1 поставить метку

TBookmark Marker = Table1->GetBookmark();

А на unit2 обратится к ней

Table1->GotoBookmark(Marker);

(или)Как объявить переменную глобально, чтобы она была видна из всех форм(unit.cpp) проекта.

Заранее спасибо.

Источник
  •  236
  •  1
  • 22 янв 2012 2012-01-22 16:38:56

1 ответ

2

В данном случае не стоит использовать глобальные переменные. Глобальные переменные - это синглтоны: Application, DataModule, Form (главная форма приложения, если такая конечно есть)... Т.е. то, что нужно для работы программы и создается при старте программы (ну или при отложенном старте).

Создайте DataModule, туда перенесите все Table, DataSource и прочие невизуальные компоненты, относящиеся к данным. В этом же классе объявите public свойство или переменную Marker.

Далее, добавляя в usesы файл DataModule в файлы форм получите доступ и к данным (в Object Inspectore сможете для гридов прочих компонент выбирать DataSourceы из этого DataModule), аналогично сможете использовать Marker как свойство DataModule.

ЗЫ Писал как будто для delphi, ну да разница, имхо, не большая должна быть. ЗЗЫ Описана упрощенная модель, всегда бывают нюансы.

конкретно по вашему примеру. хранить пользователя или id нужно в свойстве формы, а не в глобальной переменной. Глобальные переменные тут совсем не нужны. Создавайте все свойства в формах и храните данные полученные или обработанные или введенные в них. В каком конкретно классе хранить ту или иную информацию зависит от вас и очевидной логики программы. — 23 янв 20122012-01-23 16:09:37.000000
Мне как бы нужна это для того чтобы при запуске проекта требовало пароль. То есть Форма1 запрашивает логин(через - DBLookupComboBox1 из базы) и пароль (через - MaskEdit1). И мне нужна знать на форме2 под каким логином зашли в систему(или ID строки войденного пользователя). Для дальнейшего разграничения прав доступа к данным. — 23 янв 20122012-01-23 12:54:54.000000