подскажите пожалуйста, вот часть кода программы, в котором нужно считать данные из основной надписи, но почему-то выдает что не удается найти штамп, в чем может быть дело?
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;
А документ открывается?
Документ открывается
Возьмите код примера step5 из папки DELPHIAUTO.
Подскажите пожалуйста, а как мне получить 'Обозначение', 'Наименование' из штампа?
Не совсем понятно в чем проблема.
Функция вот - ksStamp::ksGetStampColumnText
В примере ..\SDK\Pascal\Delphi\step5\step55.pas вот отсюдова начинается:
begin
// В цикле будем брать все существующие графы
p := GetStampColumnText( numb ); // Получить текст ячейки
Номера ячеек нужно смотреть в настройках шаблона основной надписи. Для тех что есть в КОМПАСе Обозначение = 2, Наименование = 1