Página 1 de 1
HMG - LISTAR NOME DE CAMPOS DURANTE EXECUÇÃO RUNTIME
Enviado: 02 Jan 2021 14:59
por microvolution
Boa tarde!
Tô aqui com uma dúvida.
Estou fazendo uma função genérica para pegar o conteúdo de um certo DBF/NTX e preencher uma ou várias matrizes com o conteúdo completo do DBF, tais como:
NOME_CAMPO
TIPO (N/C/D)
CONTEÚDO
Então pensei um do while .not. eof()
Dentro do WHILE pretendo usar um FOR/NEXT len NOME_CAMPO pra preencher o que precisamos.
Mas, estou com dúvida em quais funções internas da linguagem uso pra saber as informações acima.
Se alguém souber, agradecido ficarei!
Feliz 2021!
HMG - LISTAR NOME DE CAMPOS DURANTE EXECUÇÃO RUNTIME
Enviado: 02 Jan 2021 15:29
por alxsts
Olá!
Código: Selecionar todos
LOCAL i, nFCount
USE .... // abrir arquivo
DbGoTop ()
nFCount := FCount ()
WHILE! Eof ()
For i := 1 To nFCount
? FName (i) // nome do campo
? Valtype ( FieldGet (i) ) // tipo
? Transform (FieldGet (i), "" ) // conteúdo
Next
DbSkip ()
Enddo
DbCloseArea ()
RETURN
HMG - LISTAR NOME DE CAMPOS DURANTE EXECUÇÃO RUNTIME
Enviado: 02 Jan 2021 17:54
por microvolution
alxsts escreveu:nFCount := FCount ()
tinha pensado em algo como DBSTRUCT()... aí não lembrava de jeito nenhum do FCOUNT()
vou testar e darei o retorno a todos(as)!
HMG - LISTAR NOME DE CAMPOS DURANTE EXECUÇÃO RUNTIME
Enviado: 02 Jan 2021 22:32
por microvolution
microvolution escreveu:vou testar e darei o retorno a todos(as)!
fiz assim:
Código: Selecionar todos
WHILE! Eof ()
For i := 1 To nFCount
add item {FieldName(i),Transform (FieldGet (i),"")} to grid_pesquisa of form_pesquisa
Next
DbSkip ()
Enddo
Só que quero exportar isso para uma grid e simular um tbrowse... só que gera n_erros...
Quero que os cabeçalhos contenham o nome do campo e nas linhas abaixo os conteúdos em formato de planilha
Talvez se os moderadores mudassem este tópico para a MINIGUI facilitaria pra outros...
do jeito que está acima, tá muito estranho, parece que só vejo 2 colunas que são os campos do DBF. Mas, se o DBF tiver 3 campos, e aí?
LISTAR NOME DE CAMPOS DURANTE EXECUÇÃO RUNTIME
Enviado: 03 Jan 2021 02:55
por alxsts
Olá!
microvolution escreveu:Talvez se os moderadores mudassem este tópico para a MINIGUI facilitaria pra outros...
mas já está ... você colocou HMG.
Não mexo com MinGUI mas o fórum tem vários exemplos. Isto sem falar na pasta de exemplos da MiniGUI, que eu sei que existe. É só procurar...
O código abaixo está
neste tópico
Código: Selecionar todos
DEFINE GRID Grid_1
PARENT Form_Main
ROW 140
COL 405
WIDTH 360
HEIGHT 200
HEADERS {"Cod","Descricao","Cobrar S/N","Valor"}
COLUMNCONTROLS { {'TEXTBOX','NUMERIC','9'},{'TEXTBOX','CHARACTER','AAAAAAAAAAAAAAAAAAAA'},{'TEXTBOX','CHARACTER','A'},{'TEXTBOX','NUMERIC','9.99'} }
WIDTHS {40,200,80,55}
ITEMS aRows // se optar por usar ITEMS não pode usar ROWSOURCE e COLUMNFIELDS
// ROWSOURCE "DCI10035" // abre os campos da tabela DBF dentro do GRID automaticamente // campos da tabela DBF - se usar este tem q usar em conjunto o COLUMNFIELDS e não pode usar ITEMS aROWS
// COLUMNFIELDS { "DCI10035->DESCRICAO", "DCI10035->SIMNAO", "DCI10035->VALOR" } // campos da tabela DBF - se usar este tem q usar em conjunto o ROWSORCE e não pode usar ITEMS aROWS
CELLNAVIGATION .T.
DYNAMICFORECOLOR { fColor , fColor, fColor, fColor, fColor } // muda as cores de frente dinamicamente uma linha após a a outra
DYNAMICBACKCOLOR { bColor , bColor , bColor , bColor , bColor , bColor } // muda as cores de fundo dinamicamente uma linha após a aoutra 7/2/19w
ALLOWEDIT .T. // se estiver em .T. não funciona o ONDBLCLICK e funciona o COLUMNWHEN
// COLUMNVALID 1
// NOLINES .T. // desaparece as linhas de grade em .T.
JUSTIFY { BROWSE_JTFY_LEFT, BROWSE_JTFY_LEFT, BROWSE_JTFY_CENTER, BROWSE_JTFY_CENTER }
// COLUMNWHEN { { || This.CellValue <> nil } , Nil , Nil , Nil }
COLUMNWHEN { { || .F. } , { || .F. } , { || .T. } , { || .T. } } // trava/destrava colunas pra serem editadas. Mas, o ALLOWEDIT tem que estar em .T. pra funcionar
// LOCKCOLUMNS 2
// VALUE { 1 , 4 }
// ONDBLCLICK MOVE_GRID_ARQUIVO () // duplo click do mouse aciona esta função
// ONCHANGE MOVE_GRID_ARQUIVO () // apenas um click do mouse aciona esta função
// EDIT
// ALLOWAPPEND .T. // pra usar esse tem q usar o ROWSOURCE senão não funciona
// ALLOWDELETE .T. // pra usar esse tem q usar o ROWSOURCE senão não funciona
ONSAVE OnSaveTest()
END GRID
No teu caso, use ROWSOURCE com o nome da tua tabela. Em HEADERS coloque os nomes dos campos ou cabeçalhos que desejar. Em COLUMNFIELDS coloque o nome dos campos que deseja exibir. Analise as outras opções e ajuste conforme sua necessidade.
Edit:
Respondendo ao que pede o título do post, use o código abaixo:
Código: Selecionar todos
FUNCTION GetFieldNames()
LOCAL aFieldNames := {}, nFieldCount, nPos
USE SuaTabela SHARED NEW
nFieldCount := FCount()
For nPos := 1 To nFieldCount
AAdd( aFieldNames, FieldName( nPos ) )
Next
RETURN aFieldNames
Esta função pode ser usada em HEADERS na definição do grid
HMG - LISTAR NOME DE CAMPOS DURANTE EXECUÇÃO RUNTIME
Enviado: 03 Jan 2021 13:05
por Jairo Maia
Olá Alexandre,
alxsts escreveu:mas já está ... você colocou HMG.
Alexandre, agora está porque ele pediu para mudar para MiniGui. Foi trocado DBF do título por HMG para deixar claro a todos que ele está usando HMG. HMG usa MiniGui.
HMG - LISTAR NOME DE CAMPOS DURANTE EXECUÇÃO RUNTIME
Enviado: 03 Jan 2021 22:22
por alxsts
Olá!
Me perdoem. Eu não percebi a mudança no título do post. Valeu @Jairo.
HMG - LISTAR NOME DE CAMPOS DURANTE EXECUÇÃO RUNTIME
Enviado: 03 Jan 2021 22:40
por JoséQuintas
É que as LIBs causam confusão até nisso...
HMG é a MINIGUI original
HMG Extended, chamam de MINIGUI ou HMG
OOHG, chamam de OOHG, ou HMG orientada a objeto, ou minigui orientada a objeto
As três podem ser consideradas minigui ou hmg, e isso causa confusão.
Até a sintaxe.... pode ser a mesma, mas com menos ou mais opções.
HMG - LISTAR NOME DE CAMPOS DURANTE EXECUÇÃO RUNTIME
Enviado: 04 Jan 2021 14:20
por microvolution
JoséQuintas escreveu:OOHG, chamam de OOHG, ou HMG orientada a objeto, ou minigui orientada a objeto
mas afinal, qual diferença de ser OOP?
pois todas as 3 não são OOP?
HMG - LISTAR NOME DE CAMPOS DURANTE EXECUÇÃO RUNTIME
Enviado: 04 Jan 2021 16:18
por JoséQuintas
microvolution escreveu:pois todas as 3 não são OOP?
Não, mas simulam isso.
Mas isso fica pra outro post.
HMG - LISTAR NOME DE CAMPOS DURANTE EXECUÇÃO RUNTIME
Enviado: 04 Jan 2021 17:07
por microvolution
JoséQuintas escreveu:Mas isso fica pra outro post.
... aguardando...