Форум: "Основная";
Текущий архив: 2002.08.15;
Скачать: [xml.tar.bz2];
ВнизУправление COM - сервером Excel Найти похожие ветки
← →
Programmer1 (2002-08-01 15:58) [0]Уважаемые мастера!!! Помогите, пожалуйста, в меню Файл в Excel"е впихнуть свою команду.
Почему-то в бейсике такой макрос работает
Set SaveTemplCommand = CommandBars("File"). _
Controls.Add(Type:=msoControlButton, Id:= _
2949, Before:=7)
With SaveTemplCommand
.Style = msoButtonIconAndCaption
.FaceId = 455
.Caption = "Сохранить как шаблон"
.OnAction = "SaveDg1Proc"
End With
А когда запускаю в дельфи
NameOfControl:="File";
Type1:=1;
Id1:=1;
Before1:=7;
Temporary:=false;
SaveTemplCommand:=Excel1.CommandBars.
Item[NameOfControl].Controls.
Add(Type1,Id1,EmptyParam,Before1,Temporary);
with SaveTemplCommand do
begin
Style := 3;
FaceId := 455;
Caption := "Сохранить как шаблон";
end;
то компилятор на строке "with SaveTemplCommand do" выдает ошибку "Record, object or class required"
Метод Add как раз и возвращает ссылку на объект типа CommandBarControl. Что ему не нравится?
← →
Digitman (2002-08-01 16:04) [1]Ему, думаю, не нравится то же, что и мне. А мне, к примеру, не нравится, что ты не удосужилась даже привести строчку, где ты декларируешь этот самый идентификатор SaveTemplCommand.
← →
Programmer1 (2002-08-01 16:06) [2]Я все объявляю как OLEVariant
← →
Programmer1 (2002-08-01 16:09) [3]var
FileName:OLEVariant;
SaveTemplCommand, NameOfControl:OLEVariant;
Type1,Id1,Before1,Temporary:OLEVariant;
FileMenuOb,Cntrls:olevariant;
Style,FaceId,Caption,OnAction, index:olevariant;
← →
Vitaly (2002-08-01 16:12) [4]SaveTemplCommand:=(Excel1.CommandBars as CommandBars).
Item[NameOfControl].Controls.
Add(Type1,Id1,EmptyParam,Before1,Temporary);
← →
aus (2002-08-02 00:30) [5]ты не используй with, а конкретно указывай объект, свойства которого используешь. Для with нужен объект или запись, а не OleVariant, поэтому компилятор выдает ошибку.
SaveTemplCommand.Style := 3;
SaveTemplCommand.FaceId := 455;
SaveTemplCommand.Caption := "Сохранить как шаблон";
← →
Programmer1 (2002-08-05 09:37) [6]В коллекции
Excel1.CommandBars
всего я обнаружила 85 объектов типа CommandBar и среди них нет меню File, да и не должно быть, потому что это не строка меню, а входящий в нее управляющий элемент типа CommandBarPopup.
Заковыка в том, что метод
CommandBar.FinfdControl(....}
и свойство
CommandbBar.Controls.Item[Index]
возвращают ссылку на объект типа CommandBarControl, а не CommandBarPopup.
У объекта CommandBarControl нет свойства Controls и нельзя выполнить метод Controls.Add, а у CommandBarPopup - есть, и т.о.
с помощью CommandBarPopup.Controls.Add можно добавить команду в меню.
Как мне добраться до меню File, как CommandBarPopup?
Я пыталась делать приведение типов.
Выражение
MenuFileControl:=CommandBar.Controls.item[Index] as CommandBarPopup;
выдает ошибку "Operator not applicable to this type"
Как быть?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.08.15;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c