Что нового

[Элементы GUI] Вопрос по вкладкам TabItem

by_gangster

Новичок
Сообщения
22
Репутация
0
Есть код
Код:
gui = GUICreate ("autoit",450,280)
$tab = GUICtrlCreateTab(0, 0, 450,280)
GUICtrlCreateTabItem("Вкладка 1")
$hRichEdit = _GUICtrlRichEdit_Create($Gui,'', 5, 21, 440, 220,BitOR( $WS_VSCROLL,$ES_MULTILINE,$ES_READONLY))
_GUICtrlIpAddress_SetFont($hRichEdit,6)
$ini_r = IniReadSection ( @ScriptDir & "\sm.ini", "test" )
For $i = 1 To $ini_r[0][0]
_GUICtrlRichEdit_AppendText($hRichEdit,_Encoding_UTF8ToANSI($ini_r[$i][0] & ' '& $ini_r[$i][1] & @CR))
 Next
GUICtrlCreateTabItem("Вкладка 2")
_GUICtrlRichEdit_SetText($hRichEdit, 'Текст 2')


При выполнении программы то в RichEdit сразу на первой вкладке появляется Текст 2, хотя он ведь должен обновится после перехода на вторую вкладку. Не понимаю почему так ?
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Вы элемент Edit создаёте поверх вкладок, вот и видите текст в нём, а не во вкладках.
Без "RichEdit" Вас устроит ?
Код:
#include <GUIConstantsEx.au3>

$Gui = GUICreate("autoit", 450, 280)
$tab = GUICtrlCreateTab(-1, -1, 450, 280)
$tab1 = GUICtrlCreateTabItem("Вкладка 1")
$tab2 = GUICtrlCreateTabItem("Вкладка 2")
$Edit = GUICtrlCreateEdit('', 5, 21, 440, 220)
GUICtrlCreateTabItem('')
GUISetState()

GUICtrlSetData($Edit, 'Текст 2')

While 1
	$msg = GUIGetMsg()
	Switch $msg
		Case $GUI_EVENT_CLOSE
			Exit
	EndSwitch
WEnd
 
Автор
B

by_gangster

Новичок
Сообщения
22
Репутация
0
Хотелось бы увидеть пример с RichEdit если можно. Потому что мне кажется что дело в нем.
 
Автор
B

by_gangster

Новичок
Сообщения
22
Репутация
0
Нужны такие функции как _GUICtrlRichEdit_AppendText и _GUICtrlRichEdit_AutoDetectURL
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Раз "RichEdit" для Вас принципиален, тогда в нужные моменты его показывайте, когда он не нужен - прячте, например так :
Код:
#include <GUIConstantsEx.au3>
#include <GuiRichEdit.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Gui = GUICreate("autoit", 450, 280)
$tab = GUICtrlCreateTab(-1, -1, 450, 280)
$tab1 = GUICtrlCreateTabItem("Вкладка 1")
$tab2 = GUICtrlCreateTabItem("Вкладка 2")
GUICtrlCreateTabItem('')
GUISetState()
$hRichEdit = _GUICtrlRichEdit_Create($Gui, '', 5, 21, 440, 220, BitOR($WS_VSCROLL, $ES_MULTILINE, $ES_READONLY))

_GUICtrlRichEdit_SetText($hRichEdit, 'Текст 2')

While 1
	$msg = GUIGetMsg()
	Switch $msg
		Case $GUI_EVENT_CLOSE
			Exit
	EndSwitch

	$Status_Tab = GUICtrlRead($tab, 1);Чтение статуса $tab
	If $Status_Tab = $tab2 Then ;Если открыта вторая вкладка - показываем $hRichEdit
		ControlShow($Gui, "", $hRichEdit)
	Else                        ;Если не вторая - прячем $hRichEdit
		ControlHide($Gui, "", $hRichEdit)
	EndIf

WEnd
OffTopic:
И просьба - когды вылаживаете свой пример, указывайте все "#include<>", а то что-бы запустить Ваш скрипт приходится искать из какой библиотеки функции
 
Верх