Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Строки в комбобокс  (Прочитано 10752 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Ципихович Эндрю
Помогающий

ru
Offline Offline

« : 09-12-2010 16:07 » 

Ранее чтобы при открытии документа в Комбобокс добавлялись строки я пользовался скриптом в автозагрузке документа сверяя его имя
If ActiveDocument.InlineShapes.Item(1).OLEFormat.Object.Name = "ComboBox1" Then ActiveDocument.ComboBox1.AddItem "1"
Но столкнулся с ошибкой Run-time error 16389 - Внутренняя ошибка
Но у Комбобокса нет события Initialize
Как можно реализовать добавление строк при открытии документа в Комбобокс?Не понял
При событии GotFocus добавляется но каждый раз всё больше записей, после наведения курсора
Если ставить на событие LostFocus удаление всех записей с Комбобокса то получается полный круговорот строк в Комбобоксе
Как же сделать правильно?Не понял

подскажите, также как по типу Контрола отличить кнопка это или Комбобокс, в обоих случаях почему то Не понял?? тип = wdInlineShapeOLEControlObject, или 5, не ужели они не разграничены между собой
Тип = ActiveDocument.InlineShapes.Item(1).Type

Добавлено через 26 минут и 27 секунд:
Не ну можно по высоте и ширине объекта:
'получаем высоту объекта № ...
h = Round(PointsToCentimeters(ActiveDocument.InlineShapes(1).Height), 1)
'получаем ширину объекта № ...
w = Round(PointsToCentimeters(ActiveDocument.InlineShapes(1).Width), 1)
Но в скрипте h =1,4, а на самом деле 40
Но в скрипте w = 18,6, а на самом деле 528
Почему так???
« Последнее редактирование: 09-12-2010 16:33 от Ципихович Эндрю » Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 09-12-2010 17:02 » 

Вопрос не понятен. Причём тут проверка Object.Name = "ComboBox1", если заранее известно, что этот код работает при загрузке документа, и в документе имеется комбобокс?

Кроме того, не нужно игнорировать запятые. Без них смысл текста пропадает.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Ципихович Эндрю
Помогающий

ru
Offline Offline

« Ответ #2 : 09-12-2010 17:21 » 

Проверка Object.Name нужна, чтобы загнать, что нужно, куда нужно.
Чем больше проверок, тем лучше, в пределах разумного.

Заранее не известно, что этот код работает при загрузке документа, где в документе имеется комбобокс. А если его удалили, что тогда?
Нашёл как отличить кнопку от комбобокса

Код: (Visual Basic)
'у комбобокса "Forms.ComboBox.1", у кнопки "Forms.CommandButton.1"
forms = ActiveDocument.InlineShapes(1).OLEFormat.ProgID
« Последнее редактирование: 09-12-2010 17:57 от RXL » Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 09-12-2010 17:55 » 

Ципихович Эндрю, если так и будешь коряво писать, то придется удалять твои посты.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Ципихович Эндрю
Помогающий

ru
Offline Offline

« Ответ #4 : 09-12-2010 18:03 » 

Понял, учту, подскажите пожалуйста, как скрипты выделять???
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 09-12-2010 18:25 » 

Оборачивать тегами  [code]....[/code] .

Ниже поля редактирования кнопка есть - "Предварительный просмотр". По ней попадешь на полноценное редактирование.

И про грамматику не забывай, чтобы тебя понимали.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Ципихович Эндрю
Помогающий

ru
Offline Offline

« Ответ #6 : 10-12-2010 09:28 » new

Чем больше разбираешся в Комбобоксах, тем больше появляется чудес, наткнулся
Строка кода:
ActiveDocument.ComboBox1.AddItem "1"
'Получил ошибку 430 Class does not support Automation or does not support expected interface
'Класс не поддерживает автоматизацию или не поддерживает ожидаемый интерфейс
'то есть Класс не поддерживает программирование объектов
Ранее всё добавлялось без проблем, почему так происходит?Не понял

Добавлено через 21 час, 30 минут и 1 секунду:
Понял в чём дело, открываешь Вордовский документ, пытаешся, нажать на кнопку, на комбобокс и этот контрол выделяется рамкой.
Он как бы готов для редактирования, в меню этого контрола Свойства и Исходный текст не доступны, но кликнув в меню на Объект появляется сообщение - Объект повреждён либо стал не доступен. Можно ли его вылечить, сделать доступным???


Добавлено через 2 часа, 45 минут и 14 секунд:
Есть проедположение, что это происходит после того, как документ был некорректно закрыт и восстановлен Вордом, или по другой причине, при этом он все объекты превратил в картинки.
Как с этим бороться??
« Последнее редактирование: 11-12-2010 09:43 от Ципихович Эндрю » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines