Что нового

[Напоминалка] Смена 3/2 (Для тех кто работает по сменно)

Andrey14

Новичок
Сообщения
3
Репутация
2
AutoIt: 3.3.8.1
Версия: 3.0

Категория: Полезная информация (Напоминалка)

Описание: Программа для тех кто работает (у кого работают), по скользящему графику 3/2.

Код/Пример:
Код:
#NoTrayIcon
#include <Array.au3>
#Include <date.au3>
#include <file.au3>
Dim $ArrayS[6]=[5, "первая с", "вторая с", "третья с", "первый выходной после", "второй выходной после"]
Dim $ArrayT[4]=[3, "08:00", "00:00", "16:00"]
Dim $ArrayD[6]=[5, "2012/08/24", "2012/08/15", "2012/08/21", "2012/08/27", "2012/08/18"] ;~ Дата первой с 08:00 для смен: А; Б; В; Г; Д;
Dim $ArrayFIO[1]=[0]
Dim $data= _NowCalcDate(), $tim=" 00:00:00", $FIO="", $HOUR=int(@HOUR), $W=0
$Form1 = GUICreate("График 3/2 на: ", 615, 215, 192, 124)
$Group1 = GUICtrlCreateGroup(_DateTimeFormat ($data,1), 10, 7, 240, 175, 768)
$Group2 = GUICtrlCreateGroup( "Ф. И. О.", 263, 7, 160, 175, 768)
$MonthCal1 = GUICtrlCreateMonthCal($data, 430, 18, 170, 164)
For $x=1 to 5
	$W=$W+30
	Assign("Label" & $x, GUICtrlCreateLabel("", 18, $W, 225, 17,0x1000))
	Assign("Combo" & $x, GUICtrlCreateCombo("", 270, $W, 145, 25, 66))
Next
GUISetState(@SW_SHOW)
If Not _FileReadToArray("smene3.data",$ArrayFIO) Then Dim $ArrayFIO[6]=[5, "Салыга А. Е.", "Забродский В. Н.", "Бушила П. Д.", "Турчак А. Г.", "Акчурин И. И."]
For $x=1 to $ArrayFIO[0]
	if StringInStr ( $FIO, $ArrayFIO[$x])=0 Then $FIO=$FIO & $ArrayFIO[$x] & "|"
Next
For $x=1 to 5
	GUICtrlSetData(Eval("Combo" & $x),$FIO,$ArrayFIO[$x])
Next
_Calc()
While 1
	$nMsg = GUIGetMsg()
	$data=guiCtrlread($MonthCal1)
	Switch $nMsg
		Case -3
			_Combo()
			Exit
		Case $MonthCal1
			GUICtrlSetData($Group1,_DateTimeFormat($data,1))
			_Calc()
		EndSwitch
WEnd
Func _Calc()
	Dim $ArrayC[6]=[5,0x7B7B7B,0x7B7B7B,0x7B7B7B,0x7B7B7B,0x7B7B7B]
	For $d=1 To 5
		$p=0
		Do
			$z=_DateDiff( 'd',_DateAdd( 'd',$p,$ArrayD[$d] & $tim), $data & $tim)/15
			$p=$p+1
		Until IsInt($z)
		If $p<=5 Then dim $t=1, $p2=$p
		If $p<=10 AND $p>5 Then  dim $t=2, $p2=$p-5
		If $p<=15 AND $p>10 Then dim $t=3, $p2=$p-10
		GUICtrlSetData(Eval("Label" & $d), "У смены " & Chr (191+$d) & " " & $ArrayS[$p2] & " " & $ArrayT[$t])
		if $p2<=3 AND $t==1 AND $HOUR>=8 Then $ArrayC[$d]=0xFF0000
		if $p2<=3 AND $t==1 AND $HOUR<8 Then $ArrayC[$d]=0x333399
		if $p2<=3 AND $t==1 AND $HOUR>=16 Then $ArrayC[$d]=0x006600
		if $p2<=3 AND $t==2 AND $HOUR<8 Then $ArrayC[$d]=0xFF0000
		if $p2<=3 AND $t==2 AND $HOUR>=8 Then $ArrayC[$d]=0x006600
		if $p2<=3 AND $t==2 AND $HOUR>=16 Then $ArrayC[$d]=0x333399
		if $p2<=3 AND $t==3 AND $HOUR>=8 Then $ArrayC[$d]=0x333399
		if $p2<=3 AND $t==3 AND $HOUR>=16 Then $ArrayC[$d]=0xFF0000
		if $p2<=3 AND $t==3 AND $HOUR<8 Then $ArrayC[$d]=0x006600
	Next
	_ColorSet($ArrayC)
EndFunc
Func _Combo()
	For $b=1 to 5
		$x=_ArraySearch ($ArrayFIO,GUICtrlRead(Eval("Combo" & $b)))
		if $x<>-1 Then _ArrayDelete($ArrayFIO,$x)
	Next
	For $b=1 to 5
		_ArrayInsert ($ArrayFIO,$b,GUICtrlRead(Eval("Combo" & $b)))
	Next
	$ArrayFIO[0]=UBound($ArrayFIO)-1
	_FileWriteFromArray("smene3.data",$ArrayFIO,1)
EndFunc
Func _ColorSet($ArrayC)
	For $x=1 to 5
		GUICtrlSetColor(Eval("Label" & $x),$ArrayC[$x])
		GUICtrlSetColor(Eval("Combo" & $x),$ArrayC[$x])
	Next
EndFunc

Файл: Smena3.au3

Снимок:


История версий:
Первая публичная

Источник: autoit-script.ru
Автор(ы): Andrey14
 
Верх