Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Выполнить действие из подменю


Автор: zhefran 19.5.2008, 14:28
Мне нужно в макросе выполнить такое дело. Есть СommandBar в Оffice, на нем 6 пунктов меню и 3 из них с выпадающим списком. мне необходимо выполнить команду, которая висит в подменю. Как это можно сделать? 

Автор: bilya 19.5.2008, 15:23
Не совсем понятно, что вы имеете ввиду под
Цитата(zhefran @  19.5.2008,  14:28 Найти цитируемый пост)
необходимо выполнить команду, которая висит в подменю

Командуют из меню/подменю - как я понимаю - кнопками, у кнопок есть свойство .OnAction, при помощи которого и назначается исполняемый макрос

Автор: zhefran 19.5.2008, 15:32
Цитата(bilya @  19.5.2008,  15:23 Найти цитируемый пост)
Командуют из меню/подменю - как я понимаю - кнопками, у кнопок есть свойство .OnAction, при помощи которого и назначается исполняемый макрос

Это не то!
Например:
На CоmmandBar рисование есть Control Автофигуры, когда нажимаем на него выпадает Popup меню на нем пункт Линии, наводим на него курсор появляется еще одно меню на котором отображены линии. Мне нужно оттуда выбрать например, рисование кривой.
Тоесть, я запускаю макрос и сразу могу рисовать кривые линии!!!

Автор: Aloha 19.5.2008, 15:42
Код
Application.CommandBars("Lines").Controls(4).Execute

Автор: zhefran 19.5.2008, 16:29
Цитата(Aloha @  19.5.2008,  15:42 Найти цитируемый пост)
    
Application.CommandBars("Lines").Controls(1).Execute

Для примера это подходит, но у меня СommandBar Ink Annotations.
там схоже с примером только цвет линии и тип линии, но я и до них не могу добраться :(.
Пробовал по примеру
Код

Application.CommandBars("Line color").Controls(1).Execute

Не получается.
А в этом контроле еще есть одно меню очень мне необходимое - называется перья для примечаний. 

Автор: Staruha 20.5.2008, 09:03
Если тебе надо график нарисовать так это Вставка -диаграммы

А линнии рисуются к примеру так
    
Код

ActiveSheet.Shapes.AddLine(143.25, 294#, 336.75, 294#).Select
    ActiveSheet.Shapes.AddLine(336.75, 294#, 399.75, 350.25).Select
End Sub

Автор: zhefran 20.5.2008, 09:20
Это не график, это рукописные примечания. В ворде если у тебя таблетка со стилусом есть возможность добавлять рукописные примечания. Команда ворд - insertinkannotations, commandbar - ink annotations. Мне нужно из них выбирать параметры. Поиск по гуглу ничего понятного для меня ничего не дал.

Добавлено:
Нашел на http://msdn.microsoft.com/en-us/library/bb979761.aspx вот такой кодик на JScript
Код

var agCtrl;
var inkPresenter; // Corresponds to InkPresenter element in XAML.
var newStroke = null; // The Stroke variable we'll use here in mouse handlers.
// DrawingAttributes variables.
var daWidth = 2;
var daHeight = 2;
var daColor = "Black";
var daOutlineColor = "Black";

function root_Loaded(sender, args) 
{
    // Get the HTML object that contains the Silverlight plug-in.
    agCtrl = sender.GetHost();
    inkPresenter = sender.findname("inkPresenterElement");
}

// Capture mouse movement when the left button is pressed, and create the stroke.
function InkPresenterMouseDown(sender,args)
{
   inkPresenter.CaptureMouse();
   
   newStroke = agCtrl.content.createFromXaml('<Stroke/>');
   
   var da = agCtrl.content.CreateFromXaml('<DrawingAttributes/>');
   newStroke.DrawingAttributes = da;
   
   // Set the drawing attribute properties.
   newStroke.DrawingAttributes.Width = daWidth;
   newStroke.DrawingAttributes.Height = daHeight;
   newStroke.DrawingAttributes.Color = daColor;
   newStroke.DrawingAttributes.OutlineColor = daOutlineColor;
   
   newStroke.StylusPoints.AddStylusPoints(args.GetStylusPoints(inkPresenter));
   inkPresenter.Strokes.Add(newStroke);
}

// Add the new points to the Stroke we're working with.
function InkPresenterMouseMove(sender,args)
{
   if (newStroke != null)
   {
      newStroke.StylusPoints.AddStylusPoints(args.GetStylusPoints(inkPresenter));
   }
}

// Release the mouse.
function InkPresenterMouseUp(sender,args)
{
   newStroke = null;
   inkPresenter.ReleaseMouseCapture();
}

// Set the drawing attributes for a pen.
function SelectPen(sender, args)
{
  daWidth = 1;
  daHeight = 1;
  daColor = "Black";
  daOutlineColor = "Black";
}

// Set the drawing attributes for a marker.
function SelectMarker(sender, args)
{
  daWidth = 10;
  daHeight = 4;
  daColor = "Blue";
  daOutlineColor = "Blue";
}

// Set the drawing attributes for a highlighter.
function SelectHighlighter(sender, args)
{
  daWidth = 25;
  daHeight = 5;
  daColor = "Yellow";
  daOutlineColor = "Yellow";
}

// Erase all strokes from the canvas.
function EraseCanvas(sender, args)
{
  inkPresenter.Strokes.Clear();
}

Можно ли это дело как-то адаптировать так, чтобы записать это все дело в макрос???


Автор: mihanik 21.5.2008, 20:33
Можно!
Адаптируй!
 smile 

В каждой шутке есть доля шутки.
Переведи этот кусок на VB.
Всего и "делов"!

Автор: zhefran 27.5.2008, 11:03
Сделал по другому. В delphi вывел все имена панелей и прицепился ко мне нужной!

Автор: mihanik 27.5.2008, 17:51
zhefran, молодец!!!

Я тоже как-то так делал...
Кусок кода выложить можешь?

Автор: zhefran 31.5.2008, 16:01
Вывод в мемо:
Код

//должен быть подключен в проект WordApplication с закладки Servers
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
 begin
   Button1.Caption:=inttostr(wordapplication1.CommandBars.Count);
    for i:=1 to wordapplication1.CommandBars.Count do
      begin
        memo1.Lines.Add(wordapplication1.CommandBars.Item[i].Name);
  end;
 end;


Название панели, которую я использую - Annotation Pens
Макрос выбора типа пера:
Код

CommandBars("Annotation Pens").Controls.Item(2).Execute
 
Это выбор черной ручки.
До цвета линий не добирался - начотдела сказал, что не нужно, а я й не лез! smile 

Автор: zhefran 2.6.2008, 13:04
Попробовал добраться до цвета линий (для себя поржать) - не получилось! :(
До палитры цветов отображенной в подменю не смог достучаться!
Получилось получить доступ только до:
 - Другие цвета линий
 - Узорные линии 

Соответственно:
Код

Sub asdas()
CommandBars("Line Color").Controls.Item(4).Execute
CommandBars("Line Color").Controls.Item(5).Execute
End Sub

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)