Página 1 de 2
Como iniciar o conteúdo de HCEDIT
Enviado: 23 Jan 2023 14:31
por JoséQuintas
Código: Selecionar todos
#include "hwgui.ch"
#include "directry.ch"
FUNCTION DlgTextView()
LOCAL aFileList, nIndex, cFileSpec := "*.prg"
LOCAL oDlg, oEdit, oFont := HFont():Add( "MS Sans Serif", 0, -13 )
aFileList := Directory( cFileSpec )
nIndex := 1
INIT DIALOG oDlg CLIPPER TITLE "Text view" ;
AT 0,0 SIZE 800, 600 ;
FONT oFont ON INIT Dlg_Init( oEdit, aFileList, nIndex )
@ 10, 10 HCEDIT oEdit SIZE oDlg:nWidth - 40, oDlg:nHeight - 100
ACTIVATE DIALOG oDlg
RETURN Nil
STATIC FUNCTION Dlg_Init( oEdit, aFileList, nIndex )
LOCAL cTxt
IF Len( aFileList ) == 0
cTxt := ""
ELSE
cTxt := MemoRead( aFileList[ nIndex ], F_NAME )
ENDIF
oEdit:SetText( cTxt )
(cTxt)
(oEdit)
(aFileList)
(nIndex)
RETURN Nil
Como iniciar o conteúdo de HCEDIT ?
Desse jeito dá erro de não existir o método SetText()
Como iniciar o conteúdo de HCEDIT
Enviado: 23 Jan 2023 15:27
por Itamar M. Lins Jr.
Olá!
Tente com VALUE
oEdit:VALUE( cTxt )
Código: Selecionar todos
CLASS HEdit INHERIT HControl
CLASS VAR winclass INIT "EDIT"
DATA lMultiLine INIT .F.
DATA cType INIT "C"
DATA bSetGet
DATA bValid
DATA cPicFunc, cPicMask
DATA lPicComplex INIT .F.
DATA lFirst INIT .T.
DATA lChanged INIT .F.
DATA lNoPaste INIT .F.
DATA nMaxLength INIT Nil
DATA bkeydown, bkeyup, bchange
DATA aColorOld INIT { 0,0 }
DATA bColorBlock
METHOD New( oWndParent, nId, vari, bSetGet, nStyle, nLeft, nTop, nWidth, nHeight, ;
oFont, bInit, bSize, bGfocus, bLfocus, ctooltip, ;
tcolor, bcolor, cPicture, lNoBorder, nMaxLength, lPassword, bKeyDown, bChange )
METHOD Activate()
METHOD Init()
METHOD onEvent( msg, wParam, lParam )
METHOD Redefine( oWndParent, nId, vari, bSetGet, oFont, bInit, bSize, bGfocus, ;
bLfocus, ctooltip, tcolor, bcolor, cPicture, nMaxLength )
METHOD SetGet( value ) INLINE Eval( ::bSetGet, value, self )
METHOD Refresh()
METHOD Value ( xValue ) SETGET
METHOD SelStart( nStart ) SETGET
METHOD SelLength( nLength ) SETGET
METHOD ParsePict( cPicture, vari )
ENDCLASS
Se entendi direito.
Saudações,
Itamar M. Lins Jr.
Como iniciar o conteúdo de HCEDIT
Enviado: 23 Jan 2023 15:31
por Itamar M. Lins Jr.
Olá!
Editando um campo MEMO, ou texto grande. Tanto faz.
cMinhaVar := oBJTxt:GetText()
Código: Selecionar todos
@ 085,380 Get oCl21 Var vCl21 size 330,130 VALID {||vCl21:=oCl21:GetText(),.T.} BACKCOLOR 16777215 STYLE ES_MULTILINE + ES_AUTOVSCROLL + ;
WS_VSCROLL + ES_WANTRETURN ;
TOOLTIP "Observação sobre o cliente."
Saudações,
Itamar M. Lins Jr.
Como iniciar o conteúdo de HCEDIT
Enviado: 23 Jan 2023 15:44
por JoséQuintas
Me baseei aqui:
Código: Selecionar todos
FUNCTION hwg_MemoEdit(mpmemo , cTextTitME , cTextSave , cTextClose , ;
cTTSave , cTTClose , oHCfont )
...
IF oHCfont == NIL
@ 10, 10 HCEDIT oEdit SIZE oModDlg:nWidth - 20, 240
ELSE
@ 10, 10 HCEDIT oEdit SIZE oModDlg:nWidth - 20, 240 ;
FONT oHCfont
ENDIF
...
a classe tem:
Código: Selecionar todos
CLASS HCEdit INHERIT HControl
...
METHOD SetText( xText, cPageIn, cPageOut )
Vou testar a outra opção.
Como iniciar o conteúdo de HCEDIT
Enviado: 23 Jan 2023 15:47
por Itamar M. Lins Jr.
Olá!
Entendi...(acredito)
Precisa primeiro colocar tudo na DIALOG.
Depois que você vai usar funções para mostrar os conteúdos das variáveis no caso os GETS.
Por exemplo:
Código: Selecionar todos
ANTES aqui em cima eu digo:
INIT DIALOG oDlg CLIPPER NOEXIT TITLE cTitulo Font oFont AT 0,0 SIZE 1280,640 STYLE WS_OVERLAPPEDWINDOW ;
On Init {|| hwg_WriteStatus( oDlg,2,'Reg: ' + Transform( cl->(lastRec()) ,"9,999,999" )) }
//coloco browse, botões de navegação etc...
cNomeCliente := -> posso "MARIA" ou alias->cliente //Posso já começar com browse no primeiro recno() clientes.dbf
ou
cNomeCliente := space(60)
[b] @ 085,010 get oNomeCliente var cNomeCliente [/b]
//desenho TODOS OS CONTROLES
oDlg:Activate(,,,.T.) //EQUIVALENTE AO READ
Saudações,
Itamar M. Lins Jr.
Como iniciar o conteúdo de HCEDIT
Enviado: 23 Jan 2023 15:50
por Itamar M. Lins Jr.
Olá!
Não pode fazer USO do OBJETO ANTES de colocar (FECHAR) eles dentro da DIALOG.
O OBJETO só passa a existir DEPOIS DO:
ACTIVATE DIALOG oDlg
Saudações,
Itamar M. Lins Jr.
Como iniciar o conteúdo de HCEDIT
Enviado: 23 Jan 2023 16:05
por Itamar M. Lins Jr.
Olá!
ON INIT Dlg_Init( oEdit, aFileList, nIndex )
Bem... Aqui acredtio que está fazendo uso do objeto oEDIT, ANTES dele ser criado.
Me ensinaram a usar dessa forma:
Código: Selecionar todos
//Objetos da DIALOG
oDlg:bActivate := {||oDlg:Show(),FuncaoA(),FuncaoB(),FuncaoC(),oEDIT:Disable() }
ACTIVATE DIALOG oDlg
Esse
:bActivate só vai executar depois que a DIALOG mostrar todos os (objetos) ou seja ativada.
Saudações,
Itamar M. Lins Jr.
Como iniciar o conteúdo de HCEDIT
Enviado: 23 Jan 2023 16:35
por JoséQuintas
Mesmo erro, agora não existe :Value ao invés de :SetText()
E com MEMVAR dá que variável não existe.
O que tem de errado então?
Código: Selecionar todos
#include "hwgui.ch"
#include "directry.ch"
MEMVAR oEdit
FUNCTION DlgTextView()
LOCAL aFileList, nIndex, cFileSpec := "*.prg"
LOCAL oDlg, oFont := HFont():Add( "MS Sans Serif", 0, -13 )
aFileList := Directory( cFileSpec )
nIndex := 1
INIT DIALOG oDlg CLIPPER TITLE "Text view" ;
AT 0,0 SIZE 800, 600 ;
FONT oFont ON INIT Dlg_Init( aFileList, nIndex )
@ 10, 10 GET oEdit SIZE oDlg:nWidth - 40, oDlg:nHeight - 100 FONT oFont ;
STYLE ES_MULTILINE + ES_AUTOVSCROLL + WS_VSCROLL + WS_HSCROLL
ACTIVATE DIALOG oDlg
RETURN Nil
STATIC FUNCTION Dlg_Init( aFileList, nIndex )
LOCAL cTxt
IF Len( aFileList ) == 0
cTxt := ""
ELSE
cTxt := MemoRead( aFileList[ nIndex ], F_NAME )
ENDIF
oEdit:Value := cTxt
(cTxt)
(oEdit)
(aFileList)
(nIndex)
RETURN Nil
Como iniciar o conteúdo de HCEDIT
Enviado: 23 Jan 2023 16:47
por Itamar M. Lins Jr.
Olá!
Tá respondido nas 3 ai em cima o pq.
Tente assim:
Código: Selecionar todos
#include "hwgui.ch"
#include "directry.ch"
MEMVAR oEdit
FUNCTION DlgTextView()
LOCAL aFileList, nIndex, cFileSpec := "*.prg"
LOCAL oDlg, oFont := HFont():Add( "MS Sans Serif", 0, -13 )
aFileList := Directory( cFileSpec )
nIndex := 1
INIT DIALOG oDlg CLIPPER TITLE "Text view" ;
AT 0,0 SIZE 800, 600 ;
FONT oFont //ON INIT Dlg_Init( aFileList, nIndex )
@ 10, 10 GET oEdit SIZE oDlg:nWidth - 40, oDlg:nHeight - 100 FONT oFont ;
STYLE ES_MULTILINE + ES_AUTOVSCROLL + WS_VSCROLL + WS_HSCROLL
oDlg:bActivate := {|| Dlg_Init( aFileList, nIndex ) }
ACTIVATE DIALOG oDlg
RETURN Nil
STATIC FUNCTION Dlg_Init( aFileList, nIndex )
LOCAL cTxt
IF Len( aFileList ) == 0
cTxt := ""
ELSE
cTxt := MemoRead( aFileList[ nIndex ], F_NAME )
ENDIF
oEdit:Value := cTxt
(cTxt)
(oEdit)
(aFileList)
(nIndex)
RETURN Nil
Saudações,
Itamar M. Lins Jr.
Como iniciar o conteúdo de HCEDIT
Enviado: 23 Jan 2023 16:56
por Itamar M. Lins Jr.
Olá!
Fix, do FIX, do fix...
Código: Selecionar todos
FUNCTION DlgTextView()
LOCAL aFileList, nIndex, cFileSpec := "*.prg"
LOCAL oDlg, oFont := HFont():Add( "MS Sans Serif", 0, -13 )
LOCAL cEdit := ""
aFileList := Directory( cFileSpec )
nIndex := 1
INIT DIALOG oDlg CLIPPER TITLE "Text view" ;
AT 0,0 SIZE 800, 600 ;
FONT oFont //ON INIT Dlg_Init( aFileList, nIndex )
@ 10, 10 GET oEdit var cEdit SIZE oDlg:nWidth - 40, oDlg:nHeight - 100 FONT oFont STYLE ES_MULTILINE + ES_AUTOVSCROLL + WS_VSCROLL + WS_HSCROLL
oDlg:bActivate := {|| Dlg_Init( aFileList, nIndex, oDlg ) }
ACTIVATE DIALOG oDlg
RETURN Nil
STATIC FUNCTION Dlg_Init( aFileList, nIndex, oDlg )
LOCAL cTxt
IF Len( aFileList ) == 0
cTxt := ""
ELSE
cTxt := MemoRead( aFileList[ nIndex ], F_NAME )
ENDIF
oDlg:oEdit:Value := cTxt
(cTxt)
(oEdit)
(aFileList)
(nIndex)
RETURN Nil
Aqui rodou e não deu erro, só a DIALOG com GET em BRANCO.
Saudações,
Itamar M. Lins Jr.
Como iniciar o conteúdo de HCEDIT
Enviado: 23 Jan 2023 18:02
por JoséQuintas
Tem que funcionar do jeito que eu quero.
Assim foi.
Conjunto de erros:
INIT é com codeblock e não direto como eu tinha feito.
HCEDIT NÃO TEM VAR, EDIT tem, SEM VAR não funciona.
Não tinha chegado lá ainda:
Tava errado FC_NAME, fora do colchete
Refresh após atualizar
Valeu pelo GET, fazer o que.....
Sair do console que usa GETS pra...... usar GETS kkkkk
Como iniciar o conteúdo de HCEDIT
Enviado: 23 Jan 2023 18:20
por JoséQuintas
Faltam os buttons...
Como HCEDIT não é pra usar, é GET....
O que usar pra button ? ownbutton mesmo? (chute do nome)
Como iniciar o conteúdo de HCEDIT
Enviado: 23 Jan 2023 18:31
por Itamar M. Lins Jr.
Ola!
Aqui dá erro:
ON INIT {|| Dlg_Init( @oEdit, aFileList, nIndex ) }
Código: Selecionar todos
Error BASE/1004 No exported method: OEDIT
Called from ->OEDIT(0)
Called from hedit.prg->DLG_INIT(37)
Called from hedit.prg->(b)DLGTEXTVIEW(17)
Called from source\winapi\hdialog.prg->INITMODALDLG(312)
Called from source\winapi\hdialog.prg->(b)(_INITSTATICS00003)(0)
Called from source\winapi\hdialog.prg->HDIALOG:ONEVENT(232)
Called from ->HWG_DLGBOXINDIRECT(0)
Called from source\winapi\hdialog.prg->HDIALOG:ACTIVATE(177)
Called from hedit.prg->DLGTEXTVIEW(23)
HWGUI 2.23 dev Build 3
Date:01/23/23
Time:18:30:13
Vc está cansando a minha beleza...
Linha 37 é:
oDlg:oEdit:Value := cTxt
Não quer usar GET use EDITBOX:
Código: Selecionar todos
#xcommand @ <x>,<y> EDITBOX [ <oEdit> CAPTION ] <caption> ;
[ OF <oWnd> ] ;
[ ID <nId> ] ;
[ SIZE <width>, <height> ] ;
[ COLOR <color> ] ;
[ BACKCOLOR <bcolor> ] ;
[ ON INIT <bInit> ] ;
[ ON SIZE <bSize> ] ;
[ ON GETFOCUS <bGfocus> ] ;
[ ON LOSTFOCUS <bLfocus> ] ;
[ ON KEYDOWN <bKeyDown>] ;
[ ON CHANGE <bChange> ] ;
[ STYLE <nStyle> ] ;
[<lnoborder: NOBORDER>] ;
[<lPassword: PASSWORD>] ;
[ FONT <oFont> ] ;
[ TOOLTIP <ctoolt> ] ;
Ou faz com a palavra que te agradar...
Saudações,
Itamar M. Lins Jr.
Como iniciar o conteúdo de HCEDIT
Enviado: 23 Jan 2023 18:35
por Itamar M. Lins Jr.
Olá!
O que usar pra button ? ownbutton mesmo? (chute do nome)
Ta tudo aqui: \include\guilib.ch
Button:
Código: Selecionar todos
#xcommand @ <x>,<y> BUTTON [ <oBut> CAPTION ] <caption> ;
[ OF <oWnd> ] ;
[ ID <nId> ] ;
[ SIZE <width>, <height> ] ;
[ COLOR <color> ] ;
[ BACKCOLOR <bcolor> ] ;
[ ON INIT <bInit> ] ;
[ ON SIZE <bSize> ] ;
[ ON PAINT <bDraw> ] ;
[ ON CLICK <bClick> ] ;
[ STYLE <nStyle> ] ;
[ FONT <oFont> ] ;
[ TOOLTIP <ctoolt> ] ;
OwnerButton:
Código: Selecionar todos
#xcommand @ <x>,<y> OWNERBUTTON [ <oOwnBtn> ] ;
[ OF <oWnd> ] ;
[ ID <nId> ] ;
[ SIZE <width>, <height> ] ;
[ BACKCOLOR <bcolor> ] ;
[ ON INIT <bInit> ] ;
[ ON SIZE <bSize> ] ;
[ ON PAINT <bPaint> ] ;
[ ON CLICK <bClick> ] ;
[ HSTYLES <aStyles,...> ] ;
[ <flat: FLAT> ] ;
[ <enable: DISABLED> ] ;
[ TEXT <cText> ;
[ COLOR <color>] [ FONT <font> ] ;
[ COORDINATES <xt>, <yt>, <widtht>, <heightt> ] ;
] ;
[ BITMAP <bmp> [<res: FROM RESOURCE>] [<ltr: TRANSPARENT> [COLOR <trcolor> ]] ;
[ COORDINATES <xb>, <yb>, <widthb>, <heightb> ] ;
] ;
[ TOOLTIP <ctoolt> ] ;
[ <lCheck: CHECK> ] ;
=> ;
[<oOwnBtn> :=] HOWNBUTTON():New( <oWnd>,<nId>,\{<aStyles>\},<x>,<y>,<width>, ;
<height>,<bInit>,<bSize>,<bPaint>, ;
<bClick>,<.flat.>, ;
<cText>,<color>,<font>,<xt>, <yt>,<widtht>,<heightt>, ;
<bmp>,<.res.>,<xb>,<yb>,<widthb>,<heightb>,<.ltr.>,<trcolor>, <ctoolt>,!<.enable.>,<.lCheck.>,<bcolor> );
[; hwg_SetCtrlName( <oOwnBtn>,<(oOwnBtn)> )]
E os demais controles.
Saudações,
Itamar M. Lins Jr.
Como iniciar o conteúdo de HCEDIT
Enviado: 23 Jan 2023 18:47
por JoséQuintas
Aqui normal.
Segue fonte, talvez tenha faltado alterar o codeblock no init?
Código: Selecionar todos
#include "hwgui.ch"
#include "directry.ch"
FUNCTION DlgTextView()
LOCAL aFileList, nIndex, cFileSpec := hb_cwd() + "*.prg"
LOCAL oDlg, oEdit, cEdit, oFont := HFont():Add( "MS Sans Serif", 0, -13 )
aFileList := Directory( cFileSpec )
nIndex := 1
INIT DIALOG oDlg CLIPPER TITLE "Text view" ;
AT 0,0 SIZE 800, 600 ;
FONT oFont ON INIT { || Dlg_Init( oEdit, aFileList, nIndex ) }
@ 10, 10 GET oEdit VAR cEdit SIZE oDlg:nWidth - 40, oDlg:nHeight - 100 FONT oFont ;
STYLE ES_MULTILINE + ES_AUTOVSCROLL + WS_VSCROLL + WS_HSCROLL
ACTIVATE DIALOG oDlg
RETURN Nil
STATIC FUNCTION Dlg_Init( oEdit, aFileList, nIndex )
LOCAL cTxt
IF Len( aFileList ) == 0
cTxt := ""
ELSE
cTxt := MemoRead( aFileList[ nIndex, F_NAME ] )
ENDIF
oEdit:Value := cTxt
oEdit:Refresh()
RETURN Nil