Числовые поля в диалоге

Автор Ulan, 25 ноября 2024, 17:01

0 Пользователи и 1 гость просматривают эту тему.

Ulan

Здравствуйте, уважаемые гуру. Не судите строго новичка, если вопросы будут примитивными. Искал ответы у Питоньяка, Бейна, на форуме, но безуспешно.
LO v 24.8.3.2, Calc. В диалоге два элемента управления "Числовое поле". В поле А пользователь вводит число. На событие "Текст изменён" указан макрос, который по заданной формуле с учётом введённого числа производит вычисление и результат заносит в поле Б. Всё работает. Предположим, что пользователь ошибся и забил число в другое поле А, так как таких пар числовых полей несколько. Удаляем число из поля А (Backspase), но в поле Б число остаётся без изменения. Конечно, можно в общих настройках поля Б указать "Только для чтения - Нет" и удалить вручную или забить в поле А ноль, но хотелось бы выполнить эту процедуру одним нажатием кнопки Backspase.
И попутный вопрос к теме. В таблице Calc есть возможность скрыть отображение нулей. Как можно скрыть нули в элементах управления "Числовое поле"?
С уважением, Александр.

sokol92

#1
Добрый день, Александр!
Выгрузите, пожалуйста, файл - пример.

Цитата: Ulan от 25 ноября 2024, 17:01Как можно скрыть нули в элементах управления "Числовое поле"?
На мой взгляд, лучше использовать элемент управления "Formatted control". В свойствах его модели можно задать пользовательский числовой формат, который скрывает 0, например: "0;-0;".

Цитата: Ulan от 25 ноября 2024, 17:01Удаляем число из поля А (Backspase),
В этот момент должно возникнуть событие "Текст изменен"...
Владимир.

Ulan

Добрый день, Владимир. Вчера не успел зарегистрироваться на форуме, очевидно, рабочий день администратора уже закончился. Файл, конечно, отравляю, но в этом примитиве в 2 строки смотреть нечего. Для удобства восприятия дополнил комментариями и переменной.

  Sub St_min 'Запись в поле Стоимость востребованных минут
 
  'Min -  Global Min As Object 'Числовое поле Минуты
  'SMin -  Global SMin As Object  'Числовое поле Стоимость минут

  Dim stmin As Integer  'Стоимость минуты по прейскуранту
 
   oCell = ThisComponent.Sheets(1).getCellByPosition(10,4)
   stmin = oCell.Value
     
    SMin.Value = Min.Value*stmin

  End Sub

sokol92

Вот минималистичный пример.
Запустите макрос ShowDialog. В левом элементе управления - число минут, в правом - стоимость. Цена берется из ячейки A1.
Владимир.

Ulan

Владимир, спасибо огромное! Работает красиво! Такой макрос мне, конечно, не написать. Буду "пришивать" к своей программе.