marcioe Posted July 7, 2023 Author Report Share Posted July 7, 2023 Agora, kapiaba disse: Então... Você pode fazer como achar melhor, é só encaixar lógica. Correto? O caminho é esse, não tem milagre em programação. abs. Não estou esperando um milagre. Apenas opniões e informaçoes de pessoas com mais experiência do que eu. Obrigado.. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted July 7, 2023 Report Share Posted July 7, 2023 4 minutos atrás, marcioe disse: Não estou esperando um milagre. Apenas opniões e informaçoes de pessoas com mais experiência do que eu. Obrigado.. Eu acho, que depois deste exemplo, muitos no forum INTER vão entender o que você deseja, e vão melhorar o exemplo. Eu acho... Até você vai melhorar, tenho certeza... Depois, ponha o resultado final, ok? Quote Link to comment Share on other sites More sharing options...
marcioe Posted July 7, 2023 Author Report Share Posted July 7, 2023 ok Isso vamos aguardar as mentes brilhantes Quote Link to comment Share on other sites More sharing options...
ricardomouramarques Posted July 15, 2023 Report Share Posted July 15, 2023 Em 07/07/2023 at 13:42, marcioe disse: ok Isso vamos aguardar as mentes brilhantes #include "FiveWin.ch" static oDlg //--------------------------------------------------------------------------------------- function main() private oSNome, oSEndereco, oSIdade //variáveis de objetos dos SAYs (IMPORTANTE) private cNome := space(50) private cEndereco := space(80) private nIdade := 0 DEFINE DIALOG oDlg FROM 0, 0 TO 400, 800 TITLE "TESTE" Pixel ACTIVATE DIALOG oDlg CENTERED ON INIT iniciar() return nil //--------------------------------------------------------------------------------------- function iniciar() @ 10, 10 SAY oSNome VAR "Nome" OF oDlg Pixel @ 10, oSNome:nWidth+10 SAY '*' COLOR CLR_RED Pixel @ 30, 10 GET oNome VAR cNome size 400, 22 OF oDlg Pixel @ 70, 10 SAY oSEndereco VAR "Endereço" OF oDlg Pixel @ 70, oSEndereco:nWidth+10 SAY '*' COLOR CLR_RED Pixel @ 90, 10 GET cEndereco OF oDlg size 600, 22 Pixel @ 130, 10 SAY oSIdade VAR "Idade" OF oDlg Pixel @ 150, 10 GET oIdade VAR nIdade OF oDlg size 40, 22 Pixel return nil //--------------------------------------------------------------------------------------- Seria isso? Quote Link to comment Share on other sites More sharing options...
ricardomouramarques Posted July 16, 2023 Report Share Posted July 16, 2023 Opcionalmente poderia criar uma função para isso. O código ficaria mais limpo. Veja um exemplo: #include "FiveWin.ch" static oDlg //--------------------------------------------------------------------------------------- function main() private oSNome, oSEndereco, oSIdade, oSCidade //variáveis de objetos dos SAYs private oObjRecebido private cNome := space(50) private cEndereco := space(80) private nIdade := 0 private cCidade := space(50) DEFINE DIALOG oDlg FROM 0, 0 TO 400, 800 TITLE "TESTE" Pixel ACTIVATE DIALOG oDlg CENTERED ON INIT iniciar() return nil //--------------------------------------------------------------------------------------- function iniciar() @ 10, 10 SAY oSNome VAR "Nome" OF oDlg Pixel @ 30, 10 GET oNome VAR cNome size 400, 22 OF oDlg Pixel @ 70, 10 SAY oSEndereco VAR "Endereço" OF oDlg Pixel @ 90, 10 GET cEndereco OF oDlg size 600, 22 Pixel @ 130, 10 SAY oSIdade VAR "Idade" OF oDlg Pixel @ 150, 10 GET oIdade VAR nIdade OF oDlg size 40, 22 Pixel @ 190, 10 SAY oSCidade VAR "Cidade" OF oDlg Pixel @ 210, 10 GET oCidade VAR cCidade OF oDlg size 400, 22 Pixel //altera a cor do asterisco @ 270, 10 BUTTON 'ALTERA COR' Size 120,20 action (oObjRecebido:setColor(RGB(255,150,255), GetSysColor(15)),oObjRecebido:refresh()) Pixel //Oculta o asterisco @ 270, 180 BUTTON 'OCULTA ASTERISCO' Size 120,20 action oObjRecebido:SetText('') Pixel //Exibe o asterisco, caso esteja ocultado @ 270, 320 BUTTON 'EXIBE ASTERISCO' Size 120,20 action oObjRecebido:SetText('*') Pixel //SAYs que serão marcados como requeridos. required(oSNome) required(oSEndereco) //com o parâmetro de cor e recebendo o objeto SAY no retorno caso queira manipulá-lo posteriomente oObjRecebido := required(oSCidade, RGB(0,255,0)) return nil //--------------------------------------------------------------------------------------- function required(oSay, nColor) //Parêmtro nColor é opcional local oNewSay, oFontNewSay DEFAULT nColor := RGB(255,0,0); DEFINE FONT oFontNewSay NAME "Arial" SIZE 0, -18 BOLD @ oSay:nTop, oSay:nLeft+oSay:nWidth SAY oNewSay VAR '*' COLOR nColor FONT oFontNewSay Pixel return oNewSay //--------------------------------------------------------------------------------------- Quote Link to comment Share on other sites More sharing options...
kapiaba Posted July 16, 2023 Report Share Posted July 16, 2023 Ricardo, desafio: faça isso com workshop.exe e ainda por cima, quando o CAMPO GET estive vazio, você escreve em cima do GET, "* Campo Obrigatório". Topas? kkkkkkkk -> Se pagar bem, eu faço de com uma mão amarrada. kkkkkkkkkkkkkkkkk Regards, saludos. Quote Link to comment Share on other sites More sharing options...
ricardomouramarques Posted July 16, 2023 Report Share Posted July 16, 2023 54 minutos atrás, kapiaba disse: Ricardo, desafio: faça isso com workshop.exe e ainda por cima, quando o CAMPO GET estive vazio, você escreve em cima do GET, "* Campo Obrigatório". Topas? kkkkkkkk -> Se pagar bem, eu faço de com uma mão amarrada. kkkkkkkkkkkkkkkkk Regards, saludos. Fala Kapiaba!!!!! Estou um tanto enferrujado,.mas posso tentar. Se eu conseguir, vc paga uma breja. kkkk!!! Regards! Quote Link to comment Share on other sites More sharing options...
kapiaba Posted July 16, 2023 Report Share Posted July 16, 2023 19 minutos atrás, ricardomouramarques disse: Fala Kapiaba!!!!! Estou um tanto enferrujado,.mas posso tentar. Se eu conseguir, vc paga uma breja. kkkk!!! Regards! Fechado!! 6 brejas(para iniciar... kkkkk) no centro de Sampa, bora? Não vale copiar o meu exemplo. kkkkkkkkkkkkkk Regards, saludos. ricardomouramarques 1 Quote Link to comment Share on other sites More sharing options...
ricardomouramarques Posted July 17, 2023 Report Share Posted July 17, 2023 Em 16/07/2023 at 16:33, kapiaba disse: Fechado!! 6 brejas(para iniciar... kkkkk) no centro de Sampa, bora? Não vale copiar o meu exemplo. kkkkkkkkkkkkkk Regards, saludos. Vamos lá. Pensei em algo como Placeholder do HTML. Então poderá ser usada como isso mesmo. A cor padrão do texto é cinza, porém vc pode enviar o parâmetro de cor. Ou seja, pode ficar da cor que vc quiser. Inclusive vermelho. rs O texto (placeholder) vai desaparecer quando o GET receber o foco, e voltará a aparecer quando o get perder o foco e estiver limpo (empty) Vamos para o nosso POG. Na Classe GET.PRG, faça as incluções abaixo: //Declare as seguintes variáveis DATA oPlcHld INIT NIL DATA cPlcHld INIT "" DATA nPlcClr INIT RGB(100,100,100) //Declare o seguinte Method METHOD SetPlcHld(cPlc, nClr) //Localize o METHOD LostFocus( hCtlFocus ) CLASS TGet //e adicione o seuinte código, logo no início METHOD LostFocus( hCtlFocus ) CLASS TGet //ADD Isso if !empty(::oPlcHld) if empty(::cText) ::oPlcHld:nWidth := ::nWidth-8 endif endif //Localize o METHOD GotFocus( hCtlLost ) CLASS TGet //e adicione o seuinte código, logo no início METHOD GotFocus( hCtlLost ) CLASS TGet //ADD isso if !empty(::oPlcHld) ::oPlcHld:nWidth=0 endif //Inclua o Method SetPlcHld(cPlc, nClr) METHOD SetPlcHld(cPlc, nClr) CLASS TGet local oWnd := self local nWidth := ::nWidth-8 DEFAULT nClr := ::nPlcClr ::nPlcClr := nClr ::cPlcHld := cPlc if !empty(::cText) nWidth := 0 endif @ 2, 4 SAY ::oPlcHld VAR ::cPlcHld SIZE nWidth, ::nHeight-4 COLOR ::nPlcClr, ::nClrPane OF oWnd Pixel return nil Abaixo, um exemplo de uso: #include "FiveWin.ch" static oDlg //--------------------------------------------------------------------------------------- function main() private oNome, oEndereco, oIdade, oCidade private cNome := space(50) private cEndereco := space(80) private nIdade := 0 private cCidade := space(50) DEFINE DIALOG oDlg FROM 0, 0 TO 400, 800 TITLE "TESTE" Pixel ACTIVATE DIALOG oDlg CENTERED ON INIT iniciar() return nil //--------------------------------------------------------------------------------------- function iniciar() @ 10, 10 SAY "Nome" OF oDlg Pixel @ 30, 10 GET oNome VAR cNome size 400, 22 OF oDlg Pixel @ 70, 10 SAY "Endereço" OF oDlg Pixel @ 90, 10 GET oEndereco VAR cEndereco OF oDlg size 600, 22 Pixel @ 130, 10 SAY "Idade" OF oDlg Pixel @ 150, 10 GET oIdade VAR nIdade OF oDlg size 70, 22 Pixel @ 190, 10 SAY "Cidade" OF oDlg Pixel @ 210, 10 GET oCidade VAR cCidade OF oDlg size 400, 22 Pixel //altera a cor do asterisco @ 270, 10 BUTTON 'VALOR NOME' Size 120,20 action alert(oNome:cText) Pixel //GETs com PlaceHolder oNome:SetPlcHld('*Nome Obrigatório', RGB(255,0,0)) oEndereco:SetPlcHld('*Endereço Obrigatório', RGB(255,0,0)) oIdade:SetPlcHld('Idade') oCidade:SetPlcHld('Cidade') return nil Será que vale pelo menos uma brejinha??? kkk Quote Link to comment Share on other sites More sharing options...
kapiaba Posted July 18, 2023 Report Share Posted July 18, 2023 Bom dia Ricardo. É uma boa ideia, más o Márcio é chato para kralho e não quer alterar a TGET.PRG vamos a outra ideia. E até agora NADA DE RECURSOS. kkkkkkkkkkkkkkkkkk abs. Regards, saludos. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted July 18, 2023 Report Share Posted July 18, 2023 Aqui Ricardo, os Links para usar o WORKSHOP.exe the best. https://forums.fivetechsupport.com/viewtopic.php?f=6&t=43426&sid=e424e6f31fb5d164ebb9f43f3eb8cd0f&start=30#p261753 Abs. Saludos. ricardomouramarques 1 Quote Link to comment Share on other sites More sharing options...
emotta Posted July 18, 2023 Report Share Posted July 18, 2023 Desculpe se perdi algo na discussão, mas o mais simples pra identificar campos obrigatórios poderia ser exibir o label do campo em negrito, se não for obrigatório exibe o label sem ser negrito. Dessa forma basta vc ter duas fontes definidas, sendo uma negrito e outra normal. Além do aspecto visual vc tem outra necessidade nessa questão do obrigatório? Hoje essa é a tela de meu sistema (atualmente é web mas quando era xharbour/fivewin a ideia era a mesma) Quote Link to comment Share on other sites More sharing options...
kapiaba Posted July 18, 2023 Report Share Posted July 18, 2023 EBA!! Mais um para pagar as BREJAS Ricardo. Emotta, isso que mostras, é na ALTERAÇÃO. E na INCLUSÃO? O Márcio quer mostrar, na INCLUSÃO quando o uçuário teclar <ENTER? no CAMPO GET VAZIO: "* Campo Obrigatório Gumento". Comprendes? ELE USA WORKSHOP.exe. Abs y thanks pela participação. Brejas chegando fácil... kkkkkkkkkkkkkkkk Regards, saludos. Quote Link to comment Share on other sites More sharing options...
marcioe Posted July 18, 2023 Author Report Share Posted July 18, 2023 Em 09/04/2014 at 08:19, gilmer disse: Bom Dia, Isto é FiveWin sim, esta rotina é minha. O Gilmer tinha feito isso . Na época ele tinha feito para a ecf da empresa Onie. Quando o campo era obrigado ficar com uma pontinha no get Uso o Peles c para criar a diálogo Quote Link to comment Share on other sites More sharing options...
kapiaba Posted July 18, 2023 Report Share Posted July 18, 2023 37 minutos atrás, marcioe disse: O Gilmer tinha feito isso . Na época ele tinha feito para a ecf da empresa Onie. Quando o campo era obrigado ficar com uma pontinha no get Uso o Peles c para criar a diálogo Não uso PELLESC.exe nem que você pague. O Ricardo vai tentar com o WORKSHOP.exe, assim, eu posso "interagir/Interferir", já com PELLESC.exe eu não vou nem "oiar". kkkkkkkkkk nóis toma brejas, más num é besta. kkkkkkkkkkkkkk Regards, saludos. Quote Link to comment Share on other sites More sharing options...
emotta Posted July 18, 2023 Report Share Posted July 18, 2023 1 hora atrás, kapiaba disse: EBA!! Mais um para pagar as BREJAS Ricardo. Emotta, isso que mostras, é na ALTERAÇÃO. E na INCLUSÃO? O Márcio quer mostrar, na INCLUSÃO quando o uçuário teclar <ENTER? no CAMPO GET VAZIO: "* Campo Obrigatório Gumento". Comprendes? ELE USA WORKSHOP.exe. Abs y thanks pela participação. Brejas chegando fácil... kkkkkkkkkkkkkkkk Regards, saludos. Inclusão ou alteração não faz diferença. Isso é um formulário de cadastro, tanto na inclusão como na alteração o usuário precisa saber o que ele é obrigado a informar e o que é opcional. Sobre o Marcio querer isso na Inclusão é por sua conta isso? Não vi ele pedir isso ahhahahahahaa Quote Link to comment Share on other sites More sharing options...
kapiaba Posted July 18, 2023 Report Share Posted July 18, 2023 3 minutos atrás, emotta disse: Inclusão ou alteração não faz diferença. Isso é um formulário de cadastro, tanto na inclusão como na alteração o usuário precisa saber o que ele é obrigado a informar e o que é opcional. Sobre o Marcio querer isso na Inclusão é por sua conta isso? Não vi ele pedir isso ahhahahahahaa Eu tô falanoo...Vai ter que pagar as brejas(kkkkkkkk), essa "pendenga" já vem de LONG, LONG TIME AGO: mira aqui: https://forums.fivetechsupport.com/viewtopic.php?f=3&t=43419&sid=d7897f8559173de87b984e4a88cc11c8 Regards, saludos. Quote Link to comment Share on other sites More sharing options...
marcioe Posted July 18, 2023 Author Report Share Posted July 18, 2023 22 minutos atrás, emotta disse: Inclusão ou alteração não faz diferença. Isso é um formulário de cadastro, tanto na inclusão como na alteração o usuário precisa saber o que ele é obrigado a informar e o que é opcional. Sobre o Marcio querer isso na Inclusão é por sua conta isso? Não vi ele pedir isso ahhahahahahaa Queria apenas de uma forma visual para que o usuário possa saber que é obrigatório o campo, hoje já tenho validações, antes de gravar o registro, se por exemplo o campo NOME estiver em branco, se o campo que é obrigatório, e não estiver preenchido. Ele avisa com uma Dialog Hoje já funciona assim, porem Porem só quando ele clica em gravar, que isso aparece. para o usuário Quote Link to comment Share on other sites More sharing options...
emotta Posted July 18, 2023 Report Share Posted July 18, 2023 Se vc quer uma solução visual, deixar o label dos campos obrigatórios em negrito e os opcionais sem ser negrito, não resolve? 1 hora atrás, marcioe disse: Queria apenas de uma forma visual para que o usuário possa saber que é obrigatório o campo, hoje já tenho validações, antes de gravar o registro, se por exemplo o campo NOME estiver em branco, se o campo que é obrigatório, e não estiver preenchido. Ele avisa com uma Dialog Hoje já funciona assim, porem Porem só quando ele clica em gravar, que isso aparece. para o usuário Quote Link to comment Share on other sites More sharing options...
marcioe Posted July 18, 2023 Author Report Share Posted July 18, 2023 Parcialmente sim mas sabe como é usuário né (Vão falar que não percebeu), Mas é o caminho Quote Link to comment Share on other sites More sharing options...
emotta Posted July 18, 2023 Report Share Posted July 18, 2023 Na versão do meu sistema em desktop usei por anos a estratégia de exibir os campos obrigatórios em negrito e em azul e os opcionais somente em preto (sem ser negrito). Na versão web eu mudei e deixei da mesma cor e apenas identifico os obrigatórios como negrito. Nunca tive reclamação de usuário nesse sentido. A tela abaixo é um formulário em fivewin do sistema. Quote Link to comment Share on other sites More sharing options...
marcioe Posted July 18, 2023 Author Report Share Posted July 18, 2023 28 minutos atrás, emotta disse: Na versão do meu sistema em desktop usei por anos a estratégia de exibir os campos obrigatórios em negrito e em azul e os opcionais somente em preto (sem ser negrito). Na versão web eu mudei e deixei da mesma cor e apenas identifico os obrigatórios como negrito. Nunca tive reclamação de usuário nesse sentido. A tela abaixo é um formulário em fivewin do sistema. Top, estilo MICROSIGA / TOTVS. Quote Link to comment Share on other sites More sharing options...
emotta Posted July 18, 2023 Report Share Posted July 18, 2023 sim, como trabalhei lá antes de ter a empresa eu segui a mesma linha de dicionário de dados deles, com a criação dos campos dinamicamente no formulário e no dicionário apontando as validações e se o campo é obrigatório ou não. Foi difícil desenvolver mas dps de pronto foi uma mão na roda por anos e anos. 46 minutos atrás, marcioe disse: Top, estilo MICROSIGA / TOTVS. Quote Link to comment Share on other sites More sharing options...
marcioe Posted July 18, 2023 Author Report Share Posted July 18, 2023 Eu gosto bem do fivewin, Mas tem coisas que infelizmente não tem com ele absorver, um exemplo é Web. Mas vamos Continuar com aa nossa vaca fria Quote Link to comment Share on other sites More sharing options...
emotta Posted July 18, 2023 Report Share Posted July 18, 2023 Xharbour/fivewin é excelente para aplicações Desktop. Pra Web eu fui para Ruby on rails e react.js 2 horas atrás, marcioe disse: Eu gosto bem do fivewin, Mas tem coisas que infelizmente não tem com ele absorver, um exemplo é Web. Mas vamos Continuar com aa nossa vaca fria 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.