Clipper On Line • Ver Tópico - Como vocês resolveriam esse problema ? (OnLostFocus)

Como vocês resolveriam esse problema ? (OnLostFocus)

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Como vocês resolveriam esse problema ? (OnLostFocus)

Mensagempor Vlademiro » 15 Mai 2020 03:40

Pessoal, estou estudando HMG (Hmg3.4.4) na quarentena. Sou iniciante, apesar de já ter usado Minigui há muitos anos.

Vou apresentar um probleminha (mas que pode ser um problemão quando tenho forms com muitos controles)

( 1 ) O objetivo : Quando uso o evento OnLostFocus para tratar dados em um Text, as vezes existe um erro no valor (CPF incorreto, por exemplo) e o controle não deve perder o foco. Devo, então, evitar que o controle Text perca o foco para que o usuário faça as devidas correções.

Até aí tudo blz. No exemplo abaixo o campo Text_1 tem a Procedure Text01 associada ao seu evento OnLostFocus.

PROCEDURE Text01

   MsgInfo("Faz de conta que aqui tem um erro")
   doMethod( "Main" , "Text_1" , "SetFocus" ) // Foco no campo

   RETURN


(2) Agora, o problema. Vamos supor que, após o próximo campo (vou chamar Text_2) TAMBÉM tenha um evento OnLostFocus associado a uma procedure
que chamei de Text02

Aqui ocorre um fato desagradável, porque, supondo que o valor de Text_1 tenha um erro (CPF incorreto), o próximo controle (Text_2) irá receber o foco, independente do valor de Text_1 estar incorreto ou não. Ou seja, Text_2 vai ganhar o foco, e quando eu for sair devolver o Foco para Text_1 (SetFocus) a procedure Text02() será executada.


PROCEDURE Text01  // Chamada por OnLostFocus de Text_1

   MsgInfo("Faz de conta que aqui tem um erro")
   doMethod( "Main" , "Text_1" , "SetFocus" ) // Foco no campo

   RETURN
   
PROCEDURE Text02  // Chamada por OnLostFocus de Text_2

   MsgInfo("Eu não deveria ser executado")

   RETURN   



(3) Agora a solução que eu encontrei : Coloco TABSTOP de Text_2 como .F. para evitar que Text_2 receba o foco. Mas isso, a meu ver, não resolverá o problema satisfatoriamente (pelo menos para mim).

(4) Pergunto aos senhores: como vocês resolvem esse problema ? Teria como eu evitar sair de Text_1 quando existir um erro dentro da procedure Text01 chamada por OnLostFocus ?

Obs.: eu anexei o fonte para quem quiser testar.

Valeu pessoal
Anexos
Main.zip
(1.35 KiB) Baixado 88 vezes
Avatar de usuário

Vlademiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 749
Data de registro: 11 Jul 2005 02:46
Curtiu: 22 vezes
Mens.Curtidas: 62 vezes

Como vocês resolveriam esse problema ? (OnLostFocus)

Mensagempor Vlademiro » 15 Mai 2020 10:47

Andei pesquisando aqui no fórum e em outros locais. Pelo visto não tem resposta fácil. O estilo de programação por eventos não permite tal coisa. Pelo menos é o q eu observei.
Avatar de usuário

Vlademiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 749
Data de registro: 11 Jul 2005 02:46
Curtiu: 22 vezes
Mens.Curtidas: 62 vezes

Como vocês resolveriam esse problema ? (OnLostFocus)

Mensagempor Vlademiro » 15 Mai 2020 12:03

Avatar de usuário

Vlademiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 749
Data de registro: 11 Jul 2005 02:46
Curtiu: 22 vezes
Mens.Curtidas: 62 vezes

Como vocês resolveriam esse problema ? (OnLostFocus)

Mensagempor marcosgambeta » 15 Mai 2020 13:18

Uma possível solução seria esta: deixar a digitação livre e mover a validação para o final do processo, quando o usuário confirmar a inclusão/alteração/etc...

Se algum campo estiver incorreto, o usuário é avisado e o foco vai para o campo que precisa ser corrigido. E assim vai até que todos os campos estejam OK.

Estando todos os campos OK, a operação de inclusão/alteração/etc... é executada.

É diferente do que se costuma fazer numa aplicação em modo texto, mas é algo mais próximo do padrão num ambiente gráfico (o usuário livre para interagir com os elementos da janela, usando teclado e/ou mouse).
Atenciosamente,
Marcos Antonio Gambeta
marcosgambeta
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 318
Data de registro: 16 Jun 2005 22:53
Curtiu: 2 vezes
Mens.Curtidas: 40 vezes

Como vocês resolveriam esse problema ? (OnLostFocus)

Mensagempor JoséQuintas » 15 Mai 2020 13:25

Esse era um problema no visual basic 5 (CINCO)
No Visual Basic 6 (SEIS) foi adicionado o evento VALIDATE.

O que acontece?
O SetFocus() é pra alterar o posicionamento do "GET" atual.
O LostFocus() é pra ser executado ANTES de sair do "GET" atual.
Como entrar em outro "GET", se não pode sair do atual?
Basicamente é isso.

No caso do Visual Basic, criaram esse validate, justamente pra validar o conteúdo.
E também nos buttons (se não me engano) criaram uma propriedade CANCEL_VALIDATE (ou algo assim), cuja finalidade é ele funcionar mesmo que alguma validação pudesse impedir.

Tem também o ON_CHANGE, e outras, que poderiam atrapalhar, conforme a rotina que seja atribuída.

Parece complicado, mas é questão de se acostumar com a rotina que acontece no ambiente GUI (poderia ser a GETSYS também).
Com o tempo, as coisas vão ficando no lugar certo.

No VB6 eu usava o GotFocus() pra deixar o CPF/CNPJ somente com números pra digitação, o LostFocus() pra formatar o CPF/CNPJ com pontuação, e o Validate() pra verificar a validade do CNPJ.
Apenas um exemplo de uso.

Na minigui deve ser algo parecido.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Como vocês resolveriam esse problema ? (OnLostFocus)

Mensagempor JoséQuintas » 15 Mai 2020 13:32

marcosgambeta escreveu:Uma possível solução seria esta: deixar a digitação livre e mover a validação para o final do processo, quando o usuário confirmar a inclusão/alteração/etc...


Ah sim.... eu usava tudo como Array.
No final de tudo, o usuário clicando em salvar, eu fazia um for/next testando a rotina do Validate()
Algo mais ou menos assim:
FUNCTION cmdSalva_Click()

FOR EACH textbox in Form.Controls
   IF .NOT. textbox.Validate()
      textbox.SetFocus()
     EXIT FUNCTION
   ENDIF
NEXT
// salva


No final, a mesma validação da digitação valia pra validação geral.
Por isso é interessante deixar cada coisa no seu lugar, foi isso que aprendi com os fontes do VB6 organizados pela IDE dele.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Como vocês resolveriam esse problema ? (OnLostFocus)

Mensagempor JoséQuintas » 15 Mai 2020 13:49

De certa forma, no mesmo assunto:

A GETSYS também tem lá o bloco de código pra valid, pra when, outro equivalente de setfocus, etc.
GUI não é tão diferente disso.

Em console:
@ 1, 2 GET variável WHEN xxxWhen VALID xxxValid

Em gui:
@ 1, 2 TEXTBOX x ONFOCUS xxxwhen ON LOSTFOCUS xxxxValid

Ok, em gui tem mais opções, mas podemos dizer que é uma Getsys mais aberta e com mais recursos, apenas uma "versão mais nova" da getsys.

Talvez com base nisso fique mais fácil organizar o funcionamento, porque deixa de ser algo estranho, e passa a ser algo conhecido.

E em gui... você tem acesso a cada propriedade do "GET", como ter o Get:When, Get:Validate, etc. coisa que também tem no GET, não costumamos usar diretamente, mas está disponível.
Resumindo: é tudo a mesma coisa, só que no console você não costuma enxergar, mas em GUI tá lá pra todo mundo ver.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Como vocês resolveriam esse problema ? (OnLostFocus)

Mensagempor Vlademiro » 15 Mai 2020 14:16

Marcos e Quintas, obrigado pela atenção.

Visitei outras postagens e vi que o ideal é concentrar as validações em um ponto. Gostaria que existisse um recurso tipo esse do VB mas pelo jeito não tem.
Avatar de usuário

Vlademiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 749
Data de registro: 11 Jul 2005 02:46
Curtiu: 22 vezes
Mens.Curtidas: 62 vezes

Como vocês resolveriam esse problema ? (OnLostFocus)

Mensagempor JoséQuintas » 15 Mai 2020 14:32

Dá uma olhada no fonte que cria o "textbox", na classe mesmo.
Talvez tenha lá um validate ou algo parecido.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Como vocês resolveriam esse problema ? (OnLostFocus)

Mensagempor MSDN » 15 Mai 2020 16:09

Use GETBOX ao invés de TEXTBOX.

@...GETBOX
DEFINE GETBOX
Creates a GetBox control.

--------------------------------------------------------------------------------

Windows implementation of Harbour`s GET Class

SYNTAX

Standard Window:

@ <nRow> ,<nCol> GETBOX <ControlName>
[ ID <nId> ]
[ OF | PARENT | DIALOG <ParentWindowName> ]
[ HEIGHT <nHeight> ]
[ WIDTH <nWidth> ]
[ FIELD <FieldName> ]
[ VALUE <nValue> ]
[ ACTION | ONCLICK | ON CLICK <OnActionProcedure> | <bBlock> ]
[ ACTION2 <OnAction2Procedure> | <bBlock> ]
[ IMAGE <cBitmapName> | <acBitmapName> ]
[ BUTTONWIDTH <nButtonWidth> ]
[ PICTURE <cPicture> ] //** format function and template string
[ VALID <valid> | RANGE <min>,<max> ] // VALID - postvalidation function or codeblock which must return logical value
// RANGE - allowed range of values
[ VALIDMESSAGE <cValidMessage> ]
[ MESSAGE <cMessage> ] // text to display on STATUSBAR Item(1) when getbox have focus

[ WHEN <when> ] // prevalidation function or codeblock (if return .f. GetBox is readonly
[ READONLY ]
[ FONT <cFontName> SIZE <nFontSize> ]
[ BOLD ] [ ITALIC ] [ UNDERLINE ] [ STRIKEOUT ]
[ PASSWORD ]
[ TOOLTIP <cToolTipText> | <acToolTipText> ]
[ BACKCOLOR <anBackColor> ] // * or <anBackColor, anReadOnlyBackColor, anAciveBackColor>
[ FONTCOLOR <anFontColor> ] // * or <anFontColor, anReadOnlyFontColor, anActiveFontColor>
[ ON CHANGE <OnChangeProcedure> | <bBlock> ]
[ ON GOTFOCUS <OnGotFocusProcedure> | <bBlock> ]
[ ON LOSTFOCUS <OnLostFocusProcedure> | <bBlock> ]
[ RIGHTALIGN ]
[ INVISIBLE ]
[ NOTABSTOP ]
[ NOBORDER ]
[ NOMINUS ]
[ HELPID <nHelpId> ]

Alternate Syntax:

DEFINE GETBOX <ControlName>

[ ID <nId> ]
[ PARENT <ParentWindowName> ]
COL <nCol>
ROW <nRow>
[ HEIGHT <nHeight> ]
[ WIDTH <nWidth> ]
[ FIELD <FieldName> ]
[ VALUE <nValue> ]
[ ACTION <OnActionProcedure> | <bBlock> ]
[ ACTION2 <OnAction2Procedure> | <bBlock> ]
[ IMAGE <cBitmapName> | <acBitmapName> ]
[ BUTTONWIDTH <nButtonWidth> ]
[ PICTURE <cPicture> ]
[ VALID <valid> ]
[ VALIDMESSAGE <cValidMessage> ]
[ MESSAGE <cMessage> ]
[ WHEN <when> ]
[ READONLY < .T. | .F.> ]
[ FONTNAME <cFontName> ]
[ FONTSIZE <nFontSize> ]
[ FONTBOLD < .T. | .F.> ]
[ FONTITALIC < .T. | .F.> ]
[ FONTUNDERLINE < .T. | .F.> ]
[ FONTSTRIKEOUT < .T. | .F.> ]
[ PASSWORD < .T. | .F.> ]
[ TOOLTIP <cToolTipText> | <acToolTipText> ]
[ BACKCOLOR <anBackColor> ]
[ FONTCOLOR <anFontColor> ]
[ ONCHANGE <OnChangeProcedure> | <bBlock> ]
[ ONGOTFOCUS <OnGotFocusProcedure> | <bBlock> ]
[ ONLOSTFOCUS <OnLostFocusProcedure> | <bBlock> ]
[ RIGHTALIGN < .T. | .F.> ]
[ INVISIBLE < .T. | .F.> ]
[ NOTABSTOP < .T. | .F.> ]
[ NOBORDER ]
[ NOMINUS < .T. | .F.> ]
[ HELPID <nHelpId> ]
[ ONINIT <bInit> ]

END GETBOX

Optional focused colors tuning::

SET GETBOX FOCUS BACKCOLOR [ TO <anBackColor> ]

SET GETBOX FOCUS FONTCOLOR TO <anFontColor>

DESCRIPTION:

nRow, nCol Position in the area of ??the window in pixels.
nWidth, nHeight The desired size of the GetBox Control in pixels.
nId The ID identifier this Control in Dialog Window
ControlName A reference to the GetBox Control
ParentWindowName A reference to the Parent Window.
nHelpID The help topic identifier for this Control
Field Specifies the Field Name for the GetBox control
nValue Specifies a startup value for the GetBox control
OnActionProcedure An action to be performed when Clicking the GetBox control
OnAction2Procedure ?
cBitmapName | acBitmapName ?
nButtonWidth ?
cPicture Sets the display and editing rules of the GetBox
Valid Specifies the postValidation action to be performed
Min, Max Specifies the Range Min and Max
cValidMessage
cMessage Specifies the Text to display on StatusBar Item(1) when GetBox have focus
When Specifies the preValidation action to be performed
cFontName Specifies the Font Name
cFontSize Specifies the Font Size
cToolTipText> | acToolTipText Specifies the Text for the ToolTip
anBackColor Specifies the Background Color
anReadOnlyBackColor Specifies the Background Color when set in READONLY
anAciveBackColor ?
OnGotFocusProcedure An action to be performed when control Got Focused
OnChangeProcedure An action to be performed when control value changes
OnLostFocusProcedure An action to be performed when control Lost Focused

READONLY Specifies that this control is in READOBLY mode
PASSWORD Specifies that we are inputing a password and to show *
RIGHTALIGN ?
INVISIBLE The visibility property specifies whether or not a control is visible
NOTABSTOP Stop the control to receive focus and participate in the tabbing sequence
NOBORDER Specifies not to draw any border around the GetBox control
NONINUS ?

** GETBOX supported PICTURE Format Functions

Function Type Action
A C Allows only alphabetic characters
B N Displays numbers left-justified.
C N Displays CR after positive numbers.
D D,N Displays dates in SET DATE format.
K All Deletes default text if first key is not a cursor key.
X N Displays DB after negative numbers.
Z N Displays zero as blanks.
( N Displays negative numbers in parentheses with leading spaces.
) N Displays negative numbers in parentheses without leading spaces.
! C Converts alphabetic character to uppercase.

!>> unsupported Format Functions from Harbour Get class :
R C Nontemplate characters are inserted in the display
but not saved in the variable.
S<n> C Allows horizontal scrolling within a GET. <n> is
E D,N Displays dates with day and month inverted
independent of the current DATE SETting, numerics
with comma and period reverse (European style).
an integer that specifies the width of the region.

** GETBOX supported PICTURE Template Symbols

Template Action
A Allows only alphabetic characters
N Allows only alphabetic and numeric characters
X Allows any character
9 Allows digits for any data type including sign for numerics
# Allows digits, signs and spaces for C,N type
L Allows only T, F, Y or N
Y Allows only Y or N
! Converts an alphabetic character to uppercase
$ Displays a dollar sign in place of a leading space in a numeric
* Displays an asterisk in place of a leading space in a numeric
. Displays a decimal point
, Displays a comma

FontColor and BackColor property can be defined as RGB array or array of RGBArrays
for Enable ,ReadOnly and Focused (active) stage.
ReadOnly stage preserve defined FontColor and BackColor
VALID and RANGE clauses are checked when control lost focus
User can not leave control if defined validation function (or codeblock) return false
or entered value is out of defined range.
WHEN clause is checked when control become focus . If defined here function or codeblock
used as WHEN param return false, control status is changed to readonly (noneditable).

Navigation Keys inside GETBOX:

RETURN (ENTER),
TAB, ARROW_DOWN move focus to the next active control
ARROW_UP move focus to the previous active control
ESC return original (initial) control value if initial value was changed or move focus to the next active control if initial value remains unchanged
ARROW_LEFT,
ARROW_RIGHT move caret left/right
HOME,END move caret to first and last editable position inside control
INS change insertmode ON/OFF (as far change caret shape)
CTRL+"A" select all editable contents
CTRL+ARROW_UP,
CTRL+ARROW_DOWN increment/decrement N,D type contents (+/-1 or +/-1 day)
or change value of logical content to opposite value (Y/N)
CTRL+"Y" clear the current value

Getbox support also all typical clipboard operations ( CUT (Ctrl+X), COPY (Ctrl+C) and PASTE (Ctrl+V) )

PROPERTIES:

· Value Set / Gets GetBox value.
Note: Getbox always return unformatted value which archive initial valuetype. Programmer must take a care to not set new control value with different valuetype otherwise error will be generated
· Enabled Set / Gets enabled state of a GetBox control
· Visible Set / Gets visible a GetBox control.
· Row Set / Gets row position of a GetBox control.
· Col Set / Gets column position of a GetBox control.
· Width Set / Gets width of a GetBox control.
· Height Set / Gets height of a GetBox control.
· Action Set / Gets action of a GetBox control.
· FontName Set / Gets GetBox control's font name.
· FontSize Set / Gets GetBox control's font size.
· FontBold Set / Gets GetBox control's font bold property
· FontItalic Set / Gets GetBox control's font italic property
· FontUnderline Set / Gets GetBox control's font underline property
· FontStrikeout Set / Gets GetBox control's font strikeout property
· FontColor Set / Gets the foreground color for text within the GetBox
· BackColor Set / Gets the background color for text within the GetBox
· ToolTip Set / Gets GetBox control's Tooltip text.
· Picture Set / Gets the image name of a GetBox control.
· Cargo Set / Gets user property 'Cargo' for GetBox control
· ValidMessage Set / Gets the character with messages to show when valid procedure returns .F.
· Name (R) Retrieves the name of a GetBox control.
· DisplayValue (R) Gets value - formatted characters string from GetBox
· Parent (D) Set the name as character identifier of the control.
· Parent(D) Set the name as character identifier of the parent window.
· HelpId (D) Set the numeric help topic identifier of the control.
· Field(D) Set the Field data of active database.
· ReadOnly Set / Gets GetBox control's readonly property
· RightAlign(D) Right-aligns text in a GetBox control.
· NoTabStop(D) Sets whether an element behavior can't receive focus and participate in the tabbing sequence

D: Available at control definition only
R: Read-Only

EVENTS:

· OnGotFocus Action to be performed when getting the focus
· OnChange Action to be performed when generic changing of the control
· OnLostFocus Action to be performed when losing the focus.
· OnClick Action to be performed when generic clicking of the button of control
· Action2 Action to be performed when generic clicking of the 2th button of control

METHODS:

· Show Shows a GetBox control
· Hide Hides a GetBox control
· Redraw Redraw a Control
· SetFocus Gives the focus to a GetBox control
· Release Releases a GetBox control from memory
· Refresh Reread data from database`s field defined in FIELD clause.
(!)This method can be used only if FIELD clause is set.
· Save Save data for Control GetBox
· SaveAs Save a GetBox control as BitMap file.

EXAMPLE:

See demo in :
\Samples\Basic\GetBox
\Samples\Basic\GetBoxValid
MSDN
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 741
Data de registro: 28 Nov 2003 14:55
Cidade/Estado: CWB
Curtiu: 178 vezes
Mens.Curtidas: 123 vezes

Como vocês resolveriam esse problema ? (OnLostFocus)

Mensagempor Vlademiro » 15 Mai 2020 19:08

Opa, eis que surge uma luz. Vou testar mais tarde.

Obrigado!!!
Avatar de usuário

Vlademiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 749
Data de registro: 11 Jul 2005 02:46
Curtiu: 22 vezes
Mens.Curtidas: 62 vezes

Como vocês resolveriam esse problema ? (OnLostFocus)

Mensagempor Vlademiro » 15 Mai 2020 19:10

Acho que a Ide não tem esse controle, mas se não tiver eu prefiro abrir mão dela do que do controle, ou então pensar em um meio termo, mesmo sem saber direito como.
Avatar de usuário

Vlademiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 749
Data de registro: 11 Jul 2005 02:46
Curtiu: 22 vezes
Mens.Curtidas: 62 vezes

Como vocês resolveriam esse problema ? (OnLostFocus)

Mensagempor marcosgambeta » 15 Mai 2020 20:29

Instalei a HMG 3.4.4 aqui, mas pelo que vi não tem o GETBOX implementado. Deve existir apenas na MiniGUI Extended.
Atenciosamente,
Marcos Antonio Gambeta
marcosgambeta
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 318
Data de registro: 16 Jun 2005 22:53
Curtiu: 2 vezes
Mens.Curtidas: 40 vezes

Como vocês resolveriam esse problema ? (OnLostFocus)

Mensagempor MSDN » 15 Mai 2020 20:37

Infelizmente ainda não é muito claro que existem 2 MiniGUI :

http://www.hmgforum.com/viewtopic.php?f=43&t=5198 - essa seria a continuação da primeira versão que apareceu lá no começo dos anos 2000.
https://hmgextended.com/ - veio da original, mas a partir de alguns anos atrás seguiu caminho próprio, por isso hoje temos 2 MiniGUI com quase 100% de compatibilidade, algumas coisas que uma faz a outra não faz e vice-versa.

Eu uso a versão Extended, ela surgiu por uma discordância entre o Roberto Lopez que criou a MiniGUI e outros colaboradores, ele queria deixar a lib mais enxuta, manter as coisas sem muitas mudanças e o restante queria mais mudanças.
Na versão Extended tem mais exemplos, controles bacanas, na versão original vc tem ela para 32 e 64bits, o Mingw é usado por padrão para gerar os executáveis e não o Borland C++ 5.8, tecnicamente seria melhor, porém no fringir dos ovos, não muda nada, e sempre falo isso com base em duas histórias que tive conhecimento, onde 2 empresas chegaram ao topo de sua área e encheram os bolsos de seus donos de $$$ usando Clipper puro e depois Harbour puro e um deles com uma lib gráfica FREE, então, no fim das contas, se abrace com aquilo que vai te dar $$$$, não adianta ser um gênio que sabe de tudo e agora estar fazendo cadastro na caixa pra sacar os R$ 600,00 !!!
MSDN
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 741
Data de registro: 28 Nov 2003 14:55
Cidade/Estado: CWB
Curtiu: 178 vezes
Mens.Curtidas: 123 vezes

Como vocês resolveriam esse problema ? (OnLostFocus)

Mensagempor Vlademiro » 16 Mai 2020 02:53

Pessoal, a HmgExtend, através do controle GetValid, resolveu o problema com a perda do foco.

Valeu pela dica Marcelo.

A todos muito obrigado.
Avatar de usuário

Vlademiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 749
Data de registro: 11 Jul 2005 02:46
Curtiu: 22 vezes
Mens.Curtidas: 62 vezes




Retornar para MiniGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 2 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