RUS  ENG 

Вопросы по печати карты (TMapCtrl.PrintPreviewEx).

Страницы: 1
RSS
Вопросы по печати карты (TMapCtrl.PrintPreviewEx).
 
Доброго времени суток, уважаемая техподдержка.
Для предварительного просмотра и печати карты я использую метод PrintPreviewEx. Если окно предварительного просмотра закрыть по кнопке, то все корректно отрабатывается, а если закрыть по крестику, то после этого пропадает отображение элементов в слое в памяти и карта перерисовывается только по событию(например при перемещению карты при помощи "руки").

И еще. Мне нужно при печати выводить надпись. Для этого я в слое в памяти создаю объект типа текст
перед вызовом метода PrintPreviewEx, а после вызова этого метода удаляю. Отрабатывается это так. Сначала надпись появляется, а затем, если что-нибудь делать в окне предварительного просмотра, то она исчезает и не выводится на печать. Как мне программно отслеживать закрытие окна предварительного просмотра??? Или есть альтернативный вариант вывода надписи?
Пример я выслал на указанный Вами адрес.
 
Эффект увидели. Будем разбираться.
 
Спасибо
 
Качайте обновление.
 
Спасибо еще раз за исправления. Закрытие окна по крестику отрабатываться стало корректно. Но проблема с удалением элемента после вызова PrintPreviewEx осталась.
 
Уточните какое именно удаление? Он сам пропадает или его наоборот, не удалить?
 
Мне необходимо при печати выводить текстовую надпись. Что-то типа "Маршрут автомобиля хххх с ХХХХ по ХХХХХ". Причем надпись должна быть только на бумаге - на карте после печати надписи быть не должно. Я делаю сдедующее
es := CoElemStyle.Create;
es.FontColor := clBlack;
ES.FontBackColor:=clWhite;
with MapCtrl1 do
begin
x1 := MapX + (Height-100) * MapScale / 2;
y1 := MapY - (Width-100) * MapScale / 2;
es.TextHeight := 20 * MapScale;
end;
str := 'Маршрут автомобиля '+ vt_GetKeySelAutoMark(VT)+ ' инв № ' + IntToStr(vt_GetKeySelAuto(VT))+
' с ' + FormatDateTime('dd:mm:yy', StartDate.DateTime) + ' ' + FormatDateTime('hh:nn', StartTime.DateTime) +
' по ' + FormatDateTime('dd:mm:yy', EndDate.DateTime) + ' ' + FormatDateTime('hh:nn', EndTime.DateTime);
key := lay_arc.AddText(x1,y1,str,es);

MapCtrl1.PrintPreviewEx;
lay_arc.DeleteElement(key);
Когда появляется окно предварительного просмотра, то надпись в нем видна. Если в этом окне выполнить какое-нибудь действие(например увеличить масштаб или прокрутить изображение), то надпись в окне предварительного просмотра пропадает. Независимо от того, выполняю я действие в окне предварительного просмотра или нет - на печать надпись не выводится. Т.е. текст удаляется до печати. Необходимо же его удалять после того, как фрагмент карты будет напечатан и при этом чтобы пользователь на карте эту надпись не увидел. Но тогда непонятно как отслеживать напечатан ли фрагмент карты и закрыто ли окно предварительного просмотра. И нельзя ли окно предварительного просмотра сделать модальным? Тогда, как мне кажется, проблема отпадет. Или есть альтернативное решение проблемы? Заранее спасибо.
 
PrintPreviewEx по-умолчанию включает режим предварительного просмотра и не ждет его завершения. Чтобы предварительный просмотр вызвался в модальном окне установите свойство MapCtrl.PreviewMode = 2
 
Большое спасибо. Теперь все работает как надо.
 
Добрый день у нас проблема при выводе предварительно просмотра показывает вовсе не ту часть экрана что надо. что делать подскажите
 
Если предварительный просмотр не показывает текущий вид, значит в настройках печати в качестве области печати задан не "Текущий вид", а что-то другое: печать фрагмента, по размерам слоя и т.д.
Страницы: 1