Página 1 de 1

Como não usar Macro Substituição nesse caso:

Enviado: 19 Out 2018 19:43
por NiltonGM
Amigos,

O que eu faço para não usar macro substituição no caso baixo onde uso &cForm_1.

Código: Selecionar todos


Procedure AtivaFormExemplo( cForm )

        IF IsWIndowActive( &cForm. )   // Aqui vai bem
            DoMethod( cForm, "MINIMIZE" )
            DoMethod( cForm, "RESTORE" )
            DoMethod( cForm, "SETFOCUS" )
         ELSE
            LOAD WINDOW &cForm.  // Aqui dá pau!  (Error F0029  Can't open #include file '&cForm..fmg, se eu tirar o ponto, tbm da erro #include file &cForm.fmg, ou se tirar a macro da erro #include file cForm.fmg)
            ON KEY ESCAPE OF &cForm. ACTION DoMethod( cForm, "RELEASE" )   // Aqui não sei se vai dar erro ou não, não chega a compilar por causa do erro da linha acima.
            DoMethod( cForm, "CENTER" )
            DoMethod( cForm, "ACTIVATE" )
        ENDIF

Alguém tem algo melhor pra não usar a Macro "&cForm."??

Como não usar Macro Substituição nesse caso:

Enviado: 20 Out 2018 10:22
por rubens
Bom dia..

Tente coloca o cForm entre parenteses..
LOAD WINDOW (cForm)

Só um palpite...

* Não funciona... vamos ver se aparece mais resposta

Rubens

Como não usar Macro Substituição nesse caso:

Enviado: 20 Out 2018 11:15
por Toledo
Amigos, este comando LOAD WINDOW, que está dentro do i_window.ch, está da seguinte forma:
MiniGui Extended:
#xcommand LOAD WINDOW <w> ;
=> ;
_HMG_TempWindowName := <"w"> ;;
DECLARE WINDOW <w> ;;
DECLARE CUSTOM COMPONENTS <w> ;;
#include \<<w>.fmg\>

HMG - MiniGui Oficial:
#xcommand LOAD WINDOW <w> ;
=> ;
DECLARE WINDOW <w> ;;
_HMG_SYSDATA \[ 214 \] := <"w"> ;;
#include \<<w>.fmg\>
Não testei, mas será que se no lugar do LOAD WINDOW você colocar os comandos abaixo não vai funcionar:

Código: Selecionar todos

_HMG_TempWindowName := cForm
   DECLARE WINDOW &cForm.
   DECLARE CUSTOM COMPONENTS &cForm.
   #include cForm+".fmg"
Abraços,

Como não usar Macro Substituição nesse caso:

Enviado: 20 Out 2018 16:20
por NiltonGM
Oi Toledo, parece que funciona, vou testar, mas descobrir que mesmo se funcionar, vou ter outros problemas, é que eu estava criando uma classe para controlar os componentes do form, percebi que se eu criar o formulário dentro da classe (objeto), é criada uma nova linha do "tempo" rs, Todas as funções ou Procedures dentro do prg que criou o objeto não é mais acessível.

prg_fonte_1.prg Linha to tempo 1 ------ cria objeto para o Form_1 ------ Procedures Form_1_OnInit(), etc...
class_fonte_1.prg Linha do tempo 2 |__cria Form_1 dentro da classe_______ não encherga a Procedures Form_1_OnInit(), etc...

Como não usar Macro Substituição nesse caso:

Enviado: 20 Out 2018 16:23
por alxsts
Olá!

Mas o exemplo do Toledo também utiliza macro substituição...

Como não usar Macro Substituição nesse caso:

Enviado: 20 Out 2018 16:26
por JoséQuintas
Não dá pra usar DoMethod( oForm, "load" ) ???

Como não usar Macro Substituição nesse caso:

Enviado: 21 Out 2018 06:17
por asimoes
Experimenta colocar entre ( )