[RESOLVIDO] Como Saber a Linha do Browser

Discussão em 'EMS , HCM e Totvs 11' iniciado por roberto_branco, Maio 23, 2012.

Status do Tópico:
Não esta aberto para novas mensagens.
  1. roberto_branco

    roberto_branco Sem Pontuação

    Bom Dia Pessoal,

    Alguém sabe me dizer o comando para saber em qual linha do Browser o usuario Clicou ?

    Obrigado,

    Roberto Branco
  2. yurifranzoni

    yurifranzoni Sem Pontuação

    Não seria algo assim?

    Código:
    get current nome-do-browse.
    if avail tabela-do-browse then do:
       /* aqui vai a lógica */
    end.
    
    O get-current vai verificar a linha selecionada no browse e apontar para o registro correspondente na tabela vinculada a esse browse. Aí com o avail, você vê se o registro da tabela vinculada foi encontrado ou não. É mais ou menos isso.

    Depende se vc está precisando dessa lógica pra um programa específico que você está criando ou se vc precisa interagir através de alguma UPC no EMS. Dê mais detalhes que se eu puder lhe ajudo.

    Abraços
  3. roberto_branco

    roberto_branco Sem Pontuação

    Boa Tarde Yuri,

    Acho que não dá como voce sugeriu.
    Veja a parte do codigo onde preciso identifcar a linha que o usuario está, é porque dependendo de determinada condição, preciso desmarcar a linha.
    Eu tentei fazer um loop para pegar a linha, mas não deu certo, quando tem uma linha só marcada, beleza, funciona.
    Mas quando tem mais linhas selecionadas, desmarca a linha ERRADA.
    veja o codigo:
    Isso está dentro de um value-changed.
    DO:
    IF br-digita:ROW-MARKERS = YES
    THEN DO:
    IF tt-neces.ind-cor BEGINS "Man"
    THEN NEXT.
    ELSE
    IF tt-neces.consumo-prev < 1
    THEN NEXT.
    ASSIGN i-cont-row = 0.
    IF INTE(tt-neces.qt-orig:SCREEN-VALUE IN BROWSE br-digita) > tt-neces.consumo-prev
    THEN DO:
    IF INTE(tt-neces.qt-orig:SCREEN-VALUE IN BROWSE br-digita) > tt-neces.lote-mult
    THEN DO:
    MESSAGE "Compra Nao pode Ser Maior que o Consumo ou o Lote Multiplo "
    VIEW-AS ALERT-BOX INFO BUTTONS OK.
    IF tt-neces.consumo-prev < 1
    THEN NEXT.
    DO i-cont-row = 1 TO BROWSE br-digita:NUM-SELECTED-ROWS:

    /*
    br-digita:DESELECT-ROWS ( ) IN FRAME f-pg-dig.
    */

    IF br-digita:FETCH-SELECTED-ROW (i-cont-row) IN FRAME f-pg-dig = yes
    THEN DO:
    BROWSE br-digita:DESELECT-SELECTED-ROW (i-cont-row).
    END.
    END.
    END.
    END.
    END.
    END.
  4. eriutoncharles

    eriutoncharles Membro Participativo

    Boa Tarde !!

    Rapaz... Acho que vc vai precisar criar uma tabela temporária e preencher ela na OPEN Query... Onde alimenta os dados que vão para o Browse.

    Uma Vez alimentada a tt vc guardaria nela a chave primária dos dados.. tipo, guarda o Código e a posição que ela está sendo mostrada no Browse.

    Ex... Tabela Teste.. Com Código e Descrição.

    Código:
    DEF TEMP-TABLE ttTeste FIELD Codigo AS INT, FIELD Linha AS INT.
    DEF VAR vLinha AS INT.
    
    Vc Faria uma Procedure mandando abrir a query do Browse na mão.

    Código:
    OPEN QUERY  BROWSE-1 FOR EACH  Teste NO-LOCK  BY Teste.Codigo . 
    
    AI vc daria um FOR EACH na Mesma Ordem(BREAK BY) que está sendo mostrado no Browse.

    Código:
    ASSIGN vLinha = 0.
    FOR EACH Teste BREAK BY Teste,Codigo.
    ASSIGN vLinha = vLinha + 1.
    
    FIND ttTeste WHERE ttTeste.Codigo = Teste.Codigo NO-ERROR.
       IF NOT AVAIL ttTeste THEN DO:
           CREATE ttTeste.
           ASSIGN ttTeste.Codigo = Teste.Codigo
                       ttTeste.Linha   = vLinha.
       END.
    END.
    
    AI Lá no Browse.. no Value-ch... vc daria um FIND na Tt e veria a posição de acordo com o código da tabela.

    Entendeu?
    Acho que assim dá certo, vc saberia se é a ultima.. penultima.. primeira...
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página