Como fazer funções para definir controles

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Paulo_CPV
Usuário Nível 3
Usuário Nível 3
Mensagens: 178
Registrado em: 07 Mar 2013 10:27
Localização: Jacarei/SP

Como fazer funções para definir controles

Mensagem por Paulo_CPV »

Bom dia!

Gostaria de saber se alguém pode me tirar a seguinte dúvida se é possível construir funções para definir controles no Minigui Extend, uso a versão 237, para que eu não precise ficar definindo controle por controle toda a hora e para otimizar a aplicação , como por exemplo:

Tenho os seguintes controles definidos:

Código: Selecionar todos

	DEFINE FRAME frame_1
		
		ROW 81
		COL 15)
		WIDTH 535
		HEIGHT 52
		CAPTION "Nome do Cliente"
		OPAQUE .T.
		FONTNAME "Arial"
		FONTSIZE 9
		FONTCOLOR PRETO
		FONTBOLD .T.
		BACKCOLOR BK_TEXTO0
		
	END FRAME

	DEFINE TEXTBOX TxNomeCli
		
		ROW 100
		COL 22
		WIDTH 521
		HEIGHT 18
		TOOLTIP 'Digite o nome do Cliente'
		FONTNAME "Arial"
		FONTSIZE 10
		FONTCOLOR PRETO
		FONTBOLD .T.
		BACKCOLOR BK_TEXTO3
		UPPERCASE .T.
		MAXLENGTH 60
		ON ENTER {|| oCadastro:PesqCli(janelaclientes.TxNomeCli.Value), janelaclientes.TxCepCli.SetFocus}

Para ser da seguinte forma:

Código: Selecionar todos

FUNCTION EntradaDados(nLinha,nColuna,nLargura,nAltura,cControle01,cControle02,cValor01,cValor02,Cor_Bk01,Cor_Bk_02,ntLinha,ntColuna,ntLargura,ntAltura,lMaiuscula,nTamanho,cRotina)

// nLinha,nColuna,nLargura,nAltura - São as coordenadas do controle Frame
// ntLinha,ntColuna,ntLargura,ntAltura - São as coordenas do controle TextBox
// cControle01,cControle02 - Sao os nomes dos controles
// cValor01 - Titulo da Frame
// cValor02 - Descrição do TextBox
// Cor_Bk01, Cor_Bk02 - São as cores de fundo da Frame e do TextBox
// lMaiuscula - Quando o texto for preenchido com letras maiúsculas
// nTamanho - Quantidade de caracteres para digitação
// cRotina - Rotina a ser executada pelo controle TextBox.
........
Será que isto é possível de ser implementado ou eu tenho que fazer uma função para o controle FRAME e outro para o controle TEXTBOX? Se alguém tiver algum exemplo para dividir comigo e me ajudar ou aonde eu poderei encontrar exempkos para estudar ficarei grato por isso.

[]'s
Paulo
Jacareí-SP
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Como fazer funções para definir controles

Mensagem por Pablo César »

Oi Paulo,

Os DEFINEs, nada mais é que a "tradução" de chamada de funções. Cada componente tem uma função e por geral é chamada desde um PRG. Por tanto é possível montar algo assim, não revisei com atenção mas eu não vejo o por quê não. Só que os DEFINEs tem também suas vantagens, pois na chamada de função de cada elementos, você vai precisar informar todos ou quase todos os parâmetros que necessitam cada componente e nesse DEFINEs que vem tanto na MiniGui Ext como na HMG e como outra bibliotecas gráficas, possuem tratamento desses parâmetros, seja para defini-los quando faltam ou quando precisa-se definir o componente de forma default ou especial.

Como disse em sintese, sim pode. Mas eu não abriria mão dos DEFINEs. Revise a sub-pasta SOURCE você encontrará ao menos um PRG para cada componente. Neste também poderá invocar funções na linguagem C.

Fazer de essa forma, requer um certo conhecimento de cada componente, suas variações, seu comportamento e o que se espera, Portanto, eu não abriira mão dos DEFINEs.

Espero ter sido esclarecedor.
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.
alxsts
Colaborador
Colaborador
Mensagens: 3100
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Como fazer funções para definir controles

Mensagem por alxsts »

Olá!

Se entendi bem a sua questão, o que você precisa é poder criar seus próprios componentes (User Defined Components).

Na pasta \SAMPLES\USER.COMPONENTS da instalação da HMG tem um exemplo (pouco claro). Talvez sirva para te dar alguma luz...
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Como fazer funções para definir controles

Mensagem por Toledo »

Paulo, segue um pequeno exemplo do que você pode fazer.

Código: Selecionar todos

#include "minigui.ch"

Function Main()

  SET NAVIGATION EXTENDED

  DEFINE WINDOW Form_1 ;
      AT 0,0 ;
      WIDTH 580 HEIGHT 300 ;
      TITLE 'Função para Definir Frame e TextBox' ;
      MAIN

      EntradaDados(10,15,535,52,"Frame_1","TxNomeCli",;
                   "Nome do Cliente","Digite o nome do Cliente",;
                   AQUA,YELLOW,;
                   29,22,521,18,.T.,60,{|| MsgInfo(Form_1.TxNomeCli.Value)})

      EntradaDados(70,15,535,52,"Frame_2","TxEndCli",;
                   "Endereço do Cliente","Digite o endereço do Cliente",;
                   AQUA,GREEN,;
                   89,22,521,18,.T.,60,{|| .T. })

  END WINDOW

  On Key escape Of Form_1 Action Form_1.release
  Form_1.Center
  Form_1.Activate

Return Nil

************************************
Function EntradaDados(nLinha,nColuna,nLargura,nAltura,cControle01,cControle02,cValor01,cValor02,Cor_Bk01,Cor_Bk02,ntLinha,ntColuna,ntLargura,ntAltura,lMaiuscula,nTamanho,cRotina)

  DEFINE FRAME &cControle01
      ROW nLinha
      COL nColuna
      WIDTH nLargura
      HEIGHT nAltura
      CAPTION cValor01
      OPAQUE .T.
      FONTNAME "Arial"
      FONTSIZE 9
      FONTCOLOR BLACK
      FONTBOLD .T.
      BACKCOLOR Cor_Bk01
  END FRAME

  DEFINE TEXTBOX &cControle02
      ROW ntLinha
      COL ntColuna
      WIDTH ntLargura
      HEIGHT ntAltura
      TOOLTIP cValor02
      FONTNAME "Arial"
      FONTSIZE 10
      FONTCOLOR BLACK
      FONTBOLD .T.
      BACKCOLOR Cor_Bk02
      UPPERCASE (lMaiuscula)
      MAXLENGTH nTamanho
      ON ENTER Eval(cRotina)
  END TEXTBOX

Return Nil
Abraços,
Anexos
definir_controle.zip
(639.36 KiB) Baixado 63 vezes
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Responder