Что нового

[Окна, Диалоги] Вывод данных переменной в окно

lazarxxx

Новичок
Сообщения
53
Репутация
2
Доброго всем времени!
skrina.png

подскажите плиз, как мне вывести данные допустим переменной $s, в окно!
надо чтоб при изменении переменой её данные постоянно менялись новые оставались вверху, а старые уходили вниз! просмотрел сайт не могу найти подходящего.

допустим такое окно
Код:
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form2 = GUICreate("вывод переменной $s", 274, 125, 591, 591)
$Edit1 = GUICtrlCreateEdit("", 48, 16, 185, 89)
GUICtrlSetData(-1, "Edit1")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1

;надо чтоб, к примеру, оно в этом окне постоянно выводило
;$s=$s+1 (или текст)
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
	Exit
       
	EndSwitch
WEnd

Заранее благодарен!
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
Автор
L

lazarxxx

Новичок
Сообщения
53
Репутация
2
Да то что нужно! и с функцией я полностью разобрался, как работает! ещё бы ограничение сделать, чтоб сохранённых данных, было допустим 50, а то за сутки она столько понапишет!
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
Автор
L

lazarxxx

Новичок
Сообщения
53
Репутация
2
[Элементы GUI] Re: [Окна, Диалоги] Вывод данных переменной в окно

Доброго всем времени!
Хотел бы продолжить тему так как появился дополнительный вопрос!
С помощью того что здесь разобрали можно выводить любое количество сообщений, либо по одному, после чего стираем всё в ноль! А как сделать чтоб последние (допустим 5 сообщений) не стирались, а стирались ранее выведенные.
Заранее очень благодарен!!!
 

ivsatel

Продвинутый
Сообщения
319
Репутация
84
Примерно так. Сообщения заносятся в массив, количество сообщений отражается в комбо слева, в комбо в права количество не удаляемых сообщений.
Код:
#include <Array.au3>

#AutoIt3Wrapper_Run_Tidy=y

Global $iCount, $aArrayMess[1]

AdlibRegister('_MyFunc', 1000)
GUICreate('вывод переменной $iCount', 274, 125)
GUICtrlCreateLabel('Количество сообщений', 10, 10, 120, 20)
GUICtrlCreateLabel('Не удалять последние', 150, 10, 150, 20)
$Combo_1 = GUICtrlCreateCombo("", 10, 36, 100, 20)
$Combo_2 = GUICtrlCreateCombo("", 150, 36, 100, 20)
GUICtrlSetData($Combo_2, '1|2|3|4|5')
$Button_1 = GUICtrlCreateButton("Показ сообщений", 10, 70)
$Button_2 = GUICtrlCreateButton("Удаление сообщений", 150, 70)
GUISetState()

While 1
	Switch GUIGetMsg()
		Case -3
			Exit
		Case $Button_1
			AdlibUnRegister("_MyFunc")
			_ArrayDisplay($aArrayMess)
			AdlibRegister('_MyFunc', 1000)
		Case $Button_2
			AdlibUnRegister("_MyFunc")
			Local $Sum = GUICtrlRead($Combo_2)
			For $i = 1 To UBound($aArrayMess) - ($Sum + 1)
				_ArrayDelete($aArrayMess, $i)
				Sleep(100)
			Next
			$iCount = UBound($aArrayMess) - 1
			GUICtrlSetData($Combo_1, '')
			For $i = 1 To UBound($aArrayMess) - 1
				GUICtrlSetData($Combo_1, $i)
			Next
			AdlibRegister('_MyFunc', 1000)
	EndSwitch
WEnd

Func _MyFunc()
	$iCount += 1
	Local $Mess = Random(65, 90, 1)
	Local $namb = $iCount
	ReDim $aArrayMess[$namb + 1]
	$aArrayMess[$namb] = $Mess
	GUICtrlSetData($Combo_1, UBound($aArrayMess) - 1)
EndFunc   ;==>_MyFunc
 
Автор
L

lazarxxx

Новичок
Сообщения
53
Репутация
2
[Элементы GUI] Re: [Окна, Диалоги] Вывод данных переменной в окно

Доброго времени!
Долго разбирался над вашей программкой так и не смог понять толком ничего !
Скорей всего я неправильно задал вопрос чего собственно я хочу получить!
Попробую корректно обьяснить.
Такая программа
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Global $v=0
GUICreate('вывод переменной $v',250, 140,800,100,1,$WS_EX_TOPMOST)
$nEdit = GUICtrlCreateEdit('', 3, 3, 240,105)
GUISetState()

while 1
  Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
  EndSwitch
   Sleep (1000)
  $v=$v+1
v()
  WEnd
  
Func v()
  GUICtrlSetData($nEdit, $v & @CRLF,-1)

EndFunc   ;==>_MyFunc

Всё что я от неё хочу чтоб допустим после вывода цифры 10 стиралась цифра 1 потом вывод 11 стиралась 2 и.т.д. Я должен видеть постоянно последние 10 данных переменной $v будь она числовой или другими данными.
Заранее благодарен!
 

InnI

AutoIT Гуру
Сообщения
4,971
Репутация
1,459
lazarxxx [?]
после вывода цифры 10 стиралась цифра 1 потом вывод 11 стиралась 2 и.т.д.
Код:
Func v()
  GUICtrlSetData($nEdit, $v & @CRLF, 1)
  $Count = ControlCommand($gui, "", $nEdit, "GetLineCount")
  If $Count = 10+1+1 Then ; 10 строк + пустая последняя + первая удаляемая
    $Text = ""
    For $i = 2 To $Count - 1 ; со второй строки до предпоследней
      $Text &= ControlCommand($gui, "", $nEdit, "GetLine", $i) & @CRLF
    Next
    GUICtrlSetData($nEdit, $Text)
    GUICtrlSendMsg($nEdit, 0x00B7, 0, 0) ; $EM_SCROLLCARET
  EndIf
EndFunc   ;==>_MyFunc
 
Автор
L

lazarxxx

Новичок
Сообщения
53
Репутация
2
вот то что получилось!
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Global $v=0
GUICreate('вывод переменной $v',250, 300,800,100,1,$WS_EX_TOPMOST)
$nEdit = GUICtrlCreateEdit('', 3, 3, 240,290)
GUISetState()

while 1
  Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
  EndSwitch
   Sleep (1000)
  $v=$v+1
v()
  WEnd
  
Func v()
  GUICtrlSetData($nEdit, $v & @CRLF, 1)
  $Count = ControlCommand($gui, "", $nEdit, "GetLineCount")
  If $Count = 10+1+1 Then ; 10 строк + пустая последняя + первая удаляемая
    $Text = ""
    For $i = 2 To $Count - 1 ; со второй строки до предпоследней
      $Text &= ControlCommand($gui, "", $nEdit, "GetLine", $i) & @CRLF
    Next
    GUICtrlSetData($nEdit, $Text)
    GUICtrlSendMsg($nEdit, 0x00B7, 0, 0) ; $EM_SCROLLCARET
  EndIf
EndFunc   ;==>_MyFunc

ошибка в 20 строке!
 
Автор
L

lazarxxx

Новичок
Сообщения
53
Репутация
2
[Элементы GUI] Re: [Окна, Диалоги] Вывод данных переменной в окно

Благодарю от души!!! Два дня голову над этим ломал!


Добавлено:
Сообщение автоматически объединено:

И последний вопрос (если несложно)
Как убрать мигающую (не знаю как она правильно называется) слеш или палочка вертикальная, чтоб глаза не мозолила!
Заранее ещё рас благодарен!
 
Верх