在绘制之前确定文本框的大小。嗨,
是否可以在实际绘制文本框之前获取文本框的大小?
我动态生成一个窗口,需要为所有对象生成间隔符。因此,在实际绘制它们之前,我需要几个文本框元素的大小。
干杯
Re:在绘制文本框之前确定文本框的大小。您可能想尝试等待(0)。 这基本上说:等到任务完成。
Re:在绘制文本框之前确定文本框的大小。这是我用来确定文本框高度的函数。 hide(1)参数阻止它显示。
get_height = function({_text, _pixels},
{Default Local},
pname = "get_height";
if (is missing(_text),
// then
pix_height = 0;
,
// else if
_text == "",
pix_height = 0;
,
// else we've got some text to work with
tb = text box(_text, set wrap(_pixels), set width(_pixels), hide(1));
tmp_win = new window("test", tb);
// Get size info
pix_height = (tb << get size)[2];
tmp_win << close window;
);
pix_height;
); // end get_height
Re:在绘制文本框之前确定文本框的大小。嗨大卫,
基本上这就是我最后所做的,只是我没有删除窗口,只是将正确大小的消息发送到带有“<< Set Width”的文本框中
!谨防!
尝试这个的每个人:在绘制初始窗口之后,你必须稍等一下才能用“<<获取大小”进行测量。等待(0.0001)对我来说是足够的。如果你不这样做会发生奇怪的事情。(这花了我半天的时间来弄明白)。
!谨防!
Re:在绘制文本框之前确定文本框的大小。粗糙的方法 - 创建一个包含你的内容的窗口 - 然后发送消息以获取大小 - 然后删除窗口(希望在实际渲染之前) - 然后使用大小来更优雅地渲染窗口 - 我必须使用这种技术有时在Windows和Mac上获得一致的输出。
Re:在绘制文本框之前确定文本框的大小。是的,有可能,但我想保留一些gui元素,这些元素都与同一个数据表交互在一起,使代码更容易阅读。因此,提前给出维度的消息会很好。Chrismas即将推出,所以我把它放在我的愿望清单上。;)Re:在绘制文本框之前确定文本框的大小。是的,有可能,
但是我想保留一些gui元素,它们都与同一个数据表交互在一起,使代码更容易阅读。
因此,提前给出维度的消息会很好。
Chrismas即将推出,所以我把它放在我的愿望清单上。;)Re:在绘制文本框之前确定文本框的大小。您是否已经耗尽了专门负责对齐和布局的现有显示框?他们的自动行为可能会减少或消除你“自己动手”的需要。
Re:在绘制文本框之前确定文本框的大小。您是否尝试使用文本框'ShowProperties()'来查看它理解的消息?我想所需的大小取决于你想要放入的文本(以及使用的字体)。下面的示例显示JMP将遵循您设置的任何宽度,但在绘制框时强制覆盖高度。
tb = TextBox();
tb << setWidth(20);
tb << setHeight(30);
Print(tb << getWidth, tb << getHeight, "\!n");
tb << setText("How now brown cow");
Print(tb << getWidth, tb << getHeight, "\!n");
NewWindow("Test", tb);
Print(tb << getWidth, tb << getHeight, "\!n");