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 11: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 13:20
Cidade/Estado: Santo André / SP
Curtiu: 0 vez
Mens.Curtidas: 0 vez

macro / bloco de codigo

Mensagempor wmanesco » 11 Fev 2017 22: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: 106
Data de registro: 09 Set 2016 14:18
Cidade/Estado: ITAJAI - SC
Curtiu: 12 vezes
Mens.Curtidas: 3 vezes

macro / bloco de codigo

Mensagempor fladimir » 11 Fev 2017 23: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”
.


Harbour 3.4.0dev (4541270) (2016-06-28 07:05) | Console | MINGW | DBF | CDX | FastReport | MySQL
Harbour 3.2 | MinGW | Xailer 4.0.2 | MariaDB Nativo | Outros via ADO | FastReport
Avatar de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2027
Data de registro: 15 Nov 2006 20:21
Curtiu: 14 vezes
Mens.Curtidas: 93 vezes

macro / bloco de codigo

Mensagempor rochinha » 12 Fev 2017 01: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 : ? )

O cara pode até ser feio, mas se ele for honesto, cheiroso, trabalhador,... vai continuar feio, porque, ..., uma coisa não tem nada a ver com a outra.


Sou Corinthiano, mas também torço para São Paulo, Palmeiras, Santos em campeonatos internacionais, portanto, Corinthians no coração e Harbour na cabeça.

[color=#FFFFFF]
"...Feliz aquele que transfere o que sabe e aprende o que ensina. Cora Coralina..."
[color=#FFFFFF]"...Acharam que eu estava derrotado, quem achou estava errado, eu voltei, tô aqui, tô firmão, tô na correria, sô guerreiro, sô vaso ruim de quebrar, tô de volta pro mundão..."
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 3915
Data de registro: 18 Ago 2003 21:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 367 vezes
Mens.Curtidas: 152 vezes

macro / bloco de codigo

Mensagempor Pablo César » 12 Fev 2017 20: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: 5539
Data de registro: 31 Mai 2006 11:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 149 vezes

macro / bloco de codigo

Mensagempor Igor Fricks » 12 Fev 2017 21: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 13:20
Cidade/Estado: Santo André / SP
Curtiu: 0 vez
Mens.Curtidas: 0 vez

macro / bloco de codigo

Mensagempor rochinha » 13 Fev 2017 03: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 : ? )

O cara pode até ser feio, mas se ele for honesto, cheiroso, trabalhador,... vai continuar feio, porque, ..., uma coisa não tem nada a ver com a outra.


Sou Corinthiano, mas também torço para São Paulo, Palmeiras, Santos em campeonatos internacionais, portanto, Corinthians no coração e Harbour na cabeça.

[color=#FFFFFF]
"...Feliz aquele que transfere o que sabe e aprende o que ensina. Cora Coralina..."
[color=#FFFFFF]"...Acharam que eu estava derrotado, quem achou estava errado, eu voltei, tô aqui, tô firmão, tô na correria, sô guerreiro, sô vaso ruim de quebrar, tô de volta pro mundão..."
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 3915
Data de registro: 18 Ago 2003 21:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 367 vezes
Mens.Curtidas: 152 vezes




Retornar para FiveWin

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 1 visitante


Faça uma doação para o forum
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro