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.

privado
cmStock: 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.

Average rating: