Показать сообщение отдельно
  #1  
Старый 22.03.2013, 11:32
Аватар для Uniq!
Uniq! Uniq! вне форума
Местный
 
Регистрация: 29.09.2010
Сообщения: 539
Версия Delphi: Delphi XE3
Репутация: 374
По умолчанию Учусь работать с TreeView

Проблема в организации повторяющегося кода.
Код:
procedure TForm1.dxBarButton1Click(Sender: TObject);
var
 DBNames : TStringList;
 DBName : string;
 NewItem : TTreeNode;
begin
DBNames := TStringList.Create;
MyConnection1.GetDatabaseNames(DBNames);

cxTreeView1.Items.BeginUpdate;
for DBName in DBNames do
begin
  NewItem := cxTreeView1.Items.Add(nil,DBName);
  NewItem.ImageIndex := 0;
  NewItem.SelectedIndex := 0;
  NewItem.HasChildren := True;
end;
cxTreeView1.Items.EndUpdate;
DBNames.Free;
end;

Получаю список БД с сервера MySQL. Создаю "корень дерева".
Далее обрабатываю OnExpanding (при развёртывании ветки), получая полный список таблиц

Код:
procedure TForm1.cxTreeView1Expanding(Sender: TObject; Node: TTreeNode;
  var AllowExpansion: Boolean);
var
 TblNames : TStringList;
 TblName : string;
 NewItem : TTreeNode;
begin
MyConnection1.Database := Node.Text;
MyConnection1.Connect;
TblNames := TStringList.Create;
MyConnection1.GetTableNames(TblNames);

cxTreeView1.Items.BeginUpdate;
Node.DeleteChildren;
  for TblName in TblNames do
  begin
    NewItem := cxTreeView1.Items.AddChild(Node,TblName);
    NewItem.ImageIndex := 1;
    NewItem.SelectedIndex := 1;
  end;
cxTreeView1.Items.EndUpdate;
TblNames.Free;
end;

Дальше у таблиц будут "колонки"... и вот тут запара.
Нужно писать третий раз "по сути" один и тот же код.
Как этот процесс ГРАМОТНО организовать?
Ответить с цитированием