Что нового

[Элементы GUI] Данные из форм в Calc

Godygadu

Новичок
Сообщения
47
Репутация
0
Доброго всем. Сделал я небольшую утилиту для вноса данных из форм в Calc, но есть одна проблема.
Данные вносятся только в те ячейки, которые я указал, а мне надо, что бы они вносились каждый раз ниже предыдущих, то есть в новые ячейки. Как можно это реализовать? Есть идеи? Моя корявая программка прилагается))))
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
Godygadu
Что-то не видно кода

UDF отсюда
http://www.autoitscript.com/forum/topic/151530-ooolibo-calc-udf/
используется?

В любом случе должно быть элементарно - в зависимости от ситуации или в цикле увеличивать индексы ячеек для записи, или читать все ячейки, определять последние заполненные и писать в незаполненные
 
Автор
G

Godygadu

Новичок
Сообщения
47
Репутация
0
Да. UDF этот.


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

Код:
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <OOoCalc.au3>
#include <DateTimeConstants.au3>
#include <ListBoxConstants.au3>
#include <StaticConstants.au3>


Opt("WinTitleMatchMode", 2)



$sOCalck = _OOoCalcBookOpen(@ScriptDir & "\1.ods")


WinWait("1")
WinSetState("1", "", @SW_MAXIMIZE)
WinActivate("1", "")

$Gui = GUICreate("Передача в реестр", 200, 236, 622, 345)
GUISetBkColor(0xB4B4B4)

$Date = GUICtrlCreateDate("", 24, 0, 129, 21, $DTS_SHORTDATEFORMAT)

$Chas = GUICtrlCreateCombo("", 24, 30, 57, 25, $CBS_DROPDOWNLIST + $WS_VSCROLL)
GUICtrlSetData(-1, "00 час |01 час |02 час |03 час |04 час |05 час |06 час |07 час |08 час |09 час |10 час |11 час |12 час |13 час |14 час |15 час |16 час |17 час |18 час |19 час |20 час |21 час |22 час |23 час |", "00 час ")
GUICtrlSendMsg(-1, $CB_SETDROPPEDWIDTH, 70, 0) ; Ширина выпадающего списка

$Min = GUICtrlCreateCombo("", 96, 30, 57, 25, $CBS_DROPDOWNLIST + $WS_VSCROLL)
GUICtrlSetData(-1, "00 мин |01 мин |02 мин |03 мин |04 мин |05 мин |06 мин |07 мин |08 мин |09 мин |10 мин |11 мин |12 мин |13 мин |14 мин |15 мин |16 мин |17 мин |18 мин |19 мин |20 мин |21 мин |22 мин |23 мин |24 мин |25 мин |26 мин |27 мин |28 мин |29 мин |30 мин |31 мин |32 мин |33 мин |34 мин |35 мин |36 мин |37 мин |38 мин |39 мин |40 мин |41 мин |42 мин |43 мин |44 мин |45 мин |46 мин |47 мин |48 мин |49 мин |50 мин |51 мин |52 мин |53 мин |54 мин |55 мин |56 мин |57 мин |58 мин |59 мин |", "00 мин ")
GUICtrlSendMsg(-1, $CB_SETDROPPEDWIDTH, 70, 0) ; Ширина выпадающего списка

$Nomer = GUICtrlCreateInput("г\н    RUS", 24, 65, 129, 21)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")

$Ulica = GUICtrlCreateCombo("Улица", 24, 96, 129, 25, $CBS_DROPDOWNLIST + $WS_VSCROLL)
GUICtrlSetData(-1, " Красная | Крупской 50 | Крупской 60 | Дятьковская, пер.Дятьковский | Горького | Щорса 67 | Бувальцева | Ленина | Фрунзе | Комсомольская |", "")
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
GUICtrlSendMsg(-1, $CB_SETDROPPEDWIDTH, 190, 0) ; Ширина выпадающего списка

$Rayon = GUICtrlCreateInput("Район ", 24, 136, 129, 21)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")

$nIsh = GUICtrlCreateInput("ИСХ.ДОК. № ", 24, 160, 129, 21)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")

$Button = GUICtrlCreateButton("Внести", 24, 195, 129, 33)
GUICtrlSetBkColor(-1, 0x008080)


GUISetState(@SW_SHOW)


While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button

			$iNomer = GUICtrlRead($Nomer)
			$iChas = GUICtrlRead($Chas)
			$iMin = GUICtrlRead($Min)
			$iUlica = GUICtrlRead($Ulica)
			$iRayon = GUICtrlRead($Rayon)
			$iDate = GUICtrlRead($Date)
			$inIsh = GUICtrlRead($nIsh)
			$CalcW = _OOoCalcWriteCell($sOCalck, $iDate, 0, 0)
			_OOoCalcWriteCell($sOCalck, 'В ' & $iChas & $iMin & 'Зафиксирован факт нарушения ПДД, совершенного водителем автомашины ' & $iNomer & ' , имевшее место на ул.' & $iUlica & '  г. Кореновска.' & $iRayon, "B1")
			_OOoCalcWriteCell($sOCalck, $inIsh & $iDate, "C1")
	EndSwitch
WEnd



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

Для работы создать любой документ в папке со скриптом - 1.ods. Код корявый я знаю. Но я учусь. :whistle: :IL_AutoIt_1:
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
Godygadu

Можно так:
Код:
#include <OOoCalc.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <DateTimeConstants.au3>
#include <ListBoxConstants.au3>
#include <StaticConstants.au3>

Opt("WinTitleMatchMode", 2)
Global $Date, $Chas, $Min, $Nomer, $Ulica, $Rayon, $nIsh, $Button, $sOCalck, $iN

If Not IsObj($sOCalck) Then $sOCalck = _OOoCalcBookOpen(@ScriptDir & "\1.ods")
$aOCalck = _OOoCalcReadSheetToArray($sOCalck)
$iN = UBound($aOCalck)
If $iN = 1 Then $iN = 0

;~ WinWait("1.ods")
;~ WinSetState("1.ods", "", @SW_MAXIMIZE)
;~ WinActivate("1.ods", "")

$Gui = GUICreate("Передача в реестр", 200, 236, 622, 345)
GUISetBkColor(0xB4B4B4)
$Date = GUICtrlCreateDate("", 24, 0, 129, 21, $DTS_SHORTDATEFORMAT)
$Chas = GUICtrlCreateCombo("", 24, 30, 57, 25, $CBS_DROPDOWNLIST + $WS_VSCROLL)
GUICtrlSetData(-1, "00 час |01 час |02 час |03 час |04 час |05 час |06 час |07 час " & _
		"|08 час |09 час |10 час |11 час |12 час |13 час |14 час |15 час |16 час |17 час |18 час |19 час |20 час |21 час |22 час |23 час |", "00 час ")
GUICtrlSendMsg(-1, $CB_SETDROPPEDWIDTH, 70, 0) ; Ширина выпадающего списка
$Min = GUICtrlCreateCombo("", 96, 30, 57, 25, $CBS_DROPDOWNLIST + $WS_VSCROLL)
GUICtrlSetData(-1, "00 мин |01 мин |02 мин |03 мин |04 мин |05 мин |06 мин |07 мин|" & _
		"08 мин |09 мин |10 мин |11 мин |12 мин |13 мин |14 мин |15 мин |16 мин |17 мин |18 мин |" & _
		"19 мин |20 мин |21 мин |22 мин |23 мин |24 мин |25 мин |26 мин |27 мин |28 мин |29 мин |30 мин |" & _
		"31 мин |32 мин |33 мин |34 мин |35 мин |36 мин |37 мин |38 мин |39 мин |40 мин |41 мин |42 мин " & _
		"|43 мин |44 мин |45 мин |46 мин |47 мин |48 мин |49 мин |50 мин |51 мин |52 мин |53 мин |54 мин" & _
		"|55 мин |56 мин |57 мин |58 мин |59 мин |", "00 мин ")
GUICtrlSendMsg(-1, $CB_SETDROPPEDWIDTH, 70, 0) ; Ширина выпадающего списка

$Nomer = GUICtrlCreateInput("г\н    RUS", 24, 65, 129, 21)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Ulica = GUICtrlCreateCombo("Улица", 24, 96, 129, 25, $CBS_DROPDOWNLIST + $WS_VSCROLL)
GUICtrlSetData(-1, " Красная | Крупской 50 | Крупской 60 | Дятьковская, пер.Дятьковский | Горького | Щорса 67 | Бувальцева | Ленина | Фрунзе | Комсомольская |", "")
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
GUICtrlSendMsg(-1, $CB_SETDROPPEDWIDTH, 190, 0) ; Ширина выпадающего списка
$Rayon = GUICtrlCreateInput("Район ", 24, 136, 129, 21)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$nIsh = GUICtrlCreateInput("ИСХ.ДОК. № ", 24, 160, 129, 21)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Button = GUICtrlCreateButton("Внести", 24, 195, 129, 33)
GUICtrlSetBkColor(-1, 0x008080)
GUISetState(@SW_SHOW)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button
			_Write()
	EndSwitch
WEnd

Func _Write()
	If Not IsObj($sOCalck) Then Return SetError(1, 0, 0)

	$iN += 1

	Local $iNomer = GUICtrlRead($Nomer)
	Local $iChas = GUICtrlRead($Chas)
	Local $iMin = GUICtrlRead($Min)
	Local $iUlica = GUICtrlRead($Ulica)
	Local $iRayon = GUICtrlRead($Rayon)
	Local $iDate = GUICtrlRead($Date)
	Local $inIsh = GUICtrlRead($nIsh)

	_OOoCalcWriteCell($sOCalck, $iDate, "A" & $iN)

	_OOoCalcWriteCell($sOCalck, 'В ' & $iChas & $iMin & 'Зафиксирован факт нарушения ПДД, совершенного водителем автомашины ' & _
			$iNomer & ' , имевшее место на ул.' & $iUlica & '  г. Кореновска.' & $iRayon, "B" & $iN)
	_OOoCalcWriteCell($sOCalck, $inIsh & $iDate, "C" & $iN)

EndFunc   ;==>_Write

После открытия 1.ods читаем лист в массив, определяем, сколько строк заполнено, и устанавливаем переменную-счетчик. Потом при записи каждой новой строки прибавляем к счетчику 1.
 
Автор
G

Godygadu

Новичок
Сообщения
47
Репутация
0
Попробую ваше предложение. Спасибо за помощь. :beer:


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

Код:
#include <OOoCalc.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <DateTimeConstants.au3>
#include <ListBoxConstants.au3>
#include <StaticConstants.au3>






Opt("WinTitleMatchMode", 2)
Global $Date, $Chas, $Min, $Nomer, $Ulica, $Rayon, $nIsh, $Button, $sOCalck, $iN

If Not IsObj($sOCalck) Then $sOCalck = _OOoCalcBookOpen(@ScriptDir & "\Реестр тест.ods")
$aOCalck = _OOoCalcReadSheetToArray($sOCalck)
$iN = UBound($aOCalck)
If $iN = 1 Then $iN = 0

$Gui = GUICreate("Передача в реестр", 200, 236, 622, 345)
GUISetBkColor(0xB4B4B4)

$Date = GUICtrlCreateDate("", 24, 0, 129, 21, $DTS_SHORTDATEFORMAT)

$Chas = GUICtrlCreateCombo("", 24, 30, 57, 25, $CBS_DROPDOWNLIST + $WS_VSCROLL)
GUICtrlSetData(-1, "00|01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|", "00")
GUICtrlSendMsg(-1, $CB_SETDROPPEDWIDTH, 70, 0) ; Ширина выпадающего списка

$Min = GUICtrlCreateCombo("", 96, 30, 57, 25, $CBS_DROPDOWNLIST + $WS_VSCROLL)
GUICtrlSetData(-1, "00|01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|", "00")
GUICtrlSendMsg(-1, $CB_SETDROPPEDWIDTH, 70, 0) ; Ширина выпадающего списка

$Nomer = GUICtrlCreateInput("RUS", 24, 65, 129, 21)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")

$Ulica = GUICtrlCreateCombo("Улица", 24, 96, 129, 25, $CBS_DROPDOWNLIST + $WS_VSCROLL)
GUICtrlSetData(-1, " Красная | Крупской 50 | Крупской 60 | Дятьковская, пер.Дятьковский | Горького | Щорса 67 | Бувальцева | Ленина | Фрунзе | Комсомольская |", "")
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
GUICtrlSendMsg(-1, $CB_SETDROPPEDWIDTH, 190, 0) ; Ширина выпадающего списка

$Rayon = GUICtrlCreateInput("", 24, 136, 129, 21)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")

$nIsh = GUICtrlCreateInput(" ОТ", 24, 160, 129, 21)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")

$Button = GUICtrlCreateButton("Внести", 24, 195, 129, 33)
GUICtrlSetBkColor(-1, 0x008080)


GUISetState(@SW_SHOW)


While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button
			_Write()

	EndSwitch
WEnd

Func _Write()
	If Not IsObj($sOCalck) Then Return SetError(1, 0, 0)

	$iN += 1

	Local $iNomer = GUICtrlRead($Nomer)
	Local $iChas = GUICtrlRead($Chas)
	Local $iMin = GUICtrlRead($Min)
	Local $iUlica = GUICtrlRead($Ulica)
	Local $iRayon = GUICtrlRead($Rayon)
	Local $iDate = GUICtrlRead($Date)
	Local $inIsh = GUICtrlRead($nIsh)

	_OOoCalcWriteCell($sOCalck, $iDate, "B" & $iN)
	_OOoCalcWriteCell($sOCalck, $iChas & ":" & $iMin, "C" & $iN)
	_OOoCalcWriteCell($sOCalck, "Зафиксирован факт нарушения ПДД, совершенного водителем транспортного средства.", "D" & $iN)
	_OOoCalcWriteCell($sOCalck, $iNomer, "E" & $iN)
	_OOoCalcWriteCell($sOCalck, $iUlica, "F" & $iN)
	_OOoCalcWriteCell($sOCalck, $iRayon, "G" & $iN)
	_OOoCalcWriteCell($sOCalck, $inIsh & " " & $iDate, "H" & $iN)


EndFunc   ;==>_Write

Ваш пример работает отлично. Но я должен его подвести под определенную таблицу. Попробовал по вашему примеру, а оно не работает. Поможете? Таблица во вложении.


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

Обнаружился неприятный баг. После вставки данных, если я их стираю, то скрипт вставляет данные не вместо удаленных, а ниже. Если вставить 10 строк и удалить их, то скрипт оставляет десять пустых строк и продолжает с 11 даже если лист пуст. :stars:
 

ivsatel

Продвинутый
Сообщения
319
Репутация
84
Godygadu
Godygadu сказал(а):
Обнаружился неприятный баг.
Это не баг, а логика программы.
Вы можете устроить проверку предыдущей ячейки на "пустоту" перед _OOoCalcWriteCell
Или вывести счетчик $iN в GUI где вы сможете задавать строку в ручную.
 
Автор
G

Godygadu

Новичок
Сообщения
47
Репутация
0
Мне бы пример наглядный. Я же только изучаю. :whistle:
 

ivsatel

Продвинутый
Сообщения
319
Репутация
84
Godygadu
Godygadu сказал(а):
Мне бы пример наглядный.
Код:
#include <OOoCalc.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <DateTimeConstants.au3>
#include <ListBoxConstants.au3>
#include <StaticConstants.au3>

Opt("WinTitleMatchMode", 2)
Global $Date, $Chas, $Min, $Nomer, $Ulica, $Rayon, $nIsh, $Button, $sOCalck, $iN, $Read_Cell

If Not IsObj($sOCalck) Then $sOCalck = _OOoCalcBookOpen(@ScriptDir & "\Реестр тест.ods")
$aOCalck = _OOoCalcReadSheetToArray($sOCalck)
$iN = UBound($aOCalck)
If $iN = 1 Then $iN = 0

$Gui = GUICreate("Передача в реестр", 200, 236, 622, 345)
GUISetBkColor(0xB4B4B4)

$Date = GUICtrlCreateDate("", 24, 0, 129, 21, $DTS_SHORTDATEFORMAT)

$Chas = GUICtrlCreateCombo("", 24, 30, 57, 25, $CBS_DROPDOWNLIST + $WS_VSCROLL)
GUICtrlSetData(-1, "00|01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|", "00")
GUICtrlSendMsg(-1, $CB_SETDROPPEDWIDTH, 70, 0) ; Ширина выпадающего списка

$Min = GUICtrlCreateCombo("", 96, 30, 57, 25, $CBS_DROPDOWNLIST + $WS_VSCROLL)
GUICtrlSetData(-1, "00|01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|", "00")
GUICtrlSendMsg(-1, $CB_SETDROPPEDWIDTH, 70, 0) ; Ширина выпадающего списка

$Nomer = GUICtrlCreateInput("RUS", 24, 65, 129, 21)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")

$Ulica = GUICtrlCreateCombo("Улица", 24, 96, 129, 25, $CBS_DROPDOWNLIST + $WS_VSCROLL)
GUICtrlSetData(-1, " Красная | Крупской 50 | Крупской 60 | Дятьковская, пер.Дятьковский | Горького | Щорса 67 | Бувальцева | Ленина | Фрунзе | Комсомольская |", "")
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
GUICtrlSendMsg(-1, $CB_SETDROPPEDWIDTH, 190, 0) ; Ширина выпадающего списка

$Rayon = GUICtrlCreateInput("", 24, 136, 129, 21)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")

$nIsh = GUICtrlCreateInput(" ОТ", 24, 160, 129, 21)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")

$Button = GUICtrlCreateButton("Внести", 24, 195, 129, 33)
GUICtrlSetBkColor(-1, 0x008080)

GUISetState(@SW_SHOW)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button
			_Write()
	EndSwitch
WEnd

Func _Write()
	If Not IsObj($sOCalck) Then Return SetError(1, 0, 0)

	$iN = 1

	Local $iNomer = GUICtrlRead($Nomer)
	Local $iChas = GUICtrlRead($Chas)
	Local $iMin = GUICtrlRead($Min)
	Local $iUlica = GUICtrlRead($Ulica)
	Local $iRayon = GUICtrlRead($Rayon)
	Local $iDate = GUICtrlRead($Date)
	Local $inIsh = GUICtrlRead($nIsh)

	While 1
		$Read_Cell = _OOoCalcReadCell($sOCalck, "B" & $iN, -1, -1)
		ConsoleWrite($Read_Cell&@LF)
		If $Read_Cell <> '' Then $iN += 1
		If $Read_Cell == '' Then ExitLoop
	WEnd

	_OOoCalcWriteCell($sOCalck, $iDate, "B" & $iN)
	_OOoCalcWriteCell($sOCalck, $iChas & ":" & $iMin, "C" & $iN)
	_OOoCalcWriteCell($sOCalck, "Зафиксирован факт нарушения ПДД, совершенного водителем транспортного средства.", "D" & $iN)
	_OOoCalcWriteCell($sOCalck, $iNomer, "E" & $iN)
	_OOoCalcWriteCell($sOCalck, $iUlica, "F" & $iN)
	_OOoCalcWriteCell($sOCalck, $iRayon, "G" & $iN)
	_OOoCalcWriteCell($sOCalck, $inIsh & " " & $iDate, "H" & $iN)

EndFunc   ;==>_Write
Думаю не самое удачное решение, но рабочее)
Каждый раз при вызове функции записи, счетчик обновляется и начинает проверку ячеек с первой, до встречи пустой ячейки.
Думаю может работать медленно при больших базах...
 
Автор
G

Godygadu

Новичок
Сообщения
47
Репутация
0
Спасибо. Работает. Проверенно, что при наличии 451 записи задержка равна менее 1 секунды. Все отлично. Но, если есть еще решения, то прошу выкладывать. Я таким образом буду обучаться :smile:
Только, прошу, писать комментарии в коде. Это очень помогает при изучении.
 

ivsatel

Продвинутый
Сообщения
319
Репутация
84
Godygadu
Тут решение чтения от последней записи:
Код:
#include <OOoCalc.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <DateTimeConstants.au3>
#include <ListBoxConstants.au3>
#include <StaticConstants.au3>

