Изменить метку и заголовок последней вызванной процедуры
1 2 3 4 5 6 7 8 9 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 60 61 62 | 'BEGIN DESCRIPTION 'Назначение: Изменение заголовка последней вызванной процедуры и её метки в схеме вывода (на панели навигации результатов). 'END DESCRIPTION Sub Main 'Заголовок: ChangeLabelTitleOfLastRunProcedure.sbs 'Автор: Michael Wexler, mailto:wexler at yahoo.com 'Условия: открыто окно результатов. 'Действие: пробегается снизу вверх по дереву созданных результатов, ищет заголовок процедуры и её метку, после чего ' заменяет их заданным текстом. ' Может быть использован для расстановки пометок в окне результатов типа ' "фильтр по мужчинам" или "без учёта пропущенных значений", или иных подобных комментариев. 'Входные параметры: текст, который используется для замены заголовка. 'Выходные параметры: нет 'Вызов: SCRIPT file="c:\\my documents\\ChangeLabelTitleOfLastRunProcedure.sbs" ("Исправленный заголовок") . ' Примеч.: Метка процедуры появлется только в схеме вывода (панели навигации), заголовок же процедуры появляется ' как в схеме вывода, так и в самом окне результатов. См. пояснения из справки SPSS: ' Из файла помощи, раздел SPSSType Property: ' Свойство SPSSType имеет значение "2" для SPSSHead, и вы можете изменить только метку этого элемента, которая появляется ' только в дереве результатов (схеме выдачи). ' Собственно заголовки имеют значение "9" (SPSSTitle), и вы можете изменить как их метку (в схеме вывода), так и их содержание, ' которое отображается в окне результатов. ' Внимание: если вызов процедуры заканчивается ошибкой (неправильное имя переменной и т.д.), ' скрипт не обнаружит этого и может поменять заголовок не у того элемента. ' 'Получим указатель на окно результатов и сделаем его видимым, чтобы иметь возможность 'увидеть изменение заголовка. Set objOutputDoc = objSpssApp.GetDesignatedOutputDoc objOutputDoc.Visible = True Dim strParam As String strParam = objSpssApp.ScriptParameter(0) 'Получим указатель на перечень объектов Output Items Set objOutputItems = objOutputDoc.Items() Dim intItemCount As Integer 'Число объектов в окне результатов. Dim intItemType As Integer 'Тип объекта. Dim strItemTitle As String 'Текст строки заголовка, который мы хотим найти и изменить. Dim objSpssText As Object 'Получим последний созданный заголовок, взбираясь вверх по дереву созданных объектов, до тех пор, пока не найдём 'объект типа Title на втором уровне. intItemCount = objOutputItems.Count For Index = intItemCount - 1 To 0 Step -1 Set objOutputItem = objOutputItems.GetItem(Index) intItemType = objOutputItem.SPSSType If intItemType = SPSSTitle And objOutputItem.Level=2 Then 'Debug.Print intItemType & " должен быть равен " & SPSSTitle Set objSpssText = objOutputItem.Activate objSpssText.Text = strParam objOutputItem.Deactivate objOutputItem.Label=Left(strParam, 35) 'Если нашли заголовок, поднимаемся ещё на один уровень вверх и меняем метку на самом верхнем уровне. Index=Index-1 Set objOutputItem = objOutputItems.GetItem(Index) objOutputItem.Label=Left(strParam, 35) Exit For End If Next End Sub |