Aqui está um exemplo de como usar TableStyles diferentes dependendo do tipo do objeto selecionado atualmente em um DataGrid. Tenho 2 grandes redes, cada um agarrado ao ExpressionHandles. Quero mostrar um conjunto diferente de colunas, dependendo do tipo de objeto no topo da grelha.
Em primeiro lugar, a aplicação precisa de saber quando um novo objeto foi selecionado. Aqui um CurrencyManager está sendo ligado. DgStock é uma DataGrid, ehRoot é um ExpressionHandle contendo os objetos Stock.
privadocmStock: CurrencyManager;
....
procedimento TfrmStock.TfrmStock_Load (remetente: System.Object; e: System.EventArgs);
começo
cmStock: = CurrencyManager (dgStock.BindingContext [Self.ehRoot]);
Include (cmStock.PositionChanged, Self.StockGridRowChanged);
final;
Em seguida, o código que o evento é despedido quando o CurrencyManager posição é alterada. Eu voltar a usar o CurrencyManagerHandle que é utilizado para interligar as 2 grelhas para recuperar o objeto atual. Eu só utilizou o CurrencyManager para alertá-me que o início grid mudou.
procedimento TfrmStock.StockGridRowChanged (remetente: System.Object; e: System.EventArgs);
começo...se Circulante (cmhStock.Element.AsObject). StockCategory.IsBoot então
começo
dgStockItems.TableStyles.Clear;
dgStockItems.TableStyles.Add (self.tsItemsWithSole);
fim
diferente
começo
dgStockItems.TableStyles.Clear;
dgStockItems.TableStyles.Add (self.tsItemsNoSole);
final;
...final;
Para tornar este código mais eficiente, só faz sentido alterar o TableStyle se não for o atual TableStyle. Para fazer isto, podemos perguntar o TableStylesCollection se contiver o exigido TableStyle. Isto funciona apenas se nós alguma vez ter um TableStyle activas em simultâneo.
começo
pnlItems.Visible: = true;
pnlPricing.Visible: = true;
se Circulante (cmhStock.Element.AsObject). StockCategory.IsBoot e não
dgStockItems.TableStyles.Contains (self.tsItemsWithSole), em seguida,
começo
dgStockItems.TableStyles.Clear;
dgStockItems.TableStyles.Add (self.tsItemsWithSole);
fim
diferente
se não Circulante (cmhStock.Element.AsObject). StockCategory.IsBoot e não
dgStockItems.TableStyles.Contains (self.tsItemsNoSole), em seguida,
começo
dgStockItems.TableStyles.Clear;
dgStockItems.TableStyles.Add (self.tsItemsNoSole);
final;
final;
Espero que este breve artigo vem a calhar para os outros.

Delicious
Digg
Google
Yahoo