Россыпь мелких вопросов

  • Автор темы Vagor.ini
  • Дата начала
H

hosm

seoman2
Есть @isTime - проверяет наличие значения даты. Насколько можно понять в контексте вопроса из фразы "Чтобы можно было не заполнять поле "срок_исп" " - это вам поможет определить, заполнено ли поле.
Возможно, в вашем случае стоит еще использовать @Adjust, чтоб сместить значение даты на нужный период времени.
Есть для инпутвалидацион @Failure/@Success для фиксации результата валидации, но лучше сделать, как написано выше.
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
515
Коллеги, как грамотно в Excel вставить ссылку на NotesDocument?
Использую:
Код:
Call ExcelSheet.Range("A5").Hyperlinks.Add(ExcelSheet.Range("A5"),x.LinkAdd,"Link")
В x.LinkAdd - путь к документы, полученный через NotesDocument.Notesurl
"Link" - то что должно отображаться вместо ссылки.
В результате: ссылка вставляется, открывается, но вместо "Link" висит полная ссылка. Жуть..
Кто знает "рецепт моего счастья"? =)

Добавлено: Блин, просто не внимательность =)
Не дописал параметры, надо:
Код:
Call ExcelSheet.Range("A5").Hyperlinks.Add(ExcelSheet.Range("A5"),x.LinkAdd, <SubAddress>,<Текст подсказки>,<Текст для отображения>)
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
Код:
Call xlHyperLink.Add(xlApp.Selection, "http://server/database.nsf/view/dociID?opendocument", "", "","Open Document")
 

seoman2

Green Team
17.02.2010
507
1
BIT
72
Как сделать, чтобы в поле типа checkbox с несколькими значениями (choices) можно было галочку ставить только на одно значение?
 

seoman2

Green Team
17.02.2010
507
1
BIT
72
У Radio Button не получается снять шарик, сделать, чтобы не было ничего нажато.
 
H

hosm

Добавить "пустое" значение и/или кнопку очистки не устроит?
 

seoman2

Green Team
17.02.2010
507
1
BIT
72
Добавить "пустое" значение и/или кнопку очистки не устроит? :D
Нет, это изврат.
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
515
Ок, изврат так изврат =)

CheckBox хранит в себе массив значений следовательно:
Input Validation?
@if(@Elements(@ThisName) > 1 ; @Prompt([ok];"";"Укажите только одно значение");@success)
Ну тут я мог и напутать, так как на @ я не спец.

На событиях onChange/Exiting можно на LS проверять размер массива.
В свойствах поля, 3 закладка, выставит внизу галочку, чтобы наверняка.
 
H

hosm

хотите изврат :D юзеры убьют автора за вариант с Input Validation: разрыв шаблонов (в чекбоксе нельзя выбрать несколько) + лишние клики (мессага, убрать прошлую галку, поставить новую галку).
На событиях onChange/Exiting можно, на @ можно иметь доп. поле с предыдущим значением, у "чекбокса" формула в translation, убирающая предыдущий выбор c Refresh fields on kw change
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
453
пойдем от обратного, чья это безумная идея - сделать группу чекбоксов с выбором не более одного?
не надо нарушать правила создания UI - это ад, и придумавший подобное - будет вечно гореть там, а жарить его будут юзеры
 
A

alexas

Как сделать, чтобы в поле типа checkbox с несколькими значениями (choices) можно было галочку ставить только на одно значение?
Была такая тема.
Заменить многозначный чекбокс на эквивалентное кол-во однозначных.
И, соответственно, при изменении значения любого чека - сбрасывать в "пусто" остальные чеки.
Визуально, отличий от многозначного чекбокса, не будет. Что бы юзверь не осатанел от нестандарта, можно пометить, что здесь возможен выбор только одного значения.

Если сами значения чекбокса в доке меняются - "раскидывать" исходный список (с алиасами) по чекбоксам.
Пустые чеки скрывать.
Результат брать "собрав" все одиночные чеки в список (например в вычисляемом поле) и затриммировать.

