Работа со штампом

Автор Milishka, 22.05.12, 10:41:25

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

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

Milishka

подскажите пожалуйста, вот часть кода программы, в котором нужно считать данные из основной надписи, но  почему-то  выдает что не удается найти штамп, в чем может быть дело?


procedure TForm1.EditStamp;
var
  par1  : TextLineParam; // Параметры строки
  par2  : TextItemParam; // Параметры элемента строки
  numb  : Cardinal;      // Номер ячейки штампа
  p     : Reference;     // Указатель на массив текста
  count : Integer;
  count1, i, j : Integer;
  buf   : String;
begin
  // Открыть штамп на редактирование
  if ( OpenStamp > 0 ) then
  begin
    // В цикле будем брать все существующие графы
    p := GetStampColumnText( numb );       // Получить текст ячейки
    while ( p <> 0 ) do
    begin

      buf := Format( 'numb =%d', [numb] ); // Номер ячейки
      ksMessage( PChar(buf) );

      count := GetArrayCount(p);           // Количество строк
      for i := 0  to count - 1 do
      begin
        // Получить параметры строки текста
        GetArrayItem( p, i, Addr(par1), SizeOf(TextLineParam) );
        buf := Format( 'i =%d style=%d', [i, par1.style] );
        ksMessage( PChar(buf) );

        count1 := GetArrayCount( par1.pTextItem ); // Количество элементов строки
        for j := 0 to count1 - 1 do
        begin
          // Параметры элемента строки
          GetArrayItem( par1.pTextItem, j, Addr(par2), SizeOf(TextItemParam) );
          buf := Format( 'Компонента=%d h=%5.1f s=%s fontName=%s',
                       [ j, par2.font.height, par2.s, par2.font.fontName ]);
          ksMessage( PChar(buf) );
        end;
        DeleteArray( par1.pTextItem );  // Очистим массив компонент
        par1.pTextItem := 0;
      end;
      // Очистим массив текстовых строк
      DeleteArray( p );
      p := GetStampColumnText( numb );   // Получить следующий текст
    end;
    // Заменим графу 2
    ColumnNumber( 2 );
    TextLine( NEW_LINE, 0, nil, 'Графа 2' );
    // ClearStamp( 0 );  // Очистить штамп
    CloseStamp();        // Закрыть штамп
  end else
    Error ( 'Штамп не найден' );
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
OpenDoc('G:\ЛБИЮ.741124.580(Крышка).CDW');
EditStamp;
end;


Milishka

Документ открывается

Возьмите код примера step5 из папки DELPHIAUTO.

Milishka

Подскажите пожалуйста, а как мне получить 'Обозначение', 'Наименование' из штампа?

chelkar

Не совсем понятно в чем проблема.
Функция вот - ksStamp::ksGetStampColumnText

В примере ..\SDK\Pascal\Delphi\step5\step55.pas вот отсюдова начинается:
begin
    // В цикле будем брать все существующие графы
    p := GetStampColumnText( numb );       // Получить текст ячейки

Номера ячеек нужно смотреть в настройках шаблона основной надписи. Для тех что есть в КОМПАСе Обозначение = 2, Наименование = 1