ник: Lukas
В версии 2000 (то что бросилось сразу в глаза):
1. Сразу вылетает в аут на строчке: strNewDelimiter = Mid(CDbl(CStr("4.56")), 2, 1)
Как-то смущает такой способ определения разделителя, но "на крайняк" так проще: =Mid$(1/2,2,1)
2. В строчке(-ах): If blnFlagKeyb = True Then сравнение переменной типа Boolean с константой бессмысленно. Можно проще: If blnFlagKeyb Then
3. Названия свойств и методов класса с префиксом "frm" как-то "неестественно".
4. "Размытое" присвоение свойств "frmAllowCE" и "frmAllowEditFormula".
По идее, эти значения должны быть прописаны где-то в "настройках ролей", то есть форма-калькулятор сама должна определять роль пользователя и, соответственно, значения этих свойств.
Ну не прописывать - же каждый раз в вызове калькулятора значения этих свойств.
5. Так-же и с позиционированием формы на экране. Допустим в "настройках" есть опция:
позиционировать форму по контролу или по сохраненному ранее положению.
Открываясь, форма читает эту опцию, и, соответственно перемещается в нужное место экрана.
Не надо в каждом вызове формы прописывать куда ей двигаться, она должна сама это делать.
В рекомендованных мной выше примерах - календариках, процедуре, вызывающей форму
-календарь достаточно перевести фокус на поле, значение которого интересует и создать
экземпляр формы- календаря. Все остальное делается самой формой-календариком.
Вы же "перекладываете обязанности" формы-калькулятора вызывающим формам. А им это надо?
И, если предполагается хранение истории вычислений и положение формы при закрытии,
это должно делаться опять же самой формой-календариком, а не вызывающей формой.