Label等静态控件如何让文字垂直居中并且保持原来的多行显示?
本帖最后由 cashiba 于 2017-3-10 22:55 编辑#include <GUIConstantsEx.au3>
#Include <Staticconstants.Au3>
Example()
Func Example()
GUICreate("Label")
GUICtrlCreateLabel("锦瑟无端五十弦,一弦一柱思华年。", 10, 10, 100, 70,8388608+$Ss_Center)
GUICtrlCreateLabel("庄生晓梦迷蝴蝶,望帝春心托杜鹃。", 10, 90, 100, 70,8388608+$Ss_Centerimage)
GUICtrlCreateLabel("沧海月明珠有泪,蓝田日暖玉生烟。", 10, 170,100, 70,8388608)
GUICtrlCreateLabel("此情可待成追忆,只是当时已惘然。", 10, 250,100, 70,8388608+$Ss_Centerimage)
GUICtrlCreateLabel("--锦瑟 ·李商隐", 10, 330,100,70,8388608+$Ss_Right)
GUISetState(@SW_SHOW)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEnd
EndFunc
如上图示文字显示有问题.
文字垂直居中没问题,问题是如何保持原来的多行显示,而不是变成单行显示并且被截断呢? 好像不能这样。 利用换行符比较累#include <GUIConstantsEx.au3>
#Include <Staticconstants.Au3>
Example()
Func Example()
GUICreate("Label")
GUICtrlCreateLabel('我' & @CRLF & '是' & @CRLF & '例' & @CRLF & '子',100,100,80,100,0x2000)
GUISetState(@SW_SHOW)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEnd
EndFunc GUICreate("Test", 200, 100)
GUICtrlCreateLabel(StringFormat('我\n才是\n好例\n子'),10,20,180,80,BitOR(0x01,0x2000))
GUISetState()
Do
Sleep(10)
Until GUIGetMsg()= -3 好像都达不到效果阿....
{:face (396):} 感觉楼主有点过于呆板了,虽然5#的图看起来很灵俏. GUICtrlCreateLabel(StringFormat("\n\n此情可待成追忆,\n只是当时已惘然。"), 10, 250,100, 70,8388608+BitOR(0x01,0x2000)) 本帖最后由 cashiba 于 2017-3-7 21:07 编辑
感觉楼主有点过于呆板了,虽然5#的图看起来很灵俏.
Alam 发表于 2017-3-7 00:23 http://www.autoitx.com/images/common/back.gif
看起来是目前最好的解决办法了....
只是觉得像这样用换行符的效果不太好控制,上面的例子是为了演示,label高度都很大,如果小点的那种,就没那么方便了#include <GUIConstantsEx.au3>
#Include <Staticconstants.Au3>
Example()
Func Example()
GUICreate("Label")
GUICtrlCreateLabel(StringFormat("锦瑟无端五十弦,\n一弦一柱思华年。"), 10, 10, 100, 35,8388608+BitOR(0x01,0x2000))
GUICtrlCreateLabel(StringFormat("\n庄生晓梦迷蝴蝶,\n望帝春心托杜鹃。"), 10, 55, 100, 50,8388608+BitOR(0x01,0x2000))
GUICtrlCreateLabel(StringFormat("\n\n沧海月明珠有泪,\n蓝田日暖玉生烟。"), 10,115,100, 65,8388608+BitOR(0x01,0x2000))
GUICtrlCreateLabel(StringFormat("\n\n此情可待成追忆,\n只是当时已惘然。"), 10, 195,100, 80,8388608+BitOR(0x01,0x2000))
GUICtrlCreateLabel(StringFormat("\n\n--锦瑟 ·李商隐"), 10, 290,100,70,8388608+$Ss_Right)
GUISetState(@SW_SHOW)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEnd
EndFunc 不用$Ss_Centerimage和$bs_center参数的时候,文字是很自然的触边自动换行.
自然的就是好....
{:face (125):} 你这样写,为了什么,
如果想换行直接用 @CRLF换行不就行了 回复 6# Alam
有没有办法达到 上下居中,长度超过的话能自动换行 本帖最后由 skysmile 于 2017-3-7 23:16 编辑
回复 10# 1361739590
垂直居中可以用 BitOR($ss_center,$bs_center) 回复 11# skysmile
不会换行。 BitOR($ss_center,$bs_center,$BS_MULTILINE) 回复 13# skysmile
一样不行。 回复 13# skysmile
BS系列是按钮的样式啊……你说话前就没有自己试试?
页:
[1]
2