Author |
Topic |
|
mers
Russia
159 Posts |
Posted - 05/06/2005 : 10:28:20
|
Здравствуйте! Можно ли программно изменить местоположение текста в шейпе? т.е что бы он был не посередине, а стоял где-нить сбоку. заранее спасибо :) |
Edited by - mers on 05/06/2005 10:35:06 |
|
Digitall
Russia
389 Posts |
Posted - 05/06/2005 : 10:39:24
|
quote: Originally posted by mers
Здравствуйте! Можно ли программно изменить местоположение текста в шейпе? т.е что бы он был не посередине, а стоял где-нить сбоку. заранее спасибо :)
Приведу строчки из примера Туманова:
Sub tty() ActivePage.Shapes(1).Cells("Para.HorzAlign") = 1 'выравнивание по середине ActivePage.Shapes(1).Cells("Para.HorzAlign") = 2 'выравнивание справа ActivePage.Shapes(1).Cells("Para.HorzAlign") = 0 'выравнивание слева End Sub |
|
|
mers
Russia
159 Posts |
Posted - 05/06/2005 : 10:48:40
|
нет, вы немного не поняли или я криво спросил выравнивание.. это все понятно. можно ли сделать так чтобы текст, который можно написать в шейпе был за пределами шейпа? ну например стоял снизу шейпа... вроде как подпись? |
Edited by - mers on 05/06/2005 10:56:41 |
|
|
Digitall
Russia
389 Posts |
Posted - 05/06/2005 : 10:58:39
|
quote: Originally posted by mers
нет, вы немного не поняли или я криво спросил выравнивание.. это все понятно. можно ли сделать так чтобы текст, который можно написать в шейпе был за пределами шейпа? ну например стоял снизу шейпа... вроде как подпись?
Sub Text_position() Dim shpObj As Visio.Shape Set pagsObj = ThisDocument.Pages Set pagObj = pagsObj.Item(1) Set selectObj = ActiveWindow.Selection Set shpObj = ActiveWindow.Selection.Item(1) Set celObj1 = shpObj.Cells("TxtPinX") 'назначаем ячейку celObj1.Formula = "Width*0,5" 'сдвигаем по горизонтали Set celObj1 = shpObj.Cells("TxtPinY") 'назначаем ячейку celObj1.Formula = "Height*-0,5" 'сдвигаем по вертикали End Sub
Можно и короче и изящнее, но это уже не ко мне... |
|
|
mers
Russia
159 Posts |
Posted - 05/06/2005 : 11:57:35
|
т.е при таком подходе, насколько я понимаю, мы сдвигаем шейп в сторону, а текст остается на месте?
а где-нить в шейп шите нету прямого указание на местоположение текста? |
|
|
brace
Russia
358 Posts |
Posted - 05/06/2005 : 12:08:28
|
Подсказка.
Что Вы делаете в тхт файле чтобы сдвинуть весь текст вниз ???
|
|
|
mers
Russia
159 Posts |
Posted - 05/06/2005 : 12:21:15
|
:) это конечно некоторый выход.. но хотелось бы вот чего: вытаскиваю шейп с трафарета появляется окно: "Введите имя объекта", вводим имя, рядом с шейпом появляется текст названия объекта. Требования к тексту: при перетаскивании шейпа, текст перетаскивается тоже; выделяем шейп, выделяется только шейп, имя остается на месте; поворачиваем шейп, имя не поварачивается, остается на месте.
Сейчас, делаю это так: вытаскиваю шейп, ввожу имя, рисую рядом прямоугольник, в него вписываю имя, у прямоугольника делаю нулевые границы (он не виден), группирую эти шейп и текст, смещаю цетр полученной группы в центр шейпа.
но при таком подходе не получается нужных результатов. |
|
|
Digitall
Russia
389 Posts |
Posted - 05/06/2005 : 12:26:29
|
quote: Originally posted by mers
т.е при таком подходе, насколько я понимаю, мы сдвигаем шейп в сторону, а текст остается на месте?
а где-нить в шейп шите нету прямого указание на местоположение текста?
Мы сдвигаем текстовый блок относительно фигуры, а если более точно, относительно её нижнего левого угла. Если вас смутили формулы в которых участвуют Width и Heigth, то это относительные величины размеров самой фигуры. Вы можете указать и абсолютные величины. Но повторюсь, в моем примере мы сдвигаем текстовый блок относительно фигуры, а не наоборот, т.к. ячейки TxtPinX и TxtPinY отвечают как раз за расположение текстового блока фигуры. |
|
|
mers
Russia
159 Posts |
Posted - 05/06/2005 : 12:29:09
|
атлична.. :) огромное спасибо |
|
|
Digitall
Russia
389 Posts |
Posted - 05/06/2005 : 12:47:45
|
quote: Originally posted by mers
:) это конечно некоторый выход.. но хотелось бы вот чего: вытаскиваю шейп с трафарета появляется окно: "Введите имя объекта", вводим имя, рядом с шейпом появляется текст названия объекта. Требования к тексту: при перетаскивании шейпа, текст перетаскивается тоже; выделяем шейп, выделяется только шейп, имя остается на месте; поворачиваем шейп, имя не поварачивается, остается на месте.
Сейчас, делаю это так: вытаскиваю шейп, ввожу имя, рисую рядом прямоугольник, в него вписываю имя, у прямоугольника делаю нулевые границы (он не виден), группирую эти шейп и текст, смещаю цетр полученной группы в центр шейпа.
но при таком подходе не получается нужных результатов.
Здесь необходимо разделить эту задачу на несколько более простых: 1) Вытаскиваю шейп с трафарета появляется окно: "Введите имя объекта", вводим имя, рядом с шейпом появляется текст названия объекта. 2) Требования к тексту: при перетаскивании шейпа, текст перетаскивается тоже; 3) Выделяем шейп, выделяется только шейп, имя остается на месте; 4) Поворачиваем шейп, имя не поварачивается, остается на месте.
Все это решаемо, но не одной единственной формулой. 1) Это настройка вызова окна заполнения Custom Properties. За это отвечает ячейка EventDrop. В нее надо внести =Docmd(1312) 2) Это простое нормальное поведение фигуры. 3) За это отвечает ячейка EventDblClick. Если внести в нее 0, то двойным нажатием мы только выделим фигуру, т.е. без редактирования текста. 4) Здесь можно просто внести в ячейку TxtAngle =-Angle |
|
|
Digitall
Russia
389 Posts |
Posted - 05/06/2005 : 12:49:54
|
quote: Originally posted by Digitall
quote: Originally posted by mers
:) это конечно некоторый выход.. но хотелось бы вот чего: вытаскиваю шейп с трафарета появляется окно: "Введите имя объекта", вводим имя, рядом с шейпом появляется текст названия объекта. Требования к тексту: при перетаскивании шейпа, текст перетаскивается тоже; выделяем шейп, выделяется только шейп, имя остается на месте; поворачиваем шейп, имя не поварачивается, остается на месте.
Сейчас, делаю это так: вытаскиваю шейп, ввожу имя, рисую рядом прямоугольник, в него вписываю имя, у прямоугольника делаю нулевые границы (он не виден), группирую эти шейп и текст, смещаю цетр полученной группы в центр шейпа.
но при таком подходе не получается нужных результатов.
Здесь необходимо разделить эту задачу на несколько более простых: 1) Вытаскиваю шейп с трафарета появляется окно: "Введите имя объекта", вводим имя, рядом с шейпом появляется текст названия объекта. 2) Требования к тексту: при перетаскивании шейпа, текст перетаскивается тоже; 3) Выделяем шейп, выделяется только шейп, имя остается на месте; 4) Поворачиваем шейп, имя не поварачивается, остается на месте.
Все это решаемо, но не одной единственной формулой. 1) Это настройка вызова окна заполнения Custom Properties. За это отвечает ячейка EventDrop. В нее надо внести =Docmd(1312) 2) Это простое нормальное поведение фигуры. 3) За это отвечает ячейка EventDblClick. Если внести в нее 0, то двойным нажатием мы только выделим фигуру, т.е. без редактирования текста. 4) Здесь можно просто внести в ячейку TxtAngle =-Angle
Соответственно дальше лишь все это сделать с помощью VB. Либо используя мой пример(просто меняя название ячейки), либо с помощью записи макроса. |
|
|
|
Topic |
|
|
|