Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  1 743

•  TDictionary Custom Sort  4 300

•  Fast Watermark Sources  3 983

•  3D Designer  6 154

•  Sik Screen Capture  4 233

•  Patch Maker  4 781

•  Айболит (remote control)  4 709

•  ListBox Drag & Drop  3 825

•  Доска для игры Реверси  90 923

•  Графические эффекты  5 025

•  Рисование по маске  4 067

•  Перетаскивание изображений  3 390

•  Canvas Drawing  3 722

•  Рисование Луны  3 496

•  Поворот изображения  3 035

•  Рисование стержней  2 646

•  Paint on Shape  2 036

•  Генератор кроссвордов  2 818

•  Головоломка Paletto  2 223

•  Теорема Монжа об окружностях  2 936

•  Пазл Numbrix  1 981

•  Заборы и коммивояжеры  2 582

•  Игра HIP  1 598

•  Игра Go (Го)  1 526

•  Симулятор лифта  1 812

•  Программа укладки плитки  1 552

•  Генератор лабиринта  1 928

•  Проверка числового ввода  1 688

•  HEX View  1 867

•  Физический маятник  1 694

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Создание и удаление полей во время выполнения программы



TField-компоненты (или, точнее, потомки компонента TField с соответствующим типом поля) могут создаваться во время проектирования программы с помощью Fields Editor (редактора полей). Fields Editor вызывается двойным щелчком на иконке компонента TTable или TQuery. Но потомки TField могут быть созданы и удалены и в режиме выполнения программы.

Потомки компонента TField (такие как, например, TStringField, TIntegerField и др.) создаются методом Create для того типа потомка TField, который подходит к соответствующему полю набора данных. Другими словами, для поля строкового типа текущего набора данных необходимо вызвать метод Create класса TStringField, являющегося потомком TField. Методу Create необходим один параметр - владелец потомка TField, расположенный на TForm. После создания компонента наследника TField для того, чтобы новый экземпляр объекта мог установить связь с необходимым полем набора данных, необходимо установить несколько ключевых свойств. Вот их список:

  • FieldName: имя поля в таблице
  • Name: уникальный идентификатор компонента-потомка TField.
  • Index: позиция компонента-потомка TField в массиве TFields (свойство Fields компонента TTable или TQuery, с которым будет связан TField).
  • DataSet: компонент TTable или TQuery, с которым будет связан TField.

Приведенный ниже код демонстрирует способ создания TStringField. TForm названа Form1 (здесь ссылка на переменную Self), активный набор данных TQuery имеет имя Query1 и поле, для которого создается компонент TStringField, расположено в таблице dBASE с именем CO_NAME. Новый потомок TField будет вторым TField в свойстве-массиве Fields компонента Query1. Имейте в виду, что набор данных, связанный с новым потомком TField (в нашем случае Query1), перед добавлением TField должен быть закрыт, а после добавления вновь открыт.


procedure TForm1.Button2Click(Sender: TOObject);
var
  T: TStringField;
begin
  Query1.Close;
  T := TStringField.Create(Self);
  T.FieldName := 'CO_NAME';
  T.Name := Query1.Name + T.FieldName;
  T.Index := Query1.FieldCount;
  T.DataSet := Query1;
  Query1.FieldDefs.UpDate;
  Query1.Open;
end;

Вышеприведенный пример создает новый TStringField с именем Query1CO_NAME.

Для удаления существующего потомка TField достаточно вызова метода Free данного компонента. В примере, приведенном ниже, метод TForm FindComponent используется для получения указателя на компонент TStringField с именем Query1CO_NAME. Возвращаемая функцией FindComponent величина в случае успешного завершения будет иметь тип TComponent или nil в противном случае. Возвращаемое значение может использоваться для того, чтобы определить, действительно ли существует компонент до того, как будет применен метод Free.


procedure TForm1.Button1Click(Sender: TObject);
var
  TC: TComponent;
begin
  TC := FindComponent('Query1CO_NAME');
  if not (TC = nil) then 
  begin
    Query1.Close;
    TC.Free;
    Query1.Open;
  end;
end; 

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





Похожие по теме исходники

Создание таблиц в Paradox

Очередность выполнения процессов




Copyright © 2004-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте