... iTDTags = 1
ciTDTag := cTDTag
endif
cTDTags := cTDTags + ["] + alltrim(aTDCols[iTDTags]) + [":"] + cTDTag + ["] + iif(iTDTags=9,[],[,] + CRLF )
aadd( aTDTags, cTDTag )
next
cTRTags := cTRTags + [{] + CRLF + cTDTags + CRLF + [}] + iif(iTRTags=oTRTags:length,[],[, ] + CRLF )
aadd( aTRTags ...
Pesquisa resultou em 1825 ocorrências: +AAdd
Termo pesquisado: +aadd
- 13 Mar 2026 13:54
- Fórum: Legislação Fiscal e Tributária
- Tópico: Satus do SEFAZ CUPO/NFE
- Respostas: 5
- Exibições: 375
- 10 Mar 2026 12:02
- Fórum: [x]Harbour
- Tópico: PdfClass como fazer um retangulo com fundo colorido?
- Respostas: 8
- Exibições: 316
Re: PdfClass como fazer um retangulo com fundo colorido?
... pagamento e evite golpes"
cRawLogotipo := Logotipo( oBoleto:nBanco )
IF ! Empty( oBoleto:dDatDesconto ) .AND. ! Empty( oBoleto:nValDesconto )
AAdd( aPDFMsgList, "DESCONTO DE R$ " + LTrim( Transform( oBoleto:nValDesconto, "@E 999,999.99" ) ) + ;
" SE FOR PAGO ATÉ " + Dtoc( oBoleto:dDatDesconto ...
cRawLogotipo := Logotipo( oBoleto:nBanco )
IF ! Empty( oBoleto:dDatDesconto ) .AND. ! Empty( oBoleto:nValDesconto )
AAdd( aPDFMsgList, "DESCONTO DE R$ " + LTrim( Transform( oBoleto:nValDesconto, "@E 999,999.99" ) ) + ;
" SE FOR PAGO ATÉ " + Dtoc( oBoleto:dDatDesconto ...
- 18 Fev 2026 21:43
- Fórum: [x]Harbour
- Tópico: tela cheia no linux
- Respostas: 13
- Exibições: 815
Re: tela cheia no linux
... K_ALT_INS", 418, "Alt-Ins" }, ;
{ "K_ALT_DEL", 419, "Alt-Del" }, ;
{ "K_ALT_BS", 270, "Alt-Backspace" }, ;
{ "K_ALT_TAB", 421, "Alt-Tab" } }
AAdd( aKeys, { "K_CTRL_A", 1, "Ctrl-A, Home" } )
AAdd( aKeys, { "K_CTRL_B", 2, "Ctrl-B, Ctrl-Right arrow" } )
AAdd( aKeys, { "K_CTRL_C", 3, "Ctrl-C ...
{ "K_ALT_DEL", 419, "Alt-Del" }, ;
{ "K_ALT_BS", 270, "Alt-Backspace" }, ;
{ "K_ALT_TAB", 421, "Alt-Tab" } }
AAdd( aKeys, { "K_CTRL_A", 1, "Ctrl-A, Home" } )
AAdd( aKeys, { "K_CTRL_B", 2, "Ctrl-B, Ctrl-Right arrow" } )
AAdd( aKeys, { "K_CTRL_C", 3, "Ctrl-C ...
- 26 Jan 2026 22:54
- Fórum: [x]Harbour
- Tópico: En tiempo de ejecución error.log
- Respostas: 5
- Exibições: 776
Re: En tiempo de ejecución error.log
... structure" )
? oXmlNode:cName
oXmlNode := oXmlDoc:findFirst( "field" )
DO WHILE oXmlNode <> NIL
// attributes are stored in a hash
AAdd( aStruct, { oXmlNode:aAttributes[ "name" ] , ;
oXmlNode:aAttributes[ "type" ] , ;
Val( oXmlNode:aAttributes[ "len" ] ), ;
Val( oXmlNode ...
? oXmlNode:cName
oXmlNode := oXmlDoc:findFirst( "field" )
DO WHILE oXmlNode <> NIL
// attributes are stored in a hash
AAdd( aStruct, { oXmlNode:aAttributes[ "name" ] , ;
oXmlNode:aAttributes[ "type" ] , ;
Val( oXmlNode:aAttributes[ "len" ] ), ;
Val( oXmlNode ...
- 22 Jan 2026 22:58
- Fórum: HwGui
- Tópico: DESATIVAR TAB HWGUI 2.23 B8
- Respostas: 21
- Exibições: 1560
Re: DESATIVAR TAB HWGUI 2.23 B8
... lOk := .T.
IF Empty( cPathLeto )
RETURN .F.
ENDIF
BEGIN SEQUENCE
// 1) cria DBF se não existir
IF ! leto_file( cPathLeto + "psw.dbf" )
AAdd( aStru, { "USUARIO", "C", 10, 0 } )
AAdd( aStru, { "SENHA", "C", 10, 0 } )
AAdd( aStru, { "GRUPO", "C", 20, 0 } )
AAdd( aStru, { "ACESSO", "C ...
IF Empty( cPathLeto )
RETURN .F.
ENDIF
BEGIN SEQUENCE
// 1) cria DBF se não existir
IF ! leto_file( cPathLeto + "psw.dbf" )
AAdd( aStru, { "USUARIO", "C", 10, 0 } )
AAdd( aStru, { "SENHA", "C", 10, 0 } )
AAdd( aStru, { "GRUPO", "C", 20, 0 } )
AAdd( aStru, { "ACESSO", "C ...
- 22 Jan 2026 17:05
- Fórum: SQL
- Tópico: Carga do DBF para MySql/Postgres e LetoDbf juntos!
- Respostas: 16
- Exibições: 18498
Re: Carga do DBF para MySql/Postgres e LetoDbf juntos!
... IF PQresultStatus( res ) != PGRES_TUPLES_OK
? "Erro SQL:"
? PQresultErrorMessage( res )
RETURN aRet
ENDIF
FOR n := 1 TO PQntuples( res )
AAdd( aRet, DbRow( res, n ) )
NEXT
RETURN aRet
/* ========================================================= */
FUNCTION SqlFilter( conn, cTabela ...
? "Erro SQL:"
? PQresultErrorMessage( res )
RETURN aRet
ENDIF
FOR n := 1 TO PQntuples( res )
AAdd( aRet, DbRow( res, n ) )
NEXT
RETURN aRet
/* ========================================================= */
FUNCTION SqlFilter( conn, cTabela ...
- 11 Jan 2026 09:25
- Fórum: MiniGui
- Tópico: Ajuda na criação de Botões
- Respostas: 25
- Exibições: 1941
Re: Ajuda na criação de Botões
... os botões, pode facilitar.
Não tenho certeza se precisa mexer nos CHs pra aceitar igual HMG Extended.
aButtons := {}
...
DEFINE BUTTON ( "xxx" )
AAdd( aButtons, "XXX" )
...
A partir daí, pode verificar o array, como um array comum.
Não se esqueça que, se tiver exclusão no array, melhor ...
Não tenho certeza se precisa mexer nos CHs pra aceitar igual HMG Extended.
aButtons := {}
...
DEFINE BUTTON ( "xxx" )
AAdd( aButtons, "XXX" )
...
A partir daí, pode verificar o array, como um array comum.
Não se esqueça que, se tiver exclusão no array, melhor ...
- 09 Jan 2026 00:50
- Fórum: MiniGui
- Tópico: Ajuda na criação de Botões
- Respostas: 25
- Exibições: 1941
Re: Ajuda na criação de Botões
... ponteiro,2]>0 .AND. matriz_Botao_Artigo[ponteiro,2]<2
Carrega_Botoes_Artigos( aNomeButton )
matriz_Botao_Artigo[ponteiro,2] :=2
ENDIF
ELSE
AADD(matriz_Botao_Artigo, { aNomeButton, 1 })
ENDIF
ENDIF
Return Nil
Pergunto-lhe, acha que devo fazer um RELEASE aos botões quando mudo de grupo ou ...
Carrega_Botoes_Artigos( aNomeButton )
matriz_Botao_Artigo[ponteiro,2] :=2
ENDIF
ELSE
AADD(matriz_Botao_Artigo, { aNomeButton, 1 })
ENDIF
ENDIF
Return Nil
Pergunto-lhe, acha que devo fazer um RELEASE aos botões quando mudo de grupo ou ...
- 15 Dez 2025 16:45
- Fórum: [x]Harbour
- Tópico: Rotina em c# para harbour
- Respostas: 5
- Exibições: 970
Re: Rotina em c# para harbour
... msxml5r.dll', 'capicom.dll' }
// 1. Converter string em bytes (igual Encoding.GetBytes)
aBytes := {}
FOR i := 1 TO Len( cTextoOriginal )
AAdd( aBytes, Asc( SubStr( cTextoOriginal, i, 1 ) ) )
NEXT
// 2. Criar hash SHA1 dos bytes
aHash := hb_SHA1( aBytes )
oXml ...
// 1. Converter string em bytes (igual Encoding.GetBytes)
aBytes := {}
FOR i := 1 TO Len( cTextoOriginal )
AAdd( aBytes, Asc( SubStr( cTextoOriginal, i, 1 ) ) )
NEXT
// 2. Criar hash SHA1 dos bytes
aHash := hb_SHA1( aBytes )
oXml ...
- 12 Dez 2025 15:05
- Fórum: HwGui
- Tópico: Abas com texto control ainda nao funciona na versao 2.23
- Respostas: 51
- Exibições: 3965
Re: Abas com texto control ainda nao funciona na versao 2.23
... aCB[i,2] == cId
EXIT
ENDIF
NEXT
IF Empty( block )
IF i <= nLen
ADel( ::aCB, i )
::aCB := ASize( ::aCB, nLen - 1 )
ENDIF
ELSE
IF i > nLen
AAdd( ::aCB, { nId, cId, block } )
ELSE
::aCB[i,3] := block
ENDIF
ENDIF
RETURN Nil
METHOD Get( nId ) CLASS HPaintCB
LOCAL i, nLen, aRes
IF ...
EXIT
ENDIF
NEXT
IF Empty( block )
IF i <= nLen
ADel( ::aCB, i )
::aCB := ASize( ::aCB, nLen - 1 )
ENDIF
ELSE
IF i > nLen
AAdd( ::aCB, { nId, cId, block } )
ELSE
::aCB[i,3] := block
ENDIF
ENDIF
RETURN Nil
METHOD Get( nId ) CLASS HPaintCB
LOCAL i, nLen, aRes
IF ...
- 23 Nov 2025 14:44
- Fórum: Contribuições, Dicas e Tutoriais
- Tópico: Encontrando a rota entre duas UFs
- Respostas: 2
- Exibições: 533
Re: Encontrando a rota entre duas UFs
... aRotaOk
LOCAL cUFOrigem, aItem, cUF, aRotas, aUFList := {}
FOR EACH cUF IN aUFSource
IF hb_AScan( aUFList, { | e | e == cUF } ) == 0
AAdd( aUFList, cUF )
ENDIF
NEXT
IF Len( aUFList ) == 0
RETURN {}
ENDIF
IF Len( aUFList ) == 1
RETURN { aUFList[1] }
ENDIF
FOR EACH cUF IN ...
LOCAL cUFOrigem, aItem, cUF, aRotas, aUFList := {}
FOR EACH cUF IN aUFSource
IF hb_AScan( aUFList, { | e | e == cUF } ) == 0
AAdd( aUFList, cUF )
ENDIF
NEXT
IF Len( aUFList ) == 0
RETURN {}
ENDIF
IF Len( aUFList ) == 1
RETURN { aUFList[1] }
ENDIF
FOR EACH cUF IN ...
- 21 Nov 2025 16:35
- Fórum: Contribuições, Dicas e Tutoriais
- Tópico: Encontrando a rota entre duas UFs
- Respostas: 2
- Exibições: 533
Encontrando a rota entre duas UFs
... cUF )
//? "vizinhos", nPass, hb_ValToExp( aTrajeto )
//Inkey(10)
FOR EACH xItem IN aTrajeto
aNewList := {}
FOR EACH xItem2 IN aList2
AAdd( aNewList, xItem2 )
NEXT
AAdd( aNewList, xItem )
//? "adicionado", nPass, hb_ValToExp( { xItem, aNewList } )
//Inkey(10)
AAdd( aList, { xItem ...
//? "vizinhos", nPass, hb_ValToExp( aTrajeto )
//Inkey(10)
FOR EACH xItem IN aTrajeto
aNewList := {}
FOR EACH xItem2 IN aList2
AAdd( aNewList, xItem2 )
NEXT
AAdd( aNewList, xItem )
//? "adicionado", nPass, hb_ValToExp( { xItem, aNewList } )
//Inkey(10)
AAdd( aList, { xItem ...
- 20 Nov 2025 09:52
- Fórum: Contribuições, Dicas e Tutoriais
- Tópico: Fluxo dos fontes
- Respostas: 3
- Exibições: 663
Re: Fluxo dos fontes
... aFieldList, { | e | e[1] == aField[ DBS_NAME ] } )
IF nPos == 0
//? aField[ DBS_NAME ], aField[ DBS_TYPE ], aField[ DBS_LEN ], aField[ DBS_DEC ]
AAdd( aFieldList, { aField[ DBS_NAME ], 0 } )
nPos := Len( aFieldList )
ENDIF
aFieldList[ nPos, 2 ] += 1
NEXT
USE
NEXT
ASort( aFieldList,,, { | a ...
IF nPos == 0
//? aField[ DBS_NAME ], aField[ DBS_TYPE ], aField[ DBS_LEN ], aField[ DBS_DEC ]
AAdd( aFieldList, { aField[ DBS_NAME ], 0 } )
nPos := Len( aFieldList )
ENDIF
aFieldList[ nPos, 2 ] += 1
NEXT
USE
NEXT
ASort( aFieldList,,, { | a ...
- 20 Nov 2025 09:48
- Fórum: Contribuições, Dicas e Tutoriais
- Tópico: Fluxo dos fontes
- Respostas: 3
- Exibições: 663
Fluxo dos fontes
... pro contrário
FOR EACH aItem IN aPrgList
FOR EACH aItem2 IN aItem[3]
nPos := hb_AScan( aNewList, { | e | e[1] == aItem2[1] } )
IF nPos == 0
AAdd( aNewList, { aItem2[1], {} } )
nPos := Len( aNewList )
ENDIF
AAdd( aNewList[ nPos ][ 2 ], { aItem[1], {} } )
NEXT
NEXT
// tentar mover pra ...
FOR EACH aItem IN aPrgList
FOR EACH aItem2 IN aItem[3]
nPos := hb_AScan( aNewList, { | e | e[1] == aItem2[1] } )
IF nPos == 0
AAdd( aNewList, { aItem2[1], {} } )
nPos := Len( aNewList )
ENDIF
AAdd( aNewList[ nPos ][ 2 ], { aItem[1], {} } )
NEXT
NEXT
// tentar mover pra ...
- 17 Nov 2025 07:49
- Fórum: Contribuições, Dicas e Tutoriais
- Tópico: Corrigindo aplicativo antigo
- Respostas: 3
- Exibições: 530
Re: Corrigindo aplicativo antigo
... cLine ) + 1 )
cLine := Val( Substr( cLine, 1, At( ":", cLine ) - 1 ) )
nPos := hb_AScan( aPrgList, { | e | e[1] == cFile } )
IF nPos == 0
AAdd( aPrgList, { cFile, {} } )
nPos := Len( aPrgList )
ENDIF
AAdd( aPrgList[ nPos ][ 2 ], cLine )
ENDIF
NEXT
hb_MemoWrit( "test.txt", hb ...
cLine := Val( Substr( cLine, 1, At( ":", cLine ) - 1 ) )
nPos := hb_AScan( aPrgList, { | e | e[1] == cFile } )
IF nPos == 0
AAdd( aPrgList, { cFile, {} } )
nPos := Len( aPrgList )
ENDIF
AAdd( aPrgList[ nPos ][ 2 ], cLine )
ENDIF
NEXT
hb_MemoWrit( "test.txt", hb ...