Fórum Difícil, gt;gt;gt; filtrar considerando escolhas anterior #157377
02/05/2003
0
Alguém sabe como fazer isso?
Obrigadão!!!! :lol:
Alex_
Curtir tópico
+ 0Posts
02/05/2003
Schwarze
Se você simplesmente está tentando selecionar um texto de um combo com textos fixos, a solução abaixo é adequada:
Você deve adicionar as colunas ao dbgrid (chamando o editor com um duplo clique no grid), ao invés de utilizar diretamente os campos da tabela. Cada coluna tem a propriedade PickList, que gera uma lista de valores que aparecem num combo.
Você deve alterar esse picklist em tempo de execução, mostrando apenas o que o usuário pode selecionar.
Se você está tentando fazer isso com um campo lookup, com o DBGrid do delphi é impossível. Mas a melhor saída talvez fosse você abandonar a idéia do combo e criar um botão elipse (...), chamando um pequeno dialog para escolher o valor.
Você pode também utilizar a biblioteca InfoPower, cujo grid é imensamente mais flexível que o DBGrid padrão da VCL.
8) Ajudei?
Gostei + 0
02/05/2003
Alex_
Estou fazendo uso justamente desses componentes usei um wwDBGrid e wwLookUpComboBox. e ligei ele ao Grid.
Está funcionando legal, porém não com essa opção de filtrar o ultimo escolhido.
Não tinha falado sobre esse componente pois eu pensava que não era tão conhecido.
Se agora ficar mais fácil me ajudar, agradeço mais uma vez ainda!!!
:wink: :lol: :) :D :wink: :lol: :) :D :wink: :lol: :) :D :wink: :lol: :) :D :wink: :lol: :) :D
Gostei + 0
02/05/2003
Schwarze
1. Você cria um calculado, contendo o que você quer mostrar.
2. Muda o EditCalculated do grid pra True;
3. Cria um combo normal (TwwDbComboBox) e povoa ele manualmente, cada vez que o usuário mudar de registro (evento AfterScroll da sua dataset). Ou, se você não estiver usando cachedupdates, continua usando o lookup e escreve sua query de modo a não mostrar o que já foi selecionado;
4. Escreve um evento OnChange para o campo, e joga o valor do campo certo na tabela. Por exemplo:
[color=red:210637b9fc][size=9:210637b9fc]
TFormX.QueryXCampoXChange(Sender: TField)
begin
//Evitar recursão, pois o campoX vai ser recalculado no OnCalcFields
Sender.OnChange:= nil;
//Campo y é o campo com o valor do lookup
Sender.Dataset[´CampoY´]:= ComboX.Value;
//voltar o evento
Sender.OnChange:= QueryXCampoXChange;
end;[/size:210637b9fc][/color:210637b9fc]5.
:mrgreen: Agora foi?
Gostei + 0
02/05/2003
Alex_
Obrigado heim brother!!! [/b:984d8fdd94]8)
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)