quinta-feira, 21 de maio de 2009

Mensagem Clarion com Pergunta - Clarion/matos/amarildo

CASE MESSAGE('Você deseja Gerar a página HTML?','Sucesso na geração do Arquivo',ICON:Question,BUTTON:Yes+BUTTON:No,BUTTON:No,1)
OF BUTTON:No
CYCLE
OF BUTTON:Yes
DeleteFile('\amarildo\a.txt')
end

Line Printer - Aumentar para limitacao caracteres - 21 05 09

hpvBuffer STRING(2048) <- aqui aumenta tamanho
Correção da limitação de 500 caracter por linha do Lineprint para 2048 caracteres. Esse erro foi verificado devido a remessa dos arquivos contabeis exigir 600 caracteres. Caso alguem passe por isso é só mudar dentro do template para o tamanho que achar necessário.

quarta-feira, 13 de maio de 2009

Clarion - Queue - Pegar Campos (13 05 09)

LOOP
Campo# += 1
Nome" = WHO(ListQueue,Campo#)
if Nome" = '' then
Campo# -= 1
BREAK
END
END

message(Campo#)

terça-feira, 12 de maio de 2009

Clarion - Programa Manual


program
map
testproc(string)
end

code
testproc('teste de ')

testproc procedure(mensagem)
code
message(mensagem)

sábado, 9 de maio de 2009

Clarion - Primeiro Programa - 09 05 09 08:20

program

map
testeproc
end

code
testeproc()

testeproc procedure
code
message('ola')

terça-feira, 5 de maio de 2009


Para mostrar texto na caixa de dialogo, coloque o seguinte comando..:

?Prompt2{PROP:Text} = 'Ex1 ' & |
'Cont1 ' & |
'fina.'

segunda-feira, 4 de maio de 2009

Clarion - Xml - IqXml - Como Fazer

!After Global Includes
INCLUDE('iQXML.inc','Equates')
--
!Before File Declarations
SOFTBALL FILE,DRIVER('TOPSPEED'),PRE(TEA),CREATE,BINDABLE,THREAD
LastNameKey KEY(TEA:LastName),DUP,NOCASE
Record RECORD,PRE()
Id LONG
FirstName STRING(30)
LastName STRING(30)
Hits SHORT
END
END

ASC2:ASCIIFile FILE,PRE(ASC2),DRIVER('ASCII'),NAME(ASCIIFileName),create
RECORD RECORD,PRE()
STRING STRING(5000)
END
END
----
!Inside the Global Map
INCLUDE('iQXML.inc','Modules')

domingo, 3 de maio de 2009

Diretorio - exemplo

\banco\exemplo\diretorio

Queue - Copiar em memoria

Queue - Copiar em memoria

loop a# = 1 to record(cola) by 1
bet(Cola,q#)
end

get(cola,campo) !Busca um resitro
add(cola)
put(cola)
delete(cola)

Form - apertar um botao

Form - apertar um botao

post(Event:Accepted,?boton)

Browse - subir,descer registro

Browse - subir,descer registro

Windo Manager - init - (pr-9000)

post(event:scrollUp,?browse) !subir um registro
post(event:scrollDown,?browse) !descer um registro
post(event:scrolltop,?browse) !primeiro um registro
post(event:scrollBottom,?browse)!ultimo um registro

Menu - PopUp Menu de um browse

Menu - PopUp Menu de um browse

Window Manager - Init - Prepare Alert Key(Pr-9001)

Brw1.PopUp.AddItemMimic('Texto',?Boton)

Menu - PopUp Menu de um browse

Menu - PopUp Menu de um browse

Window Manager - Init - Prepare Alert Key(Pr-9001)

Brw1.PopUp.AddItemMimic('Texto',?Boton)

Browse - Ordenar antes de abrir

Browse - Ordenar antes de abrir

Local Objects - Brows on Tabela - InitSort (pr-10000)

Brw1.SetOrder('tbl:Campo')

Browse - Resetar

Browse - Resetar

setcursos(cursor:wait)
brw1.ResetFromFile()
Brw1.ResetFromBuffer()
ThisWindow.Reset(True)
Setcursos

Browse - Resetar

Browse - Resetar

setcursos(cursor:wait)
brw1.ResetFromFile()
Brw1.ResetFromBuffer()
ThisWindow.Reset(True)
Setcursos

Browse - Chave composta em campos

Browse - Chave composta em campos

Chave de uma tabela
-------------------
Empresa
Cliente


colocar em Range Limite sempre o ultimo campo de uma chave que se quer limitar
no caso cliente

se quizer empresa colocar

TBL:EMPRESA=GLO:EMPRESA
BRW1.ADDRANGE(TBL:EMPRESA)
BRW1.APPLYRANGE()
thisWindow.Reset(True)

Se quizer cliente colocar

TBL:Cliente=GLO:Cliente
BRW1.ADDRANGE(TBL:EMPRESA)
BRW1.APPLYRANGE()
thisWindow.Reset(True)

Report - como colocar filtro antes de imprimir

Report - como colocar filtro antes de imprimir

Open Report - code (pr-5000)

ThisReport.SetFilterr('TBL:CAMPO1=xxx')
ThisReport.ApplyFilter()

Report - como colocar ordem antes de imprimir

Report - como colocar ordem antes de imprimir

Open Report - code (pr-5000)

ThisReport.SetOrder('TBL:CAMPO1','TBL:CAMPO2','-TBL:CAMPO3')
ThisReport.ApplyOrder()

Browse - controlar browse antes de um form

Browse - controlar browse antes de um form

Local Object - Browse on tabla - ask(Byte REquest) (pr-4999)

if request = insertREcord

Browse - controlar browse antes de um form

Browse - controlar browse antes de um form

Local Object - Browse on tabla - ask(Byte REquest) (pr-4999)

if request = insertREcord

Browse - filtrar antes de mostrar - 1

Browse - filtrar antes de mostrar

Local Object - Browse on tabla - ValidateRecord (pr-4500)

if condicion then return Record:Filtered;end

Browse - filtrar antes de mostrar - 1

Browse - filtrar antes de mostrar

Local Object - Browse on tabla - ValidateRecord (pr-4500)

if condicion then return Record:Filtered;end

Browse - filtrar antes de mostrar

Browse - filtrar antes de mostrar

Local Object - Browse on tabla - initsort (pr-10000)

if condicion = 1
brw1.setfilter('(tcon:cvp_b<>0)')
brw1.ApplyFilter()
end

Browse - como colocar codigo em cada registro lido

Browse - como colocar codigo em cada registro lido

Local Object - Browse on tabla - SetQueueRecord(pr-2500)

Browse - como colocar codigo em cada registro lido

Browse - como colocar codigo em cada registro lido

Local Object - Browse on tabla - SetQueueRecord(pr-2500)

Como forcar validacao de um campo

Como forcar validacao de um campo

Control events - Selected - Generated Code (pr-4000)

?campo{prop:touched} = true

Onde colocar codigo para validar em um campo form

Onde colocar codigo para validar em um campo form

Control Events - Accept - Generated Code (pr-7000)

if condicao
beep
message('Texto com erro','Texto ventada',&ICON:EXCLAMATION,BUTTON:CANCEL,BUTTON:CANCEL,1)
select(?)
cycle
end

se quizer testar todos botoes

case message('texto','texto1',icon:question,button:yes+button:no,button:no,1)
of button:no
select(?)
cycle
of button:yes
end

Como Sair antes de abrir windows

Como Sair antes de abrir windows

return level:fatal

Colocar Codigos depois do form - inclusao-alteracao-exclusao

Colocar Codigos depois do form - inclusao-alteracao-exclusao

Window Manager - Takecompleted (pr-5001)

if sef.request = insertREcord
if sef.request = changeREcord
if sef.request = DeleteREcord

Colocar Codigos antes do form - inclusao-alteracao-exclusao

Colocar Codigos antes do form - inclusao-alteracao-exclusao

Window Manager - Takecompleted (pr-5000)

if sef.request = insertREcord
if sef.request = changeREcord
if sef.request = DeleteREcord

Saber modo - inclusao/alteracao/exclusao

Antes de abrir saber qual modo

ADD-CHANGE-DELETE-VIEW

Window Manager - Init - Open the window(pr-8000)

IF SELF.REQUEST = INSERTRECORD
IF SELF.REQUEST = CHANGERECORD
IF SELF.REQUEST = VIEWRECORD
IF SELF.REQUEST = DELETERECORD

Igualar duas tabelas

Igualar os registros de duas tabelas

tb1:record :=: tb2:record

iguala duas tabelas indepedente das posicoes dos campos

Arquivos - Acesso Sequencial

Clear(tbl:record)
tbl:campo=xxx
set(tbk:chave,tbl:chave)
loop until access:tabla.next()
xxx
end

Excluir Registro

Clear(tbl:record)
tbl:campo=xxx
access:tabla.fetch(tbl:chave)
if error()
access:Tabla:deleterecord()
relate:tabla.delete(0)
delete(tabla)
end

Alterar - Registro

Clear(tbl:record)
tbl:campo=xxx
access:tabla.fetch(tbl:chave)
if error()
tbl:campo=xxx
access:Tabla:update()
end

Incluir - Registro

Clear(tbl:record)
tbl:campo=xxx
access:tabla.insert()
if error()
end

Acessa a um registro

clear(tbl:record_
tbl:campo=xxx
access:tabla.fetch(tbl:chave)
if not error()
end

String - Instring

Texto CLASS
Frase String(200), PROTECTED
Palabra String(20), PROTECTED
Puntero Short, PROTECTED
Delimitadores String(20), PRIVATE

Construct PROCEDURE
Inicio PROCEDURE(String Frase)
SigPalabra PROCEDURE, String
END


Texto.Construct PROCEDURE()
CODE
!cualquiera de estos caracteres pueden separar palabras
SELF.Delimitadores = ' ,;.-()][}{{_:<<>\/@#ºª^?¿¡!|"'''
SELF.Puntero = 1

Texto.Inicio PROCEDURE(String Frase)
CODE
SELF.Puntero = 1
SELF.Frase = Frase

Texto.SigPalabra PROCEDURE()
DESDE SHORT
HASTA SHORT
LETRA STRING(1)
CODE
SELF.Palabra = ''
!primero busco donde comienza la siguiente palabra (elimino delimitadores)
LOOP DESDE = SELF.Puntero TO 200
IF NOT INSTRING(SUB(SELF.Frase,DESDE,1), SELF.Delimitadores,1,1)
THEN BREAK.
END

LOOP HASTA = DESDE TO 200
Letra = SUB(SELF.Frase,HASTA,1)
IF INSTRING(Letra, SELF.Delimitadores,1,1)
BREAK
ELSE
SELF.Palabra = CLIP(SELF.Palabra) & Letra
END
END
SELF.Puntero = HASTA + 1
RETURN(SELF.Frase[Desde : Hasta])

Clarion - http direto no clarion - baixar arquivo

Http - direto no clarion
\banco\exemplo\http

Clarion - Gravar direto api windows txt

\BANCO\EXEMPLO\TXT\WRITE.APP - EVOLUTION

!Variaveis
Texto cstring 10.000
FileName cstring 200
!Variavies

!Inside the Global Map
MODULE('Windows API')
_lcreat(*CSTRING,SIGNED),SIGNED,PASCAL,RAW
_hwrite(SIGNED,*CSTRING,LONG),LONG,PASCAL,RAW
_lclose(SIGNED),SIGNED,PASCAL
END

!CODE

IF NOT FILEDIALOG('Guardar como',FileName,'Text|*.TXT|Source|*.CLW',FILE:Save + FILE:LongName)
CYCLE
END
F# = _lcreat(FileName,0)
X# = _hwrite(F#,Texto,LEN(Texto))
X# = _lclose(F#)

!code