• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Размеры ячеек и столбцов в таблице

Автор dimaschig, 03.09.13, 16:41:33

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

dimaschig

Добрый день.

При создании нового чертежа и таблицы в нем, обнаружил, что невозможно изменить ширину и высоту ячеек в созданной таблице. Код, которым все это реализовано :

//-------------------------------------------------------------
function TKompas.Init(): Boolean;
var
Disp:IDispatch;
KompasAPI:IApplication;
CutDocuments:IDocuments;
Document:IKompasDocument;
Symbols2DContainer:ISymbols2DContainer;
Doc2D:IKompasDocument2D;
ViewsAndLayersManager:IViewsAndLayersManager;
Views:IViews;
View:IView;
DocTable:IDrawingTable;
DocTables:IDrawingTables;
ShFormat : ISheetFormat;
ksShFormat : ksSheetPar;
LaySheet   : ILayoutSheet;
TabRange   : ITableRange;
Table      : ITable;
CellFormat : ICellFormat;
TableCell  : ITableCell;
TextAPI    : IText;
begin


  try
    kompas:=KompasObject(GetActiveOleObject('Kompas.Application.5'));
  except
    try  kompas:=KompasObject(CreateOleObject('Kompas.Application.5'));
    except
      result:=false;
      exit
    end
  end;

  KompasHandle := kompas.ksGetHWindow;   
  kompas.Visible:=True;     

  //KompasAPI:=Disp as IApplication;
  KompasAPI := kompas.ksGetApplication7 as IApplication;
  if (KompasAPI = nil) then Exit;

  Document := KompasAPI.ActiveDocument; 
  if Assigned(Document) then       
    Document.Close(0); // close;     

  CutDocuments:=KompasAPI.Documents;
  if CutDocuments<>nil then
   begin
     //äîáàâëÿþ íîâûé äîêóìåíò
     Document:=CutDocuments.Add(ksDocumentDrawing,True);
     if Document<>nil then
      begin
         LaySheet := Document.LayoutSheets.Item[Document.LayoutSheets.Count-1]; 
        LaySheet.Format.Format := ksFormatA4;
        LaySheet.Format.VerticalOrientation := False;
        LaySheet.LayoutStyleNumber := 14;           
        LaySheet.Update;

        Doc2D:=Document as IKompasDocument2D;
        if Doc2D<>nil then
         begin
           ViewsAndLayersManager:=Doc2D.ViewsAndLayersManager;
           if ViewsAndLayersManager<>nil then
            begin
              Views:=ViewsAndLayersManager.Views;
              if Views<>nil then
               begin
                 View:=Views.View[0];
                 if View<>nil then
                  begin
                    Symbols2DContainer:= View as ISymbols2DContainer;
                    if Symbols2DContainer<>nil then
                     begin
                       DocTables:=Symbols2DContainer.DrawingTables;
                       if DocTables<>nil then
                        begin
                          DocTable:=DocTables.Add(3,7,5,20,ksTTLNotCreate);
                          if DocTable<>nil then
                          begin
                             DocTable.X:=107;
                             DocTable.Y:=20;
                             DocTable.Angle:=0;
                             DocTable.Update;
                             Table := DocTable as ITable;
                             TabRange := Table.Range[0,0,0,0] as ITableRange;
                             TabRange.CombineCells;
                             TabRange.CellsFormat.Width := 30;
                             TableCell := Table.Cell[0,0];
                             TextAPI := TableCell.Text as IText;
                             TextAPI.AddTextLine(ksTLText, StringToOleStr('111'));
                             DocTable.Update;

                             DocTable := nil;
                          end;

                          DocTables:=nil;
                        end;
                       Symbols2DContainer:=nil;
                     end;
                    View:=nil;
                  end;
                 Views:=nil;
               end;
              ViewsAndLayersManager:=nil;
            end;
           Doc2D:=nil;
         end;
        Document:=nil;
      end;
     CutDocuments:=nil;
   end;
  KompasAPI:=nil;
  Disp:=nil;
end;
//----------------------------------------------------

Более всего удивляет то, что свойства
                             TabRange.CellsFormat.TextStyle
                             TabRange.CellsFormat.ReadOnly
                             TabRange.CellsFormat.LeftEdge
работают без нареканий, нужные ячейки объединяются, текст выводится. Однако изменение свойств
TabRange.CellsFormat.Width
TabRange.CellsFormat.Height
никак не отражается на чертеже.
Прошу помощи в решении данного вопроса

03.09.13, 17:14:29 #1 Последнее редактирование: 03.09.13, 17:25:06 от Sabahs
Попробуйте получить ICellFormat от ITableCell так, как Вы делаете для текста.
+ Благодарностей: 1

Sprinter500

А как получить  ICellFormat от ITableCell ?


Sprinter500

Заработало. А вроде пробовал так и не работало. Кстати от Document2D1 больше ошибка не вылазит - все таки Дельфи криво был установлен.

А как отличить случай когда через точку надо, а когда через as ?


Sprinter500

Через API7 только редактировать объекты можно? Создать например таблицу можно? Или только классически через API5?


Sprinter500

Добрый день!
1. Заметил, что если давить на ролик мыши, то работа программы с Компасом происходит в разы быстрее. С чем это связано? Как можно то же самое сделать программно.
2. Есть ли какой то признак того что ячейка таблицы входит в объединенный в одну диапазон ячеек (объединенная ячейка)?. Что то в SDK не нашел. Может криво смотрел )))

Можно попробовать посмотреть, что вернёт ITableRange.Cells.