hugalves 0 Denunciar post Postado Março 16, 2007 Olá,To com um problema. Tenho uma grid que possui 3 colunas:ID ESTADO PAÍSDaí eu tenho no clipboard isto:1 SAO PAULO BRASIL2 PERNAMBUCO BRASIL3 AMAZONAS BRASILE eu queria, que quando eu fosse na grid e apertasse control+v, adicionasse na grid em sua respectiva coluna, os itens. Tentei habilitar goEditing mas ele copia apenas em uma coluna. Alguém sabe como fazer isso?Valeu Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Março 16, 2007 Desenvolvi uma pequena forma assim: procedure TForm1.StringGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);var x, linha, coluna: integer; texto, aux: string;beginif ((Key = ord('V')) and (ssCtrl in Shift)) then begin texto:=Clipboard.AsText; if texto <> '' then begin aux:=''; coluna:=0; linha:=StringGrid1.RowCount - 1; x:=1; while x <= Length(texto) do begin if ((texto[x] = #13) and (texto[x + 1] = #10)) then begin StringGrid1.Cells[coluna,linha]:=aux; aux:=''; coluna:=0; Inc(linha); StringGrid1.RowCount:=linha + 1; Inc(x); end else begin if texto[x] = ' ' then begin StringGrid1.Cells[coluna,linha]:=aux; Inc(coluna); aux:=''; end else aux:=aux + texto[x] end; if x = Length(texto) then StringGrid1.Cells[coluna,linha]:=aux; Inc(x); end; end; end;end; No caso você teria de adicionar mais controles para fazer de forma certa a separação, pois da forma que eu fiz quando contiver espaços ele separa. Compartilhar este post Link para o post Compartilhar em outros sites
hugalves 0 Denunciar post Postado Março 16, 2007 marcio.theis,Funcionou legal cara, bem do jeito que eu queria! Valeu ae!! Tu poderia me explicar umas coisas?if ((Key = ord('V')) and (ssCtrl in Shift))ord seria pra pegar o ascii de um elemento? ssCtrl in shift é oq?? Como expressar o control?Abraço! Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Março 16, 2007 Isso, no caso o Ord vai pegar o n° Asc dele, e in Shift verifica se o Ctrl esta precionado. Compartilhar este post Link para o post Compartilhar em outros sites
hugalves 0 Denunciar post Postado Março 16, 2007 Entendi.Pra finalizar, o que significa o #13? e o #10? Espaço? Se sim, como você fez pra descobrir que ele corresponde a esse numero? Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Março 16, 2007 Significa Enter, no caso verifica o caracter atual e mais um para frente, o enter armazenado seria "#$D#$A" que significa "#13#10" Compartilhar este post Link para o post Compartilhar em outros sites
hugalves 0 Denunciar post Postado Março 18, 2007 Entendi..mas queria saber, como você sabe que o enter significa isso: "#13#10"? Tem alguma tabela que você confere isso? Como você "descobriu" isso?Valeu! Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Março 18, 2007 Neste caso aprendi com o tempo mesmo, debugando e entendendo o que ele gerava, passava, etc... Mas pode procurar pela tabela ASCII e ver os caracters todos com os seus códigos. Compartilhar este post Link para o post Compartilhar em outros sites