Fórum Mulit select no db grid... #291882
16/08/2005
0
Gigatel
Curtir tópico
+ 0Posts
16/08/2005
Gigatel
var i : integer ; begin if DBGrid1.SelectedRows.Count > 0 then with BD_CONT_REC do for i:= 0 to DBGrid1.SelectedRows.Count - 1 do begin GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i])); BD_CONT_REC.delete; end;
só que é um processo que deleta os selecionados...só que eu presciso que os registros deletados vão para o arquivo morto...no me caso o meu Arquivo morto funciona assim..
procedure T_FormCRReceb.Quitar(Sender: TObject); begin BD_ARQUIVO_MORTO_FIN.Close; BD_ARQUIVO_MORTO_FIN.Open; BD_ARQUIVO_MORTO_FIN.Insert; BD_ARQUIVO_MORTO_FINGS_ARF_DESCRICAO.Value := BD_CONT_RECGS_COR_DESCRICAO.Value; BD_ARQUIVO_MORTO_FINGS_ARF_NOME.Value := BD_CONT_RECGS_COR_NOME.Value; BD_ARQUIVO_MORTO_FINGS_ARF_CPF_CNPJ.Value := BD_CONT_RECGS_COR_CPF_CNPJ.Value; BD_ARQUIVO_MORTO_FINGS_ARF_CODPROD.Value := BD_CONT_RECGS_COR_CODPROD.Value; BD_ARQUIVO_MORTO_FINGS_ARF_N_PARCELAS.Value := BD_CONT_RECGS_COR_N_PARCELAS.Value; BD_ARQUIVO_MORTO_FINGS_ARF_DATA_VENC.Value := BD_CONT_RECGS_COR_DATA_VENC.Value; BD_ARQUIVO_MORTO_FINGS_ARF_DATA_CAD.Value := BD_CONT_RECGS_COR_DATA_CAD.Value; BD_ARQUIVO_MORTO_FINGS_ARF_CODACES.Value := BD_CONT_RECGS_COR_CODACESPAR.Value; BD_ARQUIVO_MORTO_FINGS_ARF_DATA_BAX.Value := FormatDateTime(´dd/mm/yyyy´,Date); BD_ARQUIVO_MORTO_FINGS_ARF_VALOR_TOTAL.Value := BD_CONT_RECGS_COR_VALOR_TOTAL.Value; BD_ARQUIVO_MORTO_FINGS_ARF_VALOR_PARCELA.Value := BD_CONT_RECGS_COR_VALOR_PARCELA.Value; BD_ARQUIVO_MORTO_FINGS_ARF_VALOR_ENT.Value := BD_CONT_RECGS_COR_VALOR_ENT.Value; BD_ARQUIVO_MORTO_FINGS_ARF_VALOR_PAGO.Value := Edit2.Text; BD_ARQUIVO_MORTO_FINGS_ARF_VENDEDOR.Value := BD_CONT_RECGS_COR_VENDEDOR.Value; BD_ARQUIVO_MORTO_FIN.Post; BD_ARQUIVO_MORTO_FIN.Delete; end;
e gostaria que no select chamasse um form onde teria os dados selecionados, para realizar os calculos..Será que tem jeito ?
Gostei + 0
16/08/2005
Rjun
Gostei + 0
17/08/2005
Gigatel
var i : integer ; begin if DBGrid1.SelectedRows.Count > 0 then with BD_CONT_REC do for i:= 0 to DBGrid1.SelectedRows.Count - 1 do begin GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i])); BD_CONT_REC.delete; end;
No infopower não possui esta função ...SelectedRows.....más uma alternativa viavé sera legal..Valew...t+
Gostei + 0
18/08/2005
Gigatel
Usado para transferir pra o memo..
//var // i: Integer; begin Memo1.Clear; With DBGrid1 do Begin if SelectedRows.Count > 0 then for i := 0 to Pred(SelectedRows.Count) do Begin posiciona nos registros selecionados do DBGrid IBUP_CONT_REC.Dataset.Bookmark := SelectedRows[i]; Memo1.Lines.Add(´Selecionado: ´+BD_CONT_RECGS_COR_NOME.AsString); end; end; end;
e como ficaria em um grid ou num dbgrid ...levando em consideração que o campo acima é somente do cliente.
BD_CONT_RECGS_COR_NOME
más presciso que estas tbm entrem no código...
BD_CONT_RECGS_COR_VALOR
BD_CONT_RECGS_COR_DATA_ENT
BD_CONT_RECGS_COR_DATA_VENC
Parece meio complicado...
espero que alguém tenha alguma idéia...Faleu...
Gostei + 0
18/08/2005
Gigatel
1) tem como fazer akelas opções de marcar ?
2) tem como criar um segundo form para poder isolar os ítens selecionados ?
3) o eu prescisaria para jogar os ítens selecionados para o segundo form..acho que a figura aí deve eclarecer + ou - do que eu presciso ..Acho que esta dúvida serial útil para muita gente aki no fórum...e tem 3 dias que estou nisto e achando bug atras de bug...e gostaria se alguém tivessem um idéia para sulucionar isto...desculpe a chatisse más isto é de grande importancia no projeto...Vlw... t+
[img:df987d9973]http://dotnetjunkies.com/Content/x.1/65790F1A-DA7E-4EC7-A6C6-94486C22B45D/selecteditemstosecondpage.gif[/img:df987d9973]
Gostei + 0
18/08/2005
Marco Salles
a) Criaria na Tabela um Campo Boolean
b) Criaria o evento OnClick Na Grid.. Talves seje necessário.. Ao clicar , marcaria este item , ou desmarcaria este item
Utilizaria um TStringGrid e o carregaria com os Items selecionados.. Para isto usaria uma Query que retornaria os items marcados
Isto é o primeiro passo...
Gostei + 0
18/08/2005
Gigatel
a) Criaria na Tabela um Campo Boolean
b) Criaria o evento OnClick Na Grid.. Talves seje necessário.. Ao clicar , marcaria este item , ou desmarcaria este item
Utilizaria um TStringGrid e o carregaria com os Items selecionados.. Para isto usaria uma Query que retornaria os items marcados
Isto é o primeiro passo...[/quote:0d5b4fa223]
MInhas tabelas são em interbase...num sei se tem estes campos no IB más simceramente já estou meio de saco cheio disto...de ficar tentando fazer uma coisa estética, porqie este negócio do cara ter que segurar o control e selecionar com o mouse,tá por fora...até achei um componete se cha infopower e tem uma opção de check box...más tudo que pesquizei referente a este gride é incompativel....más vamos ver o que dá..agora estou mais preocupado é com o lance do segundo form pois o cliente tem que ver o que está dando baixa...pois o mesmo pode estar apagando algo que sem querer selecionou...más o lance do segundo form vc acha que eu deveria criar uma tabela só para esta função ? más ainda ficaria o lance de como eu faria para atribuir valores de uma tabela para outra...estou na luta...valeu.....
Gostei + 0
18/08/2005
Marco Salles
No Ib Nun tem.. Mas isto não é problema
Mas Qual o Problema de carregar o TStringList com os valores marcados do Grid Do Form Principal :?: :?: :?: :?:
Gostei + 0
19/08/2005
Gigatel
No Ib Nun tem.. Mas isto não é problema
Mas Qual o Problema de carregar o TStringList com os valores marcados do Grid Do Form Principal :?: :?: :?: :?:[/quote:adfa6e74a9]
Cara sinceramente nem faço idéia de como seria o código para isto..
eu tentei isto em um listbox, más num é a mesma coisa..pois aki se trata de algo temporário..veja..
var ix : integer; begin if DBGrid1.SelectedRows.Count > 0 then begin for ix := 0 to DBGrid1.SelectedRows.Count - 1 do begin //???????? BD_CONT_REC.GotoBookmark(pointer(DBGrid1.SelectedRows.Items[ix])); ListBox1.Items.Add(BD_CONT_REC.FieldByName(´GS_COR_NOME´).AsString); end; end;
e neste caso se trata somente de um campo da tabela, eu prescisaria para estestcampos tbm...
GS_COR_DATA_VENC GS_COR_VALOR_PARCELA GS_COR_DESCRICAO GS_COR_DATA_CAD
talves se fosse somente um campo seria mais fácil..más a pessoa que está manipulando o programa tem a nescessidade de visualizar estas informações...
vlw..
Gostei + 0
19/08/2005
Marco Salles
Mas se voce não fizer , ou não necessitar que se tenha esta caixa , o mesmo pode ser feito com a opção dgMultiSelcted em True...
em vez de carregar nun ListBox , a idéia e carregar no StringList...
Mas isto são apenas detalhes... O Que esta faltando talves seje a utilização da Propriedade DbGrid1.SelectedRows..
Veja o código abaixo implementado para um Table e um listBox , que pode ser facilemnte estendido para qualquer situação
procedure TForm1.Button1Click(Sender: TObject); var ix : integer; BookMarkList:TBookMarkList; BookMark:TBookmarkstr; begin BookMark:=TAble1.bookmark; BookMarkList:=DbGrid1.SelectedRows; table1.disablecontrols; if DBGrid1.SelectedRows.Count > 0 then for ix := 0 to DBGrid1.SelectedRows.Count - 1 do begin Table1.booKmark:=BookMarkList[ix]; ListBox1.Items.Add(Table1.fieldByName(´Codigo_Funcionario´).AsString); end; TAble1.bookmark:=BookMark; Table1.enablecontrols; end;
Deu para fluir alguma coisa ou tem dúvida de algo....
Gostei + 0
19/08/2005
Gigatel
Gostei + 0
19/08/2005
Marco Salles
é tranquilo...
Gostei + 0