КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Источник данных
Begin Begin Begin if DispiayText then Text:=TablelName.AsString - else Text:= AnsiUpperCase(TablelName.AsString); end; procedure TForml.TablelPercentGetText(Sender: TFieid; var Text: String;; DispiayText: Boolean); if DispiayText then Text:=TablelPercent.AsString+'%' else Text:=TablelPercent.AsString; end;
Значение поля Percent отображается в визуальных компонентах со знаком %. При редактировании этого поля знак процента отсутствует. При редактировании значения поля Name оно выводится строчными буквами. Отметим, что если для перевода символов строки в верхний регистр вместо функции AnsiUpperCase использовать UpperCase, то символы русского алфавита будут преобразовываться некорректно. Замечание Если определен обработчик события OnGetText, то свойства DisplayFormat и EditMask не действуют.
Свойство DisplayWidth типа Integer определяет число символов, предназначенных для вывода значения поля в визуальном компоненте (обычно в сетке DBGrid), который связан с этим полем. По умолчанию значение этого свойства определяется шириной физического поля таблицы, заданной при его создании. Замечание Ширина столбца компонента-сетки DBGrid также зависит от значения свойства width этого столбца, задающего ширину в пикселах.
Программист может изменить не только значение, но и заголовок поля, используемый как название столбца, например, в компоненте DBGrid. Заголовок поля определяется свойством DisplayLabel типа string. По умолчанию значением этого свойства является название поля (свойство FieldName), однако, в отличие от последнего, свойство DisplayLabel доступно и для записи, и его можно использовать, например, для настройки пользователем интерфейса приложения. Пример настройки заголовка поля: procedure TForml.ButtonlClicktSender: TObject); TablelName.DisplayLabel:=Editl.Text; end;
Здесь при нажатии кнопки заголовку поля Name присваивается текст, введенный в компонент Edit1. Если это поле отображается в компоненте DBGrid, то соответствующий столбец сетки также изменяет свое значение на указанное.
Источник данных используется как промежуточное звено между набором данных и визуальными компонентами, с помощью которых пользователь управляет этим набором данных. В Delphi источник данных представлен компонентом DataSource. Для указания набора данных, с которым связан источник данных, служит свойство DataSet типа TDataSet последнего. Визуальные компоненты связаны с источником данных через свои свойства DataSource. Обычно связь между источником и набором данных устанавливается на этапе проектирования в Инспекторе объектов, однако при необходимости эту связь можно установить или разорвать динамически. При смене у компонента DataSource набора данных визуальные компоненты автоматически подключаются к новому набору данных. Указать набор данных можно, например, так: DataSource2.DataSet:=nil; DataSourcel.DataSet:=Table2;
Здесь для компонента DataSource2 связь с набором данных разрывается, а для компонента DataSourcel назначается набор данных Tаblе2. Для анализа состояния, в котором находится набор данных, можно использовать свойство state типа TDataSetState. При каждом изменении состояния набора данных для связанного с ним источника данных DataSource генерируется событие OnStateChange типа TNotifyEvent. Если набор данных является редактируемым, то свойство AutoEdit типа Boolean определяет, может ли он автоматически переводиться в режим модификации при выполнении пользователем определенных действий. Например, для компонентов DBGrid и DBEdit таким действием является нажатие алфавитно-цифровой клавиши, когда компонент находится в фокусе ввода. По умолчанию свойство AutoEdit имеет значение True, и автоматический переход в режим модификации разрешен. Если необходимо защитить данные от случайного изменения, то одной из предпринимаемых мер является установка свойству AutoEdit значения False.
Замечание Значение свойства AutoEdit влияет на возможность редактирования набора данных только со стороны пользователя. Программно можно изменять записи независимо от значения этого свойства. Без учета значения свойства AutoEdit пользователь может переводить набор данных в режим модификации путем нажатия кнопок компонента DBNavigator.
При изменении данных текущей записи генерируется событие OnDataChange типа TDataCnangeEvent, который описан следующим образом: type TDataChangeEvent = procedure (Sender: TObject; Field: TField) of object;
Параметр Field указывает на измененное поле; если данные изменены более чем в одном поле, то этот параметр имеет значение Nil. Следует иметь в виду, что в большинстве случаев событие OnDataChange генерируется и при переходе к другой записи. Это происходит, если хотя бы одно поле записи, ставшей текущей, содержит значение, отличное от значения этого же поля для записи, которая была текущей. Событие OnDataChange можно использовать, например, для контроля за положением указателя текущей записи и выполнения действий, связанных с его перемещением. Это событие генерируется также при открытии набора данных. Вот как осуществляется контроль за перемещением указателя текущей записи: procedure TForml.DataSourcelDataChange(Sender: TObject; Field: TField);
Дата добавления: 2014-01-11; Просмотров: 402; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |