Jump to content
Fivewin Brasil

Botões dinamicos em Resource


Marca

Recommended Posts

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.

Link to comment
Share on other sites

@ 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?

Link to comment
Share on other sites

@ 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

Link to comment
Share on other sites

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.


Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

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...