Если такой вариант устраивает но непонятно как делать, отпишитесь - сделаю микропример.
----------------------------------------
Комент к предложенному OKEN :
PreviousValue - дополнительное, скрытое, вычисляемое поле с формулой: CheckBox (имя, собственно, чекбокса), расположеное после самого чекбокса.
И в Input Translation чекбокса - @If(@Elements(@ThisValue)<2;@Return(@ThisValue);@Trim(@Replace(@ThisValue;PreviousValue;"")))
В чекбоксе включить галку - "Refresh fields on keyword change".
onChange/Exiting - трогать не нужно.
Всё.
P.S.
Сам часто использую многозначные чекбоксы "собранные" из однозначных.
Плюсы - произвольная вёрстка чекбоксов, (полезно, например, при красивом размещении чеков в строку при большом отличии в длине ключевых слов/предложений), возможность "размазать" чекбокс по плейн тексту, легко строится любая нестандартная логика.
 

seoman2

Green Team
17.02.2010
507
1
BIT
72
Вопрос - как сделать в оутлайне отображение персональных папок или видов?
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
515
Если сгенерить новый аутлайн. то в низу есть 4 пункта: Прочие виды, папки, приватные папки и что-то еще.
Вот при наличии этих пунктов - папки будут отображаться в аутлайне, если будут созданы.
 

Eugen

Green Team
22.03.2012
210
1
BIT
1
Всем здрасьте.
Есть агент, импортирующий некие данные из xls в лотусовые доки. Делаю через ole-объекты, не смотря на то, что наслышан про их глючность.

В процессе импорта агент запрашивает у пользователя разные диапазоны ячеек, которые потом строкой передаются в range. Подскажите, как проверить эти диапазоны на валидность?

Пример. У пользователя запрашивается первый диапазон вида "A1:A31", т.е. столбец начала и конца должен совпадать, буквы естессно должны быть на латинице.
Второй диапазон вида "A1:U1", т.е. в пределах одной строки.
Также не исключен вариант в обоих случаях, что пользователь может указать только "A1" к примеру, т.е. если загрузить ему надо только по одной строке и столбцу.

Что касается латиницы в имени ячеек сделал так:
Код:
Function checkLayout (colName As String) As Boolean
On Error GoTo errH
Dim symbolCode
Dim i As Integer
Dim symbol As String

checkLayout = False
If colName <> "" Then
i = Len(colName)
Select Case i
Case 1:
symbolCode = Asc(UCase(colName))
If symbolCode>=65 And symbolCode<=90 Then
checkLayout = True
End If
Case is>1:
For i = 1 To Len(colName)
symbol = Mid(colName, i, 1)
symbolCode = Asc(UCase(symbol))
If symbolCode<65 Or symbolCode>90 Then
Exit Function
End If
Next
checkLayout = True
End Select
End If
endSub:
Exit Function
errh:
Print {function "checkLayout" =>> Error "} & Error$ & {" in line } & Erl
Resume endSub
End Function

А вот как быть со всем остальным? Как обезопаситься от кракозябр наподобие "! " № ; % :" и т.д.? Как проверить чтобы пользователь ввел именно "A1", а не "1A" или "1A1" или вообще что-то вроде "A1:A31:U1"? Кроме как разбирать посимвольно мыслей не приходит...

Заранее спасибо.
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
515

Eugen

Green Team
22.03.2012
210
1
BIT
1
А если диапазон будет формата "AC1:AC31"? Тогда с Len(val) не получится
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
515
Можно получить из Excel последний заполненный столбец и последнюю заполненную строку.
Придется правда открывать файл до начала обработки.
И если пользователь указал ячейку в диапазона "A1:XXXXXX", то говорить: "а тут такой нет"

для варианта "AC1:AC31" {Если Inst (val , ":") = 0 and Len(val) > 2 - ошибка} никогда не отработает :)
Тут только вхождение ячеек в диапазон проверять.

Добавлено: А можно еще попробовать получать значение по диапазону и ловить ошибки.
Только это очень накладно и надо долго играться.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!