Страницы: 1
RSS
Редактирование своей надстройки
 
Как установить default значение для элемента comboBox?(в файле .xlam) И более общо, где можно почитать про объекты и свойства, которые можно применять в .xlam.
 
Default'овое значение (например, 6-ой элемент):
ComboBox1.ListIndex = 5
There is no knowledge that is not power
 
Цитата
Johny пишет:
Default'овое значение (например, 6-ой элемент):
ComboBox1.ListIndex = 5

Что-то не догадаюсь, куда и как вставить это в код:

<comboBox id="Combo1" label="Size" on Change="combomacro">
<item id="Zip1" label="5" />
<item id="Zip2" label="10" />
<item id="Zip3" label="15" />
</comboBox>

P.S. редактирование кода надстройки xlam, а не макроса в VBE
Изменено: Chyma - 25.12.2012 14:25:24
 
Ну так и надо сразу говорить, что Вы имеете в виду не VBA, а XML чтобы советы по VBA не получать.
Тут ведь не форум телепатов чтобы угадывать Ваши мысли.
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
Для Combobox'a нельзя это сделать, а для Dropdown есть событие getSelectedItemIndex или getSelectedItemID. Вот тут и можно установить дефолтовое значение.
Изменено: Johny - 25.12.2012 14:40:46
There is no knowledge that is not power
 
Цитата
Chyma пишет:
P.S. редактирование кода надстройки xlam, а не макроса в VBE
Chyma, формат .xlam - это прежде всего формат книги Excel, поддерживающей макросы(VBA), а не самостоятельный язык программирования со всякими элементами. И когда Вы спрашиваете где можно почитать про элементы .xlam - это звучит очень непонятно.
Притом, хочу заметить, что редактирование кода надстройки это как раз VBA. А то, что Вам надо - это построение/изменение интерфейса конкретно взятого файла через структуры XML. И к слову: обрабатывать события нажатия элементов такой надстройки(обратные вызовы) все равно придется именно через VBA. Так что никуда Вы от него не денетесь.

Выпадающие списки на панели можно делать и через VBA - это было еще до подержки XML и вполне справедливо, что первый ответ был именно из этой области.

Поищите в сети: RibbonXMLEditor
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Если я все правильно понял, то вам нужен Callback  объекта Ribbon типа того ?
Спасибо
 
    The_Prist, понятно, что обработка будет именно в VBA. Но сначала нужно задать структуру XML. Извиняюсь, что изъясняюсь неясно. Это только из-за малой осведомленности. Было бы полезным почитать информацию по редактированию XML для Excel, но найти не могу.

   Johny, мне кажется, что можно. Например, контроль FontSize имеет тип comboBox с неким значением по умолчанию.

    R Dmitry, наверно, нет. Как написать обработку события изменения значения в comboBox'е я знаю. Вопрос в том, как без макроса сделать так, чтобы при открытие книги было не пустое значение в нем. Видимо, надо использовать auto_open().
Изменено: Chyma - 25.12.2012 15:52:30
 
Цитата
Chyma пишет:
Johny, мне кажется, что можно.

getText
Изменено: Johny - 25.12.2012 20:04:13
There is no knowledge that is not power
 
у меня дефаулт присваивается следующим образом
Код
Dim ItemCount_1
Public ListItemsRg_1
Dim MySel ectedItem_1

Sub DDItemCount_1(control As IRibbonControl, ByRef returnedVal)
 With Workbooks("google_translate.xlam").Worksheets("Лист1").Range("B1:B24") 'диапазон значений с листа 'надстройки
        Set ListItemsRg_1 = Range(.Cells(1), .Offset(.Rows.Count).End(xlUp)) ' заносим в паблик переменную
        ItemCount_1 = ListItemsRg_1.Rows.Count 'количество записей
        returnedVal = ItemCount_1 'возможно лишнее но оставил
    End With
End Sub

'потом срабатывает эта процедура
Sub DDItemSelectedIndex_1(control As IRibbonControl, ByRef returnedVal)
    returnedVal = 0
    MySelectedItem_1 = Left(ListItemsRg_1.Cells(1).Value, 2) 'присвоение дефаулта =левсимв(перв знач диапазона)
End Sub


в xml
Код
<dropDown id="ddAutoText_1" 
                     label = "fr om"   
                     showLabel="true" 
                     sizeString="WW"
                     on Action="DDOnAction_1" 
                     getItemLabel="DDListItem_1" 
                     getItemCount="DDItemCount_1" 
                     getSelectedItemIndex="DDItemSelectedIndex_1">
</dropDown>
 
Johny, я только начал изучать. Основано на этом: Размер шрифта - это comboBox, а не dropBox. И при открытии Excel там не пусто.
 
Используйтте gettext
Код
<comboBox id="Combo1" label="Size" on Change="combomacro" getText= "LoadText">
<item id="Zip1" label="5" />
<item id="Zip2" label="10" />
<item id="Zip3" label="15" />

где LoadText, callback  для загрузки значения по умолчанию
Спасибо
 
..
Спасибо
 
getText для comboBox устанавливает дефолтовое значение, но по тексту, а не по индексу:

XML:
Код
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
    <ribbon>
        <tabs>
            <tab id="rxPlanetaExcel" label="PlanetaExcel">
                <group id="rxComboGroup" label="Combo Group">
          <comboBox id="rxCombo" getText="OnGetText">
                        <item id="rxItem1" label="Item 1" />
              <item id="rxItem2" label="Item 2" />
              <item id="rxItem3" label="Item 3" />
                     </comboBox>
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>


VBA:
Код
Sub OnGetText(ctrl As IRibbonControl, returnedVal As Variant)
    returnedVal = "Item 1"
End Sub
There is no knowledge that is not power
 
Цитата
R Dmitry пишет:
Callback
что такое сallback?  :)
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
При радиопереговорах с судами (это на моей работе) - обратный вызов :)
 
Все правильно Юра, это и есть обратный вызов.  ;)
Тынц
Изменено: R Dmitry - 25.12.2012 23:16:05
Спасибо
 
Со значение понятно. А как разместить красиво?
При такой разметке
Код
<group id="Pict" label="Вставить фото">
        <button id="P1" size="large" imageMso="PhotoAlbumInsert" on Action="pict"  />
        <comboBox id="Combo1" on Change="combomacro">
                <item id="Zip1" label="5" />
                <item id="Zip2" label="10" />
                <item id="Zip3" label="15" />
        </comboBox>
</group>

панель выглядит , а хочется,чтобы кнопка была под комбобоксом. примерно так
Изменено: Chyma - 26.12.2012 10:02:28
 
Chyma, Вы не пытались найти и скачать редактор XML, о котором я написал? Зря. Там можно найти все.
Есть такой элемент: <box>
И есть у этого элемента свойство: boxStyle
Так вот если это свойство поставить в ="vertical" и поместить свои элементы внутрь бокса - то можно увидеть, как они будут располагаться.
Хотя такой фокус не пройдет с иконкой, свойство size которой равно "large". Это свойство подразумевает, что иконка во всю высоту панели...Так что...
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, я скачал, спасибо за него. Пробовал там использовать <box> и boxStyle, ничего не получалось, так как не знал, что это из-за large. Думал, что есть какие-нибудь свойства, применимые к данному контролю наподобие insertBefore,insertAfter, itemHeight, itemWidth.
 
Юрий М, R Dmitry, в моей голове функции обратного вызова неразрывно связаны с функциями высшего порядка. Видимо, из-за js :)
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
Страницы: 1
Наверх