Clipper On Line • Ver Tópico - macro / bloco de codigo

macro / bloco de codigo

Discussão sobre a biblioteca Fivewin - O Clipper para Windows.

Moderador: Moderadores

 

macro / bloco de codigo

Mensagempor Igor Fricks » 11 Fev 2017 10:24

Ola pessoal,

Estou iniciando nessa linguagem e venho lendo muita coisa nesses últimos meses e acabei me deparando com um problema!
Estou tentando executar um comando através de uma macro ou bloco de código e não consigo.

Estou tentando jogar o comando inteiro de um listbox em uma variavel e tentando executar ela.

cPrg := " Redefine ListBox oLbx Fields "+cCampos"" HEADERS "+cTitulos+" id 4005 Of oDlg ON CHANGE (cRegistro:= "+cAlias+"->(OrdKeyNo()) ,cTotReg:= cDe+' '+ALLTRIM(TRANSFORM("+cAlias+"->(Reccount()),'@E 999,999')),oSay4:Refresh(),oGet:Refresh()) "
&cPrg

como eu deveria executar essa variavel cPrg?

Eu consegui executar fazendo assim:
Redefine ListBox oLbx Fields &cCampos HEADERS &cTitulo id 4005 Of oDlg ;
ON CHANGE (cRegistro:= (cAlias)->(OrdKeyNo()) ,cTotReg:= cDe+" "+ALLTRIM(TRANSFORM((cAlias)->(Reccount()),'@E 999,999')),oSay4:Refresh(),oGet:Refresh())

mas como pretendo colocar várias linhas de comando de uma função contidas na mesma variável, essa solução não vai me servir.
estou usando uma base em DBF e usando o peles para desenhar os formulários.

Espero que logo estudando bastante possa colaborar com vcs também.

Obrigado,
Igor Fricks
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 2
Data de registro: 03 Jan 2017 12:20
Cidade/Estado: Santo André / SP
Curtiu: 0 vez
Mens.Curtidas: 0 vez

macro / bloco de codigo

Mensagempor wmanesco » 11 Fev 2017 21:50

Olá Igor,

Sinceramente nunca usei muito a opção de macro do harbour, mas as vezes em que precisei usar, notei que não consigo acessar constantes através dela, por exemplo...

Nunca tentei definir um componente do fivewin assim, não sei qual comportamento teria.

Não entendi direito seu problema, por que usar o macro?

Por que vai montar uma string definindo vários componentes e vai concatenando na variavel para executar depois? Se conseguir explicar um pouco melhor talvez nós possamos dar alguma solução alternativa para voce!

Abraços
William Manesco
Harbour 3.x | Fivewin | BCC | MySQL (TDolphin) | HBQT | HBIDE | Atom
wmanesco
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 116
Data de registro: 09 Set 2016 13:18
Cidade/Estado: ITAJAI - SC
Curtiu: 13 vezes
Mens.Curtidas: 4 vezes

macro / bloco de codigo

Mensagempor fladimir » 11 Fev 2017 22:11

Da uma lida akive se te ajuda, apesar de ser outra lib grafica o assunto é macro etc... pode ser q te auxilie.
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2434
Data de registro: 15 Nov 2006 19:21
Curtiu: 28 vezes
Mens.Curtidas: 157 vezes

macro / bloco de codigo

Mensagempor rochinha » 12 Fev 2017 00:05

Amiguinhos,

Olhando por cima o que o igor pretende é executar scripts xBase.

Então neste caso o caminho não seria por macrosubstituição e sim pelo uso de HBRun ou similar.

Dê uma olhada no tópico Compilar função em tempo de execução
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes

macro / bloco de codigo

Mensagempor Pablo César » 12 Fev 2017 19:48

Não sei quase nada sobre FiveWin, mas acho que o Rochinha tem razão.

O proprio Harbour pode te ajudar a interpretar código, principalmente esse includes que a FW, HMG, etc possuem.

Esperoq ue te ajude este (mesmo que feito em HMG) você poderá entenderas funções do Harbour de pre-compilação: http://www.hmgforum.com/viewtopic.php?p=47483#p47483
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

macro / bloco de codigo

Mensagempor Igor Fricks » 12 Fev 2017 20:40

a minha ideia é principal é usar uma macro para poder inserir campos nas dialog sem ter que toda vez mexer no código fonte. Inseriu na tabela já aprece na dialog!

Oi Rochinha... li o link e tentei fazer isso:

cMacro := " Redefine ListBox oLbx Fields "+cCampos+" HEADERS "+cTitulo+" id 4005 Of oDlg "
cPCode := HB_MacroCompile( cMacro )
bBlock := &( "{||" + cMacro + "}" )
HB_VMExecute( cPCode )
EVal( bBlock )

e deu esse erro:
Descricao: Erro BASE/1449 Erro de sintaxe: &
na linha do HB_MacroCompile

pode ter algo a ver com a versão do harbour?
estou usando a xharbour902.
Igor Fricks
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 2
Data de registro: 03 Jan 2017 12:20
Cidade/Estado: Santo André / SP
Curtiu: 0 vez
Mens.Curtidas: 0 vez

macro / bloco de codigo

Mensagempor rochinha » 13 Fev 2017 02:15

Amiguinhos,

Neste caso voce deveria usar assim no lugar de bBlock := &( "{||" + cMacro + "}" )
bBlock := eval( "{||" + cMacro + "}" )


Não sei qual versão de Fivewin você está utilizando mas acho que a apartir das versões 11 tinha um exemplo que usava a classe xBrowse montando dois browses onde no primeiro voce navegava pela lista de registros de uma tabela enquanto o outro browse apresentava todos os campos do registro corrente permitindo edição.

Outro exemplo que pode te ajudar a gerar as telas on-the-fly é o DBF2RC.prg que a partir de um .DBF gera todos os DEFINES e REDEFINES necessários.

Vale a pena olhar eles e afiná-los, pois eles tem alguns buguesinhos.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes




Retornar para FiveWin

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 9 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro