Hwgui / on lostfocus/ dehilite()

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

Hwgui / on lostfocus/ dehilite()

Mensagem por MARCELOG »

Olá fórum,
recentemente, o Alexander me deu uma dica para, com uma função, implementar um dehilite() no browse com a hwgui, que não tem o método.
Assim, coloquei o método no evento ON LOSTFOCUS, de modo que a barra de destaque fosse desabilitada quando o browse perdesse o foco.
A ação principal funciona, mas o foco não é transferido para os botões ou outros objetos, nem mesmo com o mouse.
O que pode ser ? É um bug?
Como resolver o problema?

Este é um código criado que mostra a situação.


#define x_BLUE 16711680
#define x_DARKBLUE 10027008
#define x_WHITE 16777215
#define x_CYAN 16776960
#define x_BLACK 0
#define x_RED 255
#define x_GREEN 32768
#define x_GRAY 8421504
#define x_YELLOW 65535

#include "windows.ch"
#include "guilib.ch"

FUNCTION MAIN()
LOCAL oMain, otest:="Maria helena"

REQUEST DBFCDX
RDDSETDEFAULT("DBFCDX")

CRIADBF()

INIT WINDOW oMain MAIN TITLE "Simple the best" ;
AT 0,0 ;
SIZE GetDesktopWidth(), GetDesktopHeight() - 28

MENU OF oMain
MENU TITLE "&Teste"
MENUITEM "Teste";
ACTION test1()
SEPARATOR
MENUITEM "Sair";
ACTION oMain:Close()
ENDMENU
ENDMENU

ACTIVATE WINDOW oMain

RETURN

FUNCTION test1()
//--------------
LOCAL oFont, oForm
LOCAL aComboBox, oComboBox, oEditBox
LOCAL oBmp

LOCAL oBrowse

aComboBox:={"asa1","asa2","asa3","asa4","asa5"}
oComboBox:=1

USE TESTE EXCLUSIVE

PREPARE FONT oFont NAME "Courier New" WIDTH 0 HEIGHT -11

INIT DIALOG oForm NOEXIT TITLE HB_OEMTOANSI("Cadastro - àrgÆo");
AT 000,000;
FONT oFont ;
SIZE 700,425;
STYLE DS_CENTER + WS_POPUP + WS_VISIBLE + WS_CAPTION + WS_SYSMENU

@ 005,000 SAY "Ordenar e/ou pesquisar por :";
SIZE 200,022

@ 005,022 COMBOBOX oComboBox;
ITEMS aComboBox;
SIZE 100,150;
STYLE WS_TABSTOP;
TOOLTIP "Selecione para ordenar a coluna"

@ 110,022 EDITBOX oEditBox;
SIZE 585,022;
STYLE WS_TABSTOP;
TOOLTIP "Digite o argumento para pesquisa"

@ 005,050 BROWSE oBrowse DATABASE OF oForm SIZE 690,325;
ON LOSTFOCUS {|ob|Deselect(ob)}; // Se desabilitar essa linha o foco funciona beleza
STYLE WS_VSCROLL + WS_HSCROLL + WS_TABSTOP

ADD COLUMN FieldBlock(Fieldname(1)) TO oBrowse;
HEADER HB_OEMTOANSI("C¢digo");
LENGTH 8;
PICTURE "999999";
JUSTIFY HEAD DT_CENTER;
JUSTIFY LINE DT_CENTER

ADD COLUMN FieldBlock(Fieldname(2)) TO oBrowse;
HEADER "Nome";
LENGTH 35;
PICTURE "@!";
JUSTIFY HEAD DT_CENTER;
JUSTIFY LINE DT_LEFT

@ 005,380 BUTTON "&Inserir" OF oForm;
ON CLICK {||MsgInfo("teste")};
SIZE 100, 32;
STYLE WS_TABSTOP

@ 135,380 BUTTON "&Alterar" OF oForm;
ON CLICK {||MsgInfo("teste")};
SIZE 100, 32;
STYLE WS_TABSTOP

@ 265,380 BUTTON "&Excluir" OF oForm;
ON CLICK {||MsgInfo("teste")};
SIZE 100, 32;
STYLE WS_TABSTOP

@ 395,380 BUTTON "&Visualizar" OF oForm;
ON CLICK {||MsgInfo("teste")};
SIZE 100, 32;
STYLE WS_TABSTOP

@ 525,380 BUTTON "&Retornar" OF oForm;
ON CLICK {||MsgInfo("teste")};
SIZE 100, 32;
STYLE WS_TABSTOP

ACTIVATE DIALOG oForm

RETURN

FUNCTION CRIADBF()

LOCAL aCampos

IF !FILE("TESTE.DBF")
aCampos:={{"CAMPO1","C",06,00},;
{"CAMPO2","C",35,00},;
{"CAMPO3","C",35,00}}
DBCREATE("TESTE.DBF",aCampos)

USE TESTE EXCLUSIVE

DBAPPEND()
FIELDPUT(1,"000001")
FIELDPUT(2,"Registro 000001")
FIELDPUT(3,"Registro 000001")
DBCOMMIT()

DBAPPEND()
FIELDPUT(1,"000002")
FIELDPUT(2,"Registro 000002")
FIELDPUT(3,"Registro 000002")
DBCOMMIT()

USE

ENDIF

//Conforme dica do Alexander

Function Deselect(oBrowse)
Local brushSel := oBrowse:brushSel, bcolorSel := oBrowse:bcolorSel, tcolorSel := oBrowse:tcolorSel

oBrowse:brushSel := oBrowse:brush
oBrowse:bcolorSel:= oBrowse:bcolor
oBrowse:tcolorSel:= oBrowse:tcolor

oBrowse:RefreshLine() //se deixar somente essa linha o erro persiste

oBrowse:brushSel := brushSel
oBrowse:bcolorSel:= bcolorSel
oBrowse:tcolorSel:= tcolorSel

Return .t.
Responder