Marca Posted May 17, 2016 Report Share Posted May 17, 2016 Quero criar em uma tela que esta com resource uns botões dinâmicos que irão aparecer somente em algumas situações e não quero ter q. criar os botões no resource e ter que usar o Hide quero criar somente nas condições especificas function Main() local oDlg DEFINE DIALOG oDlg RESOURCE "test" REDEFINE BTNBMP oBtn PROMPT "test" ID 100 OF oDlg ACTIVATE DIALOG oDlg CENTERED on init ( CriaBotao( oDlg ) ) return nil FUNCTION CriaBotao( oDlg )? oDlg:nTop , oDlg:nBottom , oDlg:nHeight(), oDlg:nLeft,oDlg:nRight @ oDlg:nTop + 2 ,oDlg:nLeft + 2 BUTTON "B1" Pixel size 16,16 OF oDlg ACTION MsgInfo("Button 01 Test on oWinMain") Aqui no Top funciona perfeitamente mais nao consigo pegar os do fundo da tela @ oDlg:nBottom ,oDlg:nLeft + 2 BUTTON "B2" size 16,16 OF oDlg ACTION MsgInfo("Button 01 Test on oWinMain")devido as coordenadas virem com os valores altos. Alguem saberia me dizer como resolver ? Este resource test esta no samples do five do fonte testbtb2.prg RETURN .t. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted May 17, 2016 Report Share Posted May 17, 2016 Post TESTE.RC para vermos, please. Quote Link to comment Share on other sites More sharing options...
sambomb Posted May 17, 2016 Report Share Posted May 17, 2016 Sei que você não quer criar eles no resource e dar hide, mas é a solução mais prática, até pra dar manutenção depois.... Quote Link to comment Share on other sites More sharing options...
sambomb Posted May 17, 2016 Report Share Posted May 17, 2016 @ oDlg:nTop + 2 ,oDlg:nLeft + 2 BUTTON "B1" Pixel size 16,16 OF oDlg ACTION MsgInfo("Button 01 Test on oWinMain") Aqui no Top funciona perfeitamente mais nao consigo pegar os do fundo da tela @ oDlg:nBottom ,oDlg:nLeft + 2 BUTTON "B2" size 16,16 OF oDlg ACTION MsgInfo("Button 01 Test on oWinMain")Um está com Pixel e o outro não, já verificou isso? Quote Link to comment Share on other sites More sharing options...
Marca Posted May 17, 2016 Author Report Share Posted May 17, 2016 @ oDlg:nTop + 2 ,oDlg:nLeft + 2 BUTTON "B1" Pixel size 16,16 OF oDlg ACTION MsgInfo("Button 01 Test on oWinMain") Aqui no Top funciona perfeitamente mais nao consigo pegar os do fundo da tela @ oDlg:nBottom ,oDlg:nLeft + 2 BUTTON "B2" size 16,16 OF oDlg ACTION MsgInfo("Button 01 Test on oWinMain") Um está com Pixel e o outro não, já verificou isso? Sim Samir. Um esta com e o outro sem o pixel de propósito pra ver se daria alguma diferença e em relação a montar direto dentro do .res o problema é q. teria q. remontar tudo inclusive os actions de cada um por isso quero montar dinamicamente de acordo com o nível de acesso do usuário com isso a criação ficaria um logo após o outro não ficando espaços desiguais entre eles Em relação a sua solicitação João conforme falei abaixo o .res esta no samples do five com o nome testbtb2.res Quote Link to comment Share on other sites More sharing options...
kapiaba Posted May 17, 2016 Report Share Posted May 17, 2016 Porque você não usa o exemplo: \SAMPLES\TESTBTNS.PRG ??? Quote Link to comment Share on other sites More sharing options...
kapiaba Posted May 17, 2016 Report Share Posted May 17, 2016 Isso? #include "FiveWin.ch" Function Main() local oDlg local nTop := 2, nLeft := 2 DEFINE DIALOG oDlg RESOURCE "test" REDEFINE BTNBMP oBtn PROMPT "test" ID 100 OF oDlg ACTIVATE DIALOG oDlg CENTERED on init ( CriaBotao( oDlg ) ) return nil FUNCTION CriaBotao( oDlg ) // ? oDlg:nTop , oDlg:nBottom , oDlg:nHeight(), oDlg:nLeft,oDlg:nRight @ oDlg:nTop + 2 ,oDlg:nLeft + 2 BUTTON "B1" Pixel size 16,16 OF oDlg ACTION MsgInfo("Button 01 Test on oWinMain") // Aqui no Top funciona perfeitamente mais nao consigo pegar os do fundo da tela //@ oDlg:nBottom ,oDlg:nLeft + 2 BUTTON "B2" size 16,16 OF oDlg ACTION MsgInfo("Button 01 Test on oWinMain") @ oDlg:nTop , oDlg:nLeft += 20 BUTTON "B2" size 16,16 OF oDlg ACTION MsgInfo("Button 02 Test on oWinMain") /* devido as coordenadas virem com os valores altos. Alguem saberia me dizer como resolver ? Este resource test esta no samples do five do fonte testbtb2.prg */ RETURN .t. Quote Link to comment Share on other sites More sharing options...
Marca Posted May 17, 2016 Author Report Share Posted May 17, 2016 Sim, sendo que preciso fazer isso na parte de baixo da tela e não em cima Quote Link to comment Share on other sites More sharing options...
Marca Posted May 19, 2016 Author Report Share Posted May 19, 2016 Sim, sendo que preciso fazer isso na parte de baixo da tela e não em cima Bom dia. Pessoal o sim acima é oque eu quero fazer sendo que não na parte de cima da tela e sim na parte de baixo. No cado da parte superior da tela é simples eu mesmo já havia postado oDlg:nTop, Mais o que preciso é pegar é a parte inferior. oDlg:nBottom que apresenta valores que fazem com que o botão desapareça. Quote Link to comment Share on other sites More sharing options...
aferra Posted May 19, 2016 Report Share Posted May 19, 2016 tente desta maneira FUNCTION CriaBotao( oDlg ) @ oDlg:GetCliRect():nBottom - 135, oDlg:GetCliRect():nLeft + 005 BUTTON "B1" Pixel size 16,16 OF oDlg ACTION MsgInfo("Button 01 Test on oWinMain") @ oDlg:GetCliRect():nBottom - 135, oDlg:GetCliRect():nLeft + 040 BUTTON "B2" Pixel size 16,16 OF oDlg ACTION MsgInfo("Button 02 Test on oWinMain") RETURN .t. Quote Link to comment Share on other sites More sharing options...
Marca Posted May 19, 2016 Author Report Share Posted May 19, 2016 Bom dia meu amigo Mais como vc chegou a este -135 ai ? Este é o caso pq. a tela pode variar de tamanho Quote Link to comment Share on other sites More sharing options...
aferra Posted May 20, 2016 Report Share Posted May 20, 2016 mas vc testou da maneira que te passei? Quote Link to comment Share on other sites More sharing options...
Marca Posted May 20, 2016 Author Report Share Posted May 20, 2016 Bom diaNa tentativa e erro eu cheguei a um número próximo deste mais é exatamente oq não quero fazer é ter que adivinhar qual a posição de baixo entendeu ? Quote Link to comment Share on other sites More sharing options...
aferra Posted May 20, 2016 Report Share Posted May 20, 2016 não tem, outra maneira, vc vai ter que "acertar" esse valor, o que eu entendi é o seguinte, dialog 0,0 size 500, 700, se vc colocar nbottom o botão ira ficar no 500 e vamos dizer que o botão tenha size 30,30, então vc tem que tirar 30 para o botão aparecer, até ai certo, só que a conta me parece que é o dobro então tem que colocar nbottom-60, o botão que testei era maior então esse valor louco, e nem vi, foi isso, mas dá certo é o que importa. Quote Link to comment Share on other sites More sharing options...
sambomb Posted May 23, 2016 Report Share Posted May 23, 2016 O action tem como mudar dinamicamenteoBtn:bAction := {|| MsgInfo("Nova ação") } 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.