Изменения

Перейти к навигации Перейти к поиску

Шаблон:Поле прокрутки

8748 байт добавлено, 16:40, 21 мая 2019
Новая страница: «<noinclude> ==Описание== Этот шаблон можно использовать для отображения больших текстов в фикс…»
<noinclude>
==Описание==
Этот шаблон можно использовать для отображения больших текстов в фиксированном окне. Если не указывать ширину и высоту, то они будут максимальными. В случае, если указанная ширина меньше окна вывода, то блок будет выравнен по середине.

Для использования шаблона добавьте в текст:
<pre>{{Поле прокрутки
| ширина =
| высота =
| заголовок =
| файл =
| текст =
}}</pre>

[[Категория: Шаблоны]]

==Пример использования==
<pre>{{Поле прокрутки
| ширина = 90%
| высота = 200px
| заголовок = Пример скрипта LibreOffice VBA
| текст = <syntaxhighlight lang=basic>REM ***** LibreOffice BASIC for Calc 4.x *****
'
' Автор: Павел Малахов, 24pm@mail.ru
'
' Этот скрипт использует стили ячеек, которые желательно создать заранее:
' pm-Время - ячейки со временем
' pm-Заголовок - заголовок колонки в таблице
' pm-Заголовок общий - заголовок отчёта
' pm-Итого - итоговые ячейки
' pm-Сотрудник - заголовок отчёта по сотруднику
'
'
' Предварительные требования к листу с исходными данными:
' - Данные берутся из 1-го листа, со 2-й строки (первая содержит название столбцов и не учитывается)
' - Строки должны быть отсортированны по Подразделению (столбец J) и по вторичному ключу Фамилия (столбец B)
'
'
' Заметки:
' - Скрипт работает медленнее, если включен вид "Разметка страницы". Для ускорения нужно переключить в вид "Обычный"
'
' История изменений:2014.09.04 - первая полнофункциональная версия
' 2014.12.17 - Исправлено: Если был зарегистрирован только вход, то данные следующего человека учитывались в текущем. Добавлена переменная tab_person
'

'==== Общие для всех модулей процедуры и функции ====

'==== Константы ====

Const dayStatusHoliday = 0
Const dayStatusShort = 1
Const dayStatusWork = 2

'Определение времени начала и окончания рабочего дня в формате Часы:Минуты:Секунды
Const timeWorkStart As Date = "08:00:00"
Const timeWorkEnd As Date = "17:15:00"
Const timeWorkEndShort As Date = "15:00:00"
Const timeZero As Date = "00:00:01" 'если полный ноль, то это минус сутки
Const timeWorkOver As Date = "00:15:00" 'переработка < 15 мин не учитывается


' Преобразует дату в строку
' cDate() - не подходит, т.к. возвращает строку в формате "ММ.ДД.ГГГГ ЧЧ:ММ:СС"
Function DateTimeToString(dt As Date) As String
DateTimeToString = Year(dt) & "." & Month(dt) & "." & Day(dt) & " " & Hour(dt) & ":" & Minute(dt)
End Function 'DateTimeToString

' Возвращает количество дней в месяце
Function DaysInMonth(dt As Date) As Integer
Dim days As Integer
days = 28

If IsDate( "29." & Month(dt) & "." & Year(dt) ) Then
days = 29
End If

If IsDate("30." & Month(dt) & "." & Year(dt)) Then
days = 30
End If

If IsDate("31." & Month(dt) & "." & Year(dt)) Then
days = 31
End If

DaysInMonth = days
End Function 'DaysInMonth</syntaxhighlight>
}}</pre>

== Результат ==
{{Поле прокрутки
| ширина = 90%
| высота = 200px
| заголовок = Пример скрипта LibreOffice VBA
| текст = <syntaxhighlight lang=basic>REM ***** LibreOffice BASIC for Calc 4.x *****
'
' Автор: Павел Малахов, 24pm@mail.ru
'
' Этот скрипт использует стили ячеек, которые желательно создать заранее:
' pm-Время - ячейки со временем
' pm-Заголовок - заголовок колонки в таблице
' pm-Заголовок общий - заголовок отчёта
' pm-Итого - итоговые ячейки
' pm-Сотрудник - заголовок отчёта по сотруднику
'
'
' Предварительные требования к листу с исходными данными:
' - Данные берутся из 1-го листа, со 2-й строки (первая содержит название столбцов и не учитывается)
' - Строки должны быть отсортированны по Подразделению (столбец J) и по вторичному ключу Фамилия (столбец B)
'
'
' Заметки:
' - Скрипт работает медленнее, если включен вид "Разметка страницы". Для ускорения нужно переключить в вид "Обычный"
'
' История изменений:2014.09.04 - первая полнофункциональная версия
' 2014.12.17 - Исправлено: Если был зарегистрирован только вход, то данные следующего человека учитывались в текущем. Добавлена переменная tab_person
'

'==== Общие для всех модулей процедуры и функции ====

'==== Константы ====

Const dayStatusHoliday = 0
Const dayStatusShort = 1
Const dayStatusWork = 2

'Определение времени начала и окончания рабочего дня в формате Часы:Минуты:Секунды
Const timeWorkStart As Date = "08:00:00"
Const timeWorkEnd As Date = "17:15:00"
Const timeWorkEndShort As Date = "15:00:00"
Const timeZero As Date = "00:00:01" 'если полный ноль, то это минус сутки
Const timeWorkOver As Date = "00:15:00" 'переработка < 15 мин не учитывается


' Преобразует дату в строку
' cDate() - не подходит, т.к. возвращает строку в формате "ММ.ДД.ГГГГ ЧЧ:ММ:СС"
Function DateTimeToString(dt As Date) As String
DateTimeToString = Year(dt) & "." & Month(dt) & "." & Day(dt) & " " & Hour(dt) & ":" & Minute(dt)
End Function 'DateTimeToString

' Возвращает количество дней в месяце
Function DaysInMonth(dt As Date) As Integer
Dim days As Integer
days = 28

If IsDate( "29." & Month(dt) & "." & Year(dt) ) Then
days = 29
End If

If IsDate("30." & Month(dt) & "." & Year(dt)) Then
days = 30
End If

If IsDate("31." & Month(dt) & "." & Year(dt)) Then
days = 31
End If

DaysInMonth = days
End Function 'DaysInMonth</syntaxhighlight>
}}

</noinclude><includeonly><!--

ЗАГОЛОВОК ОКНА С ПРОКРУТКОЙ
-->{{#if: {{{заголовок|}}}| <div style="min-width: 200px; width:{{#if: {{{ширина|}}}| {{{ширина}}}|auto}}; overflow:auto; border:1px solid #164eaf; background-color: #74a1ed; border-radius: 5px 5px 5px 5px; margin: 0 auto; text-align: center; font-weight: bold;"><!--

БЛОК ССЫЛОК
--><div style="float: right; position: relative; top: -2px; right: 3px;"><!--
-->{{#if: {{{файл|}}}| [[Файл:Download.png|50px|right|link={{{файл}}}|Скачать файл]]|}} <!--
-->{{#if: {{{ссылка|}}}| [[Файл:url.png|17px|link={{{ссылка}}}|Перейти по ссылке {{{ссылка}}}]]<!--
--></div><!--

ЗАГОЛОВОК
-->{{{заголовок}}}</div>|}}<!--

СОДЕРЖИМОЕ ОКНА С ПРОКРУТКОЙ
--><div style="min-width: 200px; width:{{#if: {{{ширина|}}}| {{{ширина}}}|auto}}; height:{{#if: {{{высота|}}}| {{{высота}}}|auto}}; max-height:100%; overflow:auto; margin-bottom:3px; padding-left:0.5em; border:1px solid #164eaf; border-radius: 5px 5px 5px 5px; margin: 0 auto;">{{{текст}}}</div></includeonly>

Навигация