Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

sweet-tooth

pra adicionar linhas no MSHFlexGrid via código

Recommended Posts

Olá.

Eu to fazendo a tela de vendas aqui ainda,e estou tendo problemas de novo.

O MHSFlexGrid,é uma tabela,onde você deve dizer em qual linha e coluna cada registro vai entrar.O problema de usar ele pra tela de venda,é que nunca se sabe quantos produtos vão haver na lista de compras do cliente,por isso eu posso precisar colocar registros apenas na primeira linha (o mínino possível pra efetuar uma venda),ou colocar em N linhas.E como não tem como saber quantas linhas vou usar,tenho que criar uma rotina pra ir adicionando uma linha a cada produto que será adicionado.

Caso contrário teria que colocar um numero aleatório e alto de linhas,tipo umas 30 para nunca estourar,mas o que quero,é colocar apenas uma linha de início,se for preciso inserir outro produto,as linhas vão sendo adicionada e instantaneamente os registros nelas.

 

O código a seguir,foi colocado no LostFocus da caixa textproduto (onde se escreve o nome),foi feita uma rotina,que se o Flex (assim que chamo meu componente MHSFlexgrid em questão) estiver "diferente de vazio",deve pular para a segunda parte do código,caso contrário ele insere os registros na primeira linha normalmente,lá vai:

OBS:COMO NÃO ESTOU CONSEGUINDO APLICAR FORMATAÇÃO AQUI,NADA DE NEGRITO,QUOTE E ETC VOU POSTAR EM CAIXA ALTA OS TRECHOS QUE QUISER CHAMAR A ATENÇÃO XD

 

--------------------------------------------------------------------------------------------------------------------------------------------------

AQUI É PESQUISADO SE É FIM DE ARQUIVO E,SE A FLEX JÁ TEM ALGUM REGISTRO,CASO TENHA ELE DEVERÁ SER INSERIDO NA LINHA SEGUINTE,FUNÇÃO DA SEGUNDA PARTE DO CÓDIGO.

 

If Not .EOF Then

 

With flex

 

If flex <> "" Then

GoTo outro >>>>>>> Se a caixa já estiver preenchida com algo,ele vai para parte "OUTRO" do código e pula essa parte

End If

 

 

AQUI SÃO VALORES PARA ALGUMAS VARIÁVEIS DECLARADAS

 

linha = 1 '>>>>>>>>>> é a variável que especifica a linha como não sei ao certo quantas linhas terão nada de valor fixo

coluna = 0 '>>>>>>> usada para específicar a coluna

 

AGORA ADICIONANDO OS VALORES TIRADOS DO SQL

 

flex.TextMatrix(linha, coluna) = rs![cod_prod] >>>no momento linha = 1 e coluna = 0

coluna = coluna + 1

flex.TextMatrix(linha, coluna) = rs![produto_prod] >>>>agora linha =1 e coluna =1

coluna = coluna + 1

flex.TextMatrix(linha, coluna) = rs![tipo_prod] >>>> agora linha=1 e coluna=2,e é a ultima coluna

coluna = 0 >>>agora coluna volta a ser 0

linha = linha + 1 >>> linha=1+1....Assim a variável linha passa a valer 2,e será usada para inserir registros na próxima linha

 

OUTRA PARTE DO CÓDIGO QUE INSERE REGISTROS NA LINHA SEGUINTE

 

outro:

flex.TextMatrix(linha, coluna) = rs![cod_prod] >>>>>>>Lembrando que agora linha = 2 e coluna = 0

coluna = coluna + 1

---------------------------------------------------------------------------------------------------------------------------------------------------

Basicamente é isso.Se a Flex estiver vazia,o os registros são inseridos normalmente na primeira linha,se ela estiver preenchida com algum registro,deve-se colocar os registros na linha seguinte.

 

AQUI VEM AS DÚVIDAS:

 

1ºComo adiciono as benditas linhas adicionais?Sem elas nada feito,a não ser que eu coloque um valor altíssimo inicial de linhas.(barrrgghhhh) Eu tentei usar o comando rows = rows + 1,mas não adiantou,o valor retornado para rows = rows +1 é "False" e não o incremento de 1 no numero de linhas.

 

2ºComo que eu faria para repetir a perte "OUTRO:" do código?Digo,uma vez que haja algum registro na Flex,e não sei quantos produtos terei que adicionar,essa rotina tem que se repetir,até a operação ser finalizada para sempre adicionar registros em novas linhas,como que faria pra repetir isso?Eu sei que deve dar pra fazer isso com um while/until e afins,mas não sei como fazer,eu só usei esses parametros em Pascal,no VB nada até agora.

 

3ºComo que eu faria pra contar quantas linhas estão preenchidas na Flex?Porque se a linha 1 estiver preenchida,o registro seguinte entra na linha 2,se a 2 estiver preenchida,o próximo vai pra 3,e depois para 4,e assim por diante.Por isso acho que precisaria contar as linhas para inserir.

 

Bom pessoal é isso.

Caso alguem possa ajudar,mesmo que seja com apenas um desses problemas eu ficaria agradecido.

Ah,e outro problema que me acontece quando uso um valor fixo de linhas inicialmente,quando eu adiciono registro,é adicionado o valor de uma das células sempre na ultima linha primeira coluna,vejam o exemplo com 3 linhas (ta aí a importancia de novo de poder adicionar linhas conforme produtos são adicionados)

 

Notem a primeira coluna da ultima linha.

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se voce estiver inserindo a partir de um conjunto de registros, torna-se fácil adicionar o número de linhas necessárias para este conjunto, utilize a função conjunto.recordcount.Insira antes de alimentar a grid a seguinte instrução:seuFlexGrid.Rows = SeuConjunto.RecordCount + 1Isto fará com que seu grid tenha tantas linhas quanto o número de registros à visualizar mais a linha de cabeçalho.Lauro

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.