Opt("WinTitleMatchMode", 2)
Global $Date, $Chas, $Min, $Nomer, $Ulica, $Rayon, $nIsh, $Button, $sOCalck, $iN, $Read_Cell

$sOCalck = _OOoCalcBookAttach("Реестр тест.ods")

If $_OOoCalcStatus_NoMatch Then
	$sOCalck = _OOoCalcBookOpen(@ScriptDir & "\Реестр тест.ods")
EndIf

$aOCalck = _OOoCalcReadSheetToArray($sOCalck)

$iN = UBound($aOCalck)

If $iN = 1 Then $iN = 0

$Gui = GUICreate("Передача в реестр", 200, 236, 622, 345)
GUISetBkColor(0xB4B4B4)

$Date = GUICtrlCreateDate("", 24, 0, 129, 21, $DTS_SHORTDATEFORMAT)

$Chas = GUICtrlCreateCombo("", 24, 30, 57, 25, $CBS_DROPDOWNLIST + $WS_VSCROLL)
GUICtrlSetData(-1, "00|01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|", "00")
GUICtrlSendMsg(-1, $CB_SETDROPPEDWIDTH, 70, 0) ; Ширина выпадающего списка

$Min = GUICtrlCreateCombo("", 96, 30, 57, 25, $CBS_DROPDOWNLIST + $WS_VSCROLL)
GUICtrlSetData(-1, "00|01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|", "00")
GUICtrlSendMsg(-1, $CB_SETDROPPEDWIDTH, 70, 0) ; Ширина выпадающего списка

$Nomer = GUICtrlCreateInput("RUS", 24, 65, 129, 21)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")

$Ulica = GUICtrlCreateCombo("Улица", 24, 96, 129, 25, $CBS_DROPDOWNLIST + $WS_VSCROLL)
GUICtrlSetData(-1, " Красная | Крупской 50 | Крупской 60 | Дятьковская, пер.Дятьковский | Горького | Щорса 67 | Бувальцева | Ленина | Фрунзе | Комсомольская |", "")
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
GUICtrlSendMsg(-1, $CB_SETDROPPEDWIDTH, 190, 0) ; Ширина выпадающего списка

$Rayon = GUICtrlCreateInput("", 24, 136, 129, 21)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")

$nIsh = GUICtrlCreateInput(" ОТ", 24, 160, 129, 21)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")

$Button = GUICtrlCreateButton("Внести", 24, 195, 129, 33)
GUICtrlSetBkColor(-1, 0x008080)

GUISetState(@SW_SHOW)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button
			_Write()
	EndSwitch
WEnd

Func _Write()
	If Not IsObj($sOCalck) Then Return SetError(1, 0, 0)

	$iN += 1

	Local $iNomer = GUICtrlRead($Nomer)
	Local $iChas = GUICtrlRead($Chas)
	Local $iMin = GUICtrlRead($Min)
	Local $iUlica = GUICtrlRead($Ulica)
	Local $iRayon = GUICtrlRead($Rayon)
	Local $iDate = GUICtrlRead($Date)
	Local $inIsh = GUICtrlRead($nIsh)

	While 1
		$Read_Cell = _OOoCalcReadCell($sOCalck, "B" & ($iN - 1), -1, -1)
		If $Read_Cell == '' Then $iN -= 1
		If $Read_Cell <> '' Then ExitLoop
	WEnd

	_OOoCalcWriteCell($sOCalck, $iDate, "B" & $iN)
	_OOoCalcWriteCell($sOCalck, $iChas & ":" & $iMin, "C" & $iN)
	_OOoCalcWriteCell($sOCalck, "Зафиксирован факт нарушения ПДД, совершенного водителем транспортного средства.", "D" & $iN)
	_OOoCalcWriteCell($sOCalck, $iNomer, "E" & $iN)
	_OOoCalcWriteCell($sOCalck, $iUlica, "F" & $iN)
	_OOoCalcWriteCell($sOCalck, $iRayon, "G" & $iN)
	_OOoCalcWriteCell($sOCalck, $inIsh & " " & $iDate, "H" & $iN)
	_OOoCalcBookSave($sOCalck)

EndFunc   ;==>_Wri
 
Верх