Então pessoal... Alguns conhecimentos se perdem ao longo dos anos e creio que este caso seja um deles:
Gostaria de inverter o padrão de entrada do INSERT no meu sistema para deixá-lo como o padrão de GET dos programas atuais mais modernos.
Em um GET, quero que o cursor permaneça em seus estado normal "fininho", mas, que a digitação seja feita com INSERT (empurrando os caracteres já existentes) num GET.
Quando apertar o INSERT, o cursor fica "grandão" como de costume, porém ao digitar os caracteres vão sendo substituídos no GET.
Quem se lembra como se faz isso? Eu já matutei e não me recordo.
Agradeço antecipadamente a quem puder ajudar.
INSERT / SET INSERT
Moderador: Moderadores
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
INSERT / SET INSERT
Olá Shark,
Coloque o seguinte em sua função MAIN():
Coloque o seguinte em sua função MAIN():
Código: Selecionar todos
// coloca em modo de inserção por padrão...
READINSERT( .T. )
// muda tamanho do cursor quando no modo de SOBREPOSIÇÃO
SETKEY(K_INS,{||IF(READINSERT(),SETCURSOR(3),SETCURSOR(1)),READINSERT(!READINSERT())})Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
-
Kapiaba
- Colaborador

- Mensagens: 1908
- Registrado em: 07 Dez 2012 16:14
- Localização: São Paulo
- Contato:
INSERT / SET INSERT
Uma idéia,
Código: Selecionar todos
#INCLUDE "FIVEWIN.CH"
FUNCTION MAIN()
LOCAL ODLG
LOCAL OGET1, OGET2, OGET3, OGET4
LOCAL CVAR1, CVAR2, CVAR3, CVAR4
LOCAL LACTIVE := .F.
CVAR1 := 0
CVAR2 := 0
CVAR3 := 0
CVAR4 := 0
READINSERT( .F. )
DEFINE DIALOG ODLG TITLE "FROM CODE" PIXEL SIZE 300,300
@ 10,10 GET OGET1 VAR CVAR1 BITMAP "..\BITMAPS\ON.BMP" ;
ACTION( LIGA_INSERE_GET1() ) OF ODLG PIXEL SIZE 60,12
OGET1:CTOOLTIP := OEMTOANSI( "CLICK NA BITMAP: LIGA/DESLIGA O INSERT" )
OGET1:LBTNTRANSPARENT := .T. // TRANSPARENT BUTTON
@ 40,10 GET OGET2 VAR CVAR2 BITMAP "..\BITMAPS\ON.BMP" ACTION( MSGINFO( "WITHOUT TRANSPARENT" ) ) OF ODLG PIXEL SIZE 60,12
@ 70,10 GET OGET3 VAR CVAR3 BITMAP "..\BITMAPS\CHKYES.BMP" ACTION( MSGINFO( "WITH ADJUST-TRANSPARENT" ) ) OF ODLG PIXEL SIZE 120,12
OGET3:DISABLE()
OGET3:LBTNTRANSPARENT := .T. // TRANSPARENT BUTTON GET OGET3
OGET3:LADJUSTBTN := .T. // BUTTON GET ADJUST WITDH OGET3
OGET3:LDISCOLORS := .F. // DEACTIVE DISABLE COLOR
OGET3:NCLRTEXTDIS := CLR_WHITE // COLOR TEXT DISABLE STATUS
OGET3:NCLRPANEDIS := CLR_BLUE // COLOR PANE DISABLE STATUS
@ 100,10 GET OGET4 VAR CVAR4 BITMAP "..\BITMAPS\CHKYES.BMP" ;
ACTION( IF( LACTIVE,OGET3:DISABLE(),OGET3:ENABLE()), LACTIVE:= !LACTIVE, ODLG:UPDATE() ) OF ODLG PIXEL SIZE 120,12
OGET4:LADJUSTBTN := .T.
ACTIVATE DIALOG ODLG CENTERED ;
SET( _SET_INSERT, ! SET( _SET_INSERT ) )
RETURN NIL
FUNCTION LIGA_INSERE_GET1()
SET( _SET_INSERT, ! SET( _SET_INSERT ) )
RETURN( .T. )
INSERT / SET INSERT
Ambas as soluções acima são interessantes e funcionais. Entretanto, eu gostaria que o cursor ficasse normal com READINSERT( .T. ) e ficasse maior com READINSERT(.F.) que é o padrão de entrada dos programas mais modernos.
Isso é possível?
Nos testes que fiz, quando o INSERT é ligado o cursor assume a forma de inserção automaticamente ( setcursor(3) ) e mesmo chamando a função setcursor(1) o cursor não muda.
Isso é possível?
Nos testes que fiz, quando o INSERT é ligado o cursor assume a forma de inserção automaticamente ( setcursor(3) ) e mesmo chamando a função setcursor(1) o cursor não muda.
INSERT / SET INSERT
Como utilizo fivewin, vou alterar aqui a classe TGET pra fazer o que preciso mas lembro que no passado, em clipper, eu fazia isso facilmente. Porém não me recordo como. rsrsrsrsrs...
Por hora agradeço a contribuição dos nobres colegas.
Deixar aqui o trecho do código da classe TGET do fivewin que alterei para conseguir o resultado dsejado. Talvez sirva de ajuda para algum visitante deste post futuramente.
SharkAbraços!
Por hora agradeço a contribuição dos nobres colegas.
Deixar aqui o trecho do código da classe TGET do fivewin que alterei para conseguir o resultado dsejado. Talvez sirva de ajuda para algum visitante deste post futuramente.
SharkAbraços!
Código: Selecionar todos
if ::oGet:Type == "N" .and. ;
( Chr( nKey ) == "." .or. Chr( nKey ) == "," )
if ::oGet:Clear()
#ifndef __XHARBOUR__
::oGet:DelEnd()
#endif
endif
::oGet:ToDecPos()
else
if Set( _SET_INSERT ) //
::oGet:Overstrike( Chr( nKey ) ) //
else // by shark
::oGet:Insert( Chr( nKey ) ) //
end //
endif
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
INSERT / SET INSERT
Olá Shark,
Uso da forma que passei acima desde o Clipper, e manteve quando migrei para Harbour. O sistema inicia em modo INSERÇÃO e com o cursor "underline", se pressiona a tecla INSERT, o cursor fica cheio na vertical e com sobreposição dos caracteres. Deveria ter funcionado, mas importante que já resolveu.
Que bom que já resolveu, isso que é importante, mas apenas para registro:Shark escreveu:em clipper, eu fazia isso facilmente. Porém não me recordo como.
Uso da forma que passei acima desde o Clipper, e manteve quando migrei para Harbour. O sistema inicia em modo INSERÇÃO e com o cursor "underline", se pressiona a tecla INSERT, o cursor fica cheio na vertical e com sobreposição dos caracteres. Deveria ter funcionado, mas importante que já resolveu.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
