32 Урока Borland Delphi



             

Урок 22 - часть 8


ListBox1.Items.Add(Table1.Fields[i].FieldName);

{Make CheckBoxes}

for i:=0 to Table1.FieldCount-1 do begin

R[I] := TCheckBox.Create(Self);

R[I].Parent := ScrollBox1;

R[I].Caption := Table1.Fields[i].FieldName;

R[I].Left := 10;

R[I].Top := I * CheckBox1.Height + 5;

R[I].Width := 200;

R[I].Checked := True;

R[I].OnClick := ChBClick;

end;

end;

Большая часть кода в этом примере выполняет относительно простые задачи, типа назначения имен и положений check boxes. Вот две ключевых строки:

R[I] := TCheckBox.Create(Self);

R[I].Parent := ScrollBox1;

Первая строки создает CheckBox с заданным Owner (Владельцем). Вторая строки назначает Parent (Родителя) для CheckBox. Чтобы понять различия между Родителем и Владельцем, посмотрите соответствующие свойства в online-help.

Программа содержит ListBox, который показывает текущий порядок полей в DataSet. Для изменения порядка полей в DataSet (а, следовательно, в DBGrid) используются две кнопки. При нажатии на одну из кнопок, выбранное в ListBox’е поле перемещается на одну позицию вверх или вниз. Синхронно с этим меняется и порядок полей в DBGrid. Код, показанный ниже, изменяет Index поля для Table1, изменяя, таким образом, позицию поля в DBGrid. Эти изменения касаются только визуального представления DataSet. Физически данные на диске не изменяются.

procedure TForm1.downButtonClick(Sender: TObject);

var

i : Integer;

begin

with ListBox1 do

if (ItemIndex<Items.Count-1)and(ItemIndex<>-1) then begin

i := ItemIndex;

{move ListBox item}

Items.Move(i, i+1);

ItemIndex := i+1;

{move Field}

Table1.Fields[i].Index:=i+1;

end;

end;

Последняя строка в примере как раз та, которая фактически изменяет индекс колонки, которую пользователь хочет переместить. Две строки кода непосредственно перед ней перемещают текущую строку в ListBox на новую позицию.

Внешний вид программы DBGR_RT показан на рис.4

Рис.4: Программа DBGR_RT
 
 
 
 




Содержание  Назад  Вперед