Якщо Ви хочете включати і вимикати опції, це можна зробити за допомогою логічних операцій. Наприклад, наступний код буде додавати dgTitles до поточного набору параметрів:
DBGrid1.Options:=DBGrid1.Options + [dgTitles];
Нехай є змінна ShowTitles типу Boolean, тоді наступний код дозволяють включати і вимикати параметр однією кнопкою:
procedure TForm1.Button3Click (Sender: TObject); ShowTitles then.Options:=DBGrid1.Options + [dgTitles] .Options:=DBGrid1.Options - [dgTitles];
ShowTitles:=not ShowTitles ;;
Якщо Ви хочете приховати поле в run-time, то можете встановити властивість visible в false:
Query1.FieldByName (CustNo) .Visible:=False;
Query1CustNo.Visible:=False;
Обидві рядки коду виконують ідентичну задачу. Щоб показати поле знову, встановіть видимий в true:
Query1.FieldByName (CustNo) .Visible:=True;
Query1CustNo.Visible:=True;
Якщо Ви хочете змінити положення колонки в Runtime, можете просто змінити індекс, (перше поле в записі має індекс нуль):
Query1.FieldByName (CustNo) .Index:=1; CustNo.Index:=2;
За замовченням, поле CustNo в таблиці Customer є першим. Код в першому рядку переміщує це поле в другу позицію, а наступний рядок переміщує його в третю позицію. Пам'ятайте, що нумерація полів починається з нуля, так привласнення властивості Index 1 робить поле другим у запису. Перше поле має Index 0.
Коли Ви змінюєте індекс поля, індекси інших полів у запису змінюються автоматично.
Якщо Ви хочете змінити ширину колонки в Runtime, тільки змініть властивість DisplayWidth відповідного TField.
Query1.FieldByName (CustNo) .DisplayWidth:=12; CustNo.DisplayWidth:=12;
Величина 12 відноситься до числа символів, які можуть бути показані в видимому елементі.
Програма DBGR_RT показує як працювати з DBGrid в Runtime. Програма досить проста, крім двох невеликих частин, які описані нижче. Перша частина показує, як створити check box в Runtime, а друга показує, як змінити порядок пунктів у listbox в Runtime.
При створенні форми (подія OnCreate) ListBox заповнюється іменами полів, далі створюється масив об'єктів CheckBox, відповідний полям у таблиці. Спершу все CheckBox и вибрані і всі поля в таблиці видимі. Програма дізнається через TTable1 імена полів і привласнює їх властивості Caption відповідного CheckBox. Крім того, оброблювачу події OnClick всіх CheckBox ів присвоюється процедура ChBClick, яка і включає/вимикає поля в DBGrid.
procedure TForm1.FormCreate (Sender: TObject); i: Word ;: Array [0..49] of TCheckBox;
{Fill ListBox} .Clear; i:=0 to Table1.FieldCount - 1 do.Items.Add (Table1.Fields [i] .FieldName);
{Make CheckBoxes} i:=0 to Table1.FieldCount - 1 do begin [I]:=TCheckBox.Create (Self); [I] .Parent:=ScrollBox1; [I] .Caption :=Table1.Fields [i] .FieldName; [I] .Left:=10; [I] .Top:=I * CheckBox1.Height + 5; [I] .Width:=200; [I] .Checked: =True; [I] .OnClick:=ChBClick ;;
end;
Велика частина коду в цьому прикладі виконує відносно прості завдання, типу призначення імен і положень check boxes. Ось дві ключових рядки:
[I]:=TCheckBox.Create (Self); [I] .Parent:=ScrollBox1;
Перша рядки створює CheckBox із заданим Owner (Власником). Друга рядки призначає Parent (Батька) для CheckBox. Щоб зрозуміти відмінності між Батьком і Власником, подивіться відповідні властивості в online-help.
Програма містить ListBox, який показує поточний порядок полів у DataSet. Для зміни порядку полів у DataSet (а, отже, в DBGrid) використовуються дві кнопки. При натисканні на одну з кнопок, вбрання в ListBox е поле переміщається на одну позицію вгору або вниз. Синхронно з цим змінюється і порядок полів у DBGrid. Код, показаний нижче, змінює Index поля для Table1, змінюючи, таким чином, позицію поля в DBGrid. Ці зміни стосуються тільки візуального представлення DataSet. Фізично дані на диску не змінюються.
procedure TForm1.downButtonClick (Sender: TObject); i: Integer; ListBox1 do (ItemIndex lt; Items.Count - 1) and (ItemIndex lt; gt; - 1) then begin:=ItemIndex;
{move ListBox item} .Move (i, i + 1);:=i + 1;
{move Field} .Fields [i] .Index:=i + 1;
end ;;
...