Fórum Verificar item selecionado #396130

22/02/2011

0

Ola pessoal,

eu preciso selecionar um determinado campo no meu grid, e todos os campos do mesmo nome precisam ser selecionados junto . No caso são ruas, selecionando a rua 1 todas as outras ruas 1 serão selecionadas junto automaticamente e trocar de cor para depois quanto selecionada outra rua estas fiquem marcadas de vermelho digamos, indicando que já foi selecionada.

Vlw
Is Informação

Is Informação

Responder

Posts

22/02/2011

Wilson Junior

Você pode ter uma coluna oculta, informando o status.
Exemplo:
  0 - Não faz nada;
  1 - Rua selecionada atualmente;
  2 - Rua que foi selecionada

Sendo assim, no evento OnDraw do seu grid use para pintar as células com o valor desta coluna oculta.

Espero ter colaborado.
Responder

Gostei + 0

22/02/2011

Is Informação

Poderia me dar um exemplo pratico,
pois não entendi a parte que as outra linhas com o mesmo valor seram selecionados.

Já me deu uma luz,

Abraço
Responder

Gostei + 0

22/02/2011

Wilson Junior

Que componente é a sua grade (TstringGrid, TDrawGrid, TDBGrid, etc)?
Responder

Gostei + 0

22/02/2011

Is Informação

TDbgrid, esta pronto só preciso fazer a parte de selecionar e depois colorir os que eu jah selecionei,
vou usar um (bitbtn), para poder marcar quais foram selecionados e colorir, soh preciso descobrir como
Responder

Gostei + 0

22/02/2011

Wilson Junior

- Crie um campo virtual no seu SQL do DBGrid, para poder ter esta coluna.
Exemplo: SELECT *, CAST(0 AS SMALLINT) AS Status FROM NOME_TABELA


- No envento OnDrawColumnCell do seu TDBGrid, faça:
  if  (TDBGrid(Sender).DataSource.DataSet <> nil ) 
  and ( not (gdSelected in State) )
  and ( TDBGrid(Sender).DataSource.DataSet.FieldByName('Status').AsInteger <> 0 ) then
    begin
      if  ( UpperCase(Column.FieldName) = UpperCase('Status') ) then
        begin
          TDBGrid(Sender).Canvas.FillRect( Rect );

          if  TDBGrid(Sender).DataSource.DataSet.FieldByName('Status').AsInteger = 1 then
              TDBGrid(Sender).Canvas.Brush.Color := clGreen
          else //Status = 2
              TDBGrid(Sender).Canvas.Brush.Color := clRed
          ;

          TDBGrid(Sender).Canvas.Font.Color := clWhite;
          TDBGrid(Sender).DefaultDrawDataCell(
            Rect, TDBGrid(Sender).Columns[DataCol].Field, State );
        end
      ;
    end
  ;




- No clique do seu botão, percorra o o seu ClientdataSet alterando o campo Status de cada registro.


Espero ter colaborado.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar