Valdir Posted October 16, 2013 Report Share Posted October 16, 2013 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. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted October 16, 2013 Report Share Posted October 16, 2013 Está usando MEMO ? Quote Link to comment Share on other sites More sharing options...
Theotokos Posted October 16, 2013 Report Share Posted October 16, 2013 REDEFINE GET oGetMemo VAR cMemo MULTILINE WHEN .f. ..... oGetMemo:lDisColors := .f. tenta assim. Quote Link to comment Share on other sites More sharing options...
Valdir Posted October 16, 2013 Author Report Share Posted October 16, 2013 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. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted October 16, 2013 Report Share Posted October 16, 2013 // 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 Quote Link to comment Share on other sites More sharing options...
SAOliveira Posted October 16, 2013 Report Share Posted October 16, 2013 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 Quote Link to comment Share on other sites More sharing options...
Valdir Posted October 16, 2013 Author Report Share Posted October 16, 2013 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 Quote Link to comment Share on other sites More sharing options...
Valdir Posted October 16, 2013 Author Report Share Posted October 16, 2013 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. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted October 16, 2013 Report Share Posted October 16, 2013 #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. ) Quote Link to comment Share on other sites More sharing options...
SAOliveira Posted October 16, 2013 Report Share Posted October 16, 2013 Ow pescador de lobó; mGet ? Não conheço, se puder manda ai, quero ver se tem jeito. Quote Link to comment Share on other sites More sharing options...
Valdir Posted October 16, 2013 Author Report Share Posted October 16, 2013 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. Quote Link to comment Share on other sites More sharing options...
SAOliveira Posted October 16, 2013 Report Share Posted October 16, 2013 Falei TGet. Quote Link to comment Share on other sites More sharing options...
Valdir Posted October 16, 2013 Author Report Share Posted October 16, 2013 Falei TGet. Entendi... estava fazendo confusão pois o erro que mostrava era esse : "Descricao do Erro: Warning BASE/1005 Message not found: TMULTIGET:_LDISCOLORS". por isso achei que éra na classe TMultiGet... Valeu. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.