Jump to content
Fivewin Brasil

Tornar um Get Não Editável...


Valdir

Recommended Posts

Olá pessoal...

Desculpem o Asno aqui...

Preciso que um determinado Get Multiline não possa ser Editado de maneira nenhuma.

Para isso venho usando a cláusula "When .F.", o problema é que o conteúdo do Get Multiline fica meio apagado e de difícil visualização. Tenho um cliente que está reclamando disso

Tentei usar a Cláusula Readonly, porém essa permite marcar o conteúdo e ao tentar realizar qualquer evento com essas informações, é solicitado o travamento de registro, pois neste caso estou usando as informações diretamente do banco de dados.

Existe algum outro comando ou cláusula que me permite visualizar esse tipo de Get Multiline ?

Obrigado.

Link to comment
Share on other sites

Está usando MEMO ?

Fala Tranka...

Obrigado por responder.

Negativo, é uma Dialog com uma ListBox e um Get Multiline com aproximadamente 180 caracteres de tamanho. Conforme navego pela Listbox, é atualizado o conteúdo do Get Multiline com as informações da Base de Dados.

REDEFINE GET oGetMemo VAR cMemo MULTILINE WHEN .f. .....

oGetMemo:lDisColors := .f.

tenta assim.

Fala Roni.... Blz ?

Obrigado por responder.

a Cláusula lDisColors não consta na TGetMultiline. Veja :

Descricao do Erro: Warning BASE/1005 Message not found: TMULTIGET:_LDISCOLORS

Obrigado.

Link to comment
Share on other sites

// Testing GETs


#include "FiveWin.ch"

#define CLR_MENTA RGB(221,255,238)
#define CLR_HMENTA RGB(000,128,000)
#define CLR_SOFTYELLOW RGB(255,251,225)

function Main()

LOCAL oDlg, oGet
LOCAL cCad := "Testando o MULTILINE "
LOCAL nNum := 0
LOCAL dDat := Date()

Set century On
Set Date Ansi
Set Date format "mm/dd/yyyy"

SET _3DLOOK ON

/*
SetGetColorFocus( CLR_MENTA )

tGet():lDisColors := .F. //FALSE
tGet():nClrTextDis := CLR_BLUE
tGet():nClrPaneDis := CLR_SOFTYELLOW
*/

DEFINE DIALOG oDlg TITLE "TGet from " + FWDESCRIPTION

@ 1, 2 SAY "Text..:" OF oDlg

@ 1, 6 Get oGet VAR cCad MULTILINE OF oDlg ;
COLORS CLR_HRED, CLR_WHITE READONLY


@ 3, 7 BUTTON "&Ok" OF oDlg SIZE 30, 12 ACTION oDlg:End()

@ 3, 16 BUTTON "&Cancel" SIZE 30, 12 OF oDlg ACTION oDlg:End() CANCEL

// TGet():SetColorFocus( nRGB( 200, 120, 120 ) )

ACTIVATE DIALOG oDlg CENTERED

return nil

Link to comment
Share on other sites

Você pode alterar a TGet, no metod Paint()

if IsWindowEnabled( ::hWnd ) .and. ! ::lReadOnly
CallWindowProc( ::nOldProc, ::hWnd, WM_PAINT, ::hDC, 0 )
else
if ::lDisColors
SetTextColor( ::hDC, GetSysColor( COLOR_GRAYTEXT ) )
SetBkColor( ::hDC, GetSysColor( COLOR_WINDOW ) )
// sergio - alterado para manter a cor do get mesmo em When(.f.)
//nClrBtnPane := GetSysColor( COLOR_WINDOW )
else

Link to comment
Share on other sites

Você pode alterar a TGet, no metod Paint()

if IsWindowEnabled( ::hWnd ) .and. ! ::lReadOnly

CallWindowProc( ::nOldProc, ::hWnd, WM_PAINT, ::hDC, 0 )

else

if ::lDisColors

SetTextColor( ::hDC, GetSysColor( COLOR_GRAYTEXT ) )

SetBkColor( ::hDC, GetSysColor( COLOR_WINDOW ) )

// sergio - alterado para manter a cor do get mesmo em When(.f.)

//nClrBtnPane := GetSysColor( COLOR_WINDOW )

else

Fala ae Sérgio... Blz ?

Obrigado por responder.

Não vai resolver pois a Classe mGet no Metodo oPaint não tem a cláusula SetTextColor...

De qualquer forma agradeço.

Um abraço

Link to comment
Share on other sites

Fala Tranka...

Testa ae....

#include "FiveWin.ch"

#define CLR_MENTA RGB(221,255,238)
#define CLR_HMENTA RGB(000,128,000)
#define CLR_SOFTYELLOW RGB(255,251,225)
function Main()
LOCAL oDlg, oGet, oLbx
LOCAL cCad := "Testando o MULTILINE "
LOCAL nNum := 0
LOCAL dDat := Date()
Set century On
Set Date Ansi
Set Date format "mm/dd/yyyy"
SET _3DLOOK ON
/*
SetGetColorFocus( CLR_MENTA )
tGet():lDisColors := .F. //FALSE
tGet():nClrTextDis := CLR_BLUE
tGet():nClrPaneDis := CLR_SOFTYELLOW
*/
USE Customer ALIAS CST SHARED NEW
DEFINE DIALOG oDlg FROM 0, 0 TO 39, 120 ;
TITLE "Arquivo de Clientes" ;
STYLE nOR( DS_MODALFRAME, WS_POPUP, WS_CAPTION, WS_BORDER )
oDlg:lHelpicon:=.f.
@ 0, 0 LISTBOX oLbx ;
FIELDS;
CST->NOTES;
HEADERS;
"Texto" ;
FIELDSIZES 300 ;
ON CHANGE( oGet:Refresh() ) ;
SIZE 500, 200 ;
OF oDlg
@ 18, 2 SAY "Text..:" OF oDlg
@ 18, 6 Get oGet VAR CST->Notes MULTILINE OF oDlg ;
COLORS CLR_HRED, CLR_WHITE READONLY
@ 15, 40 BUTTON "&Ok" OF oDlg SIZE 30, 12 ACTION oDlg:End()
@ 15, 50 BUTTON "&Cancel" SIZE 30, 12 OF oDlg ACTION oDlg:End() CANCEL
// TGet():SetColorFocus( nRGB( 200, 120, 120 ) )
ACTIVATE DIALOG oDlg CENTERED
return nil

Click no Get Multiline e depois tecle ENTER... repare que irá solicitar o Travamento do Registro.

Veja que a Base de dados está como Shared, eis o motivo de pedir Travamento.

Sabe se existe uma forma de usar o OrdScope como "Exclusivo" ?

Um abraço.

Link to comment
Share on other sites


#include "FiveWin.ch"

#define CLR_MENTA RGB(221,255,238)
#define CLR_HMENTA RGB(000,128,000)
#define CLR_SOFTYELLOW RGB(255,251,225)

ANNOUNCE RDDSYS
REQUEST DBFCDX, DBFFPT
REQUEST OrdKeyNo, OrdKeyCount, OrdCreate, OrdKeyGoto

STATIC lNaoModificaGet := .T.

function Main()

LOCAL oDlg, oGet, oLbx
LOCAL cCad := "Testando o MULTILINE "
LOCAL nNum := 0
LOCAL dDat := Date(), CST, oFont, oFnt

RDDSETDEFAULT( "DBFCDX" ) // CARREGA RDD DEFINIDO NO CASO, *.CDX
SET CENTURY ON // 4 DIGITOS PARA O ANO
SET DATE BRITISH // FORMATO DD/MM/AAAA
SET EPOCH TO YEAR( DATE() ) - 30
SET SOFTSEEK OFF // PARA REALIZAR UMA BUSCA APROXIMADA
SET WRAP ON //-Set( 35, "ON" ) // PARA MENUS
SETCANCEL( .F. ) // INUTILIZA ALT + C PARA ABORTAR PROGRAMA
SET CONFIRM OFF // CURSOR NAO PODE DESLOCAR-SE AUTOMATICAMENTE
SET DELETED ON // ON IMPEDIR VER REGISTROS MARCADOS PARA APAGAR
SET ESCAPE ON // TECLA ESC LIGADA, POSSO ESCAPAR.
SET EXCLUSIVE OFF // REDE NETUSE LIGADA
SET MULTIPLE OFF // PROGRAMA EM REDE

USE Customer INDEX CUSTOMER ALIAS CST SHARED NEW
GO TOP

CST := ALIAS()

RLOCK()

DEFINE FONT oFnt NAME "Ms Sans Serif" SIZE 00, 14 BOLD
DEFINE FONT oFont NAME "Ms Sans Serif" SIZE 00, -14 BOLD

DEFINE DIALOG oDlg FROM 0, 0 TO 39, 120 ;
TITLE "Arquivo de Clientes" ;
STYLE nOR( DS_MODALFRAME, WS_POPUP, WS_CAPTION, WS_BORDER )

oDlg:lHelpicon:=.f.

@ 0, 0 LISTBOX oLbx FIELDS;
CST->NOTES;
HEADERS;
"Texto" ;
FIELDSIZES 300 ;
ON CHANGE( CARREGACLI( oLbx, oGet ) ) ;
SIZE 500, 200 OF oDlg

@ 18, 2 SAY "Text..:" OF oDlg

//@ 3, 10 GET oGet VAR cVar OF oDlg SIZE 95, 30 MULTILINE
@ 18, 6 Get oGet VAR CST->Notes MULTILINE OF oDlg ;
COLORS CLR_HRED, CLR_WHITE FONT oFont

@ 15, 40 BUTTON "&Ok" OF oDlg SIZE 30, 12 ACTION oDlg:End()

@ 15, 50 BUTTON "&Cancel" SIZE 30, 12 OF oDlg ACTION oDlg:End() CANCEL

ACTIVATE DIALOG oDlg CENTERED

UNLOCK

return nil

STATIC FUNCTION CARREGACLI( oLbx, oGet )

RLOCK()

oGet:Refresh()

oGet:SetColor( , 11251710 )

oLbx:Refresh()

oGet:Disable()


RETURN( .T. )

Link to comment
Share on other sites

Ow pescador de lobó;

mGet ?

Não conheço, se puder manda ai, quero ver se tem jeito.

ahahahahahahahaahahha... essa foi boa. Valeu.

Esse peixe ai da foto um um "Tucunaré" e não uma "Traíra"... hehehehehehehehe

Antes que eu esqueça novamente... você está certo, é a Classe TMultiGet...

Veja na sua pasta da Fivewin\Source\Classes\mGet.prg.

abração.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...