Antonyan
-
Постов
68 -
Зарегистрирован
-
Посещение
-
Победитель дней
1
Сообщения, опубликованные Antonyan
-
-
Прошу прощения, вы указали что проект под VCL, а данных форум для FMX.
Проект под Win писал на FMX, для печати отчетов использую FR5, вызываемый из Dll
-
Добрый день, коллеги !
Неожиданно столкнулся с проблемой при использовании FastReport5 в XE7.
Суть :
Создаю отчет test.fr3, в котором в одно единственное поле из БД выводится информация об адресе.
Создаю VCL проект, кидаю на форму :
FDConnection1,
Temp: TFDQuery,
FDGUIxWaitCursor1
Далее, коннект к базе FB.
Под кнопкой пишу код:
procedure TForm3.Button2Click(Sender: TObject);
var
frxReport1 : TfrxReport;
frxDBDataset1 : TfrxDBDataset;
begin
frxReport1:=TfrxReport.Create(nil);
frxDBDataset1:=TfrxDBDataset.Create(nil);
frxDBDataset1.UserName:='Rekv';
frxDBDataset1.DataSet:=Temp;{ // В VCL - работает без этих строк, в DLL - разумеется, нет.
frxReport1.DataSets.Clear;
frxReport1.DataSets.Add(frxDBDataset1);
frxReport1.DataSet:=frxDBDataset1;
frxReport1.DataSetName:=frxDBDataset1.UserName;
}
frxReport1.LoadFromFile('e:\test.fr3');
frxReport1.ShowReport(True);
end;
Этот код работает прекрасно, отчет формируется, информация из БД присутствует в отчете. Вопросов к нему нет.
Проблемы начинаются, когда я пытаюсь использовать формирование и вызов отчета из DLL
Вызов : PrintData(MyQuery);
function PrintData(Temp: TFDQuery): Integer; stdcall;
var
frxReport1 : TfrxReport;
frxDBDataset1 : TfrxDBDataset;
beginResult := 0;
frxReport1:=TfrxReport.Create(nil);
frxDBDataset1:=TfrxDBDataset.Create(nil);
frxDBDataset1.UserName:='Rekv';
frxDBDataset1.DataSet:=Temp;
frxReport1.DataSets.Clear;
frxReport1.DataSets.Add(frxDBDataset1);
frxReport1.DataSet:=frxDBDataset1;
frxReport1.DataSetName:=frxDBDataset1.UserName;
frxReport1.LoadFromFile('e:\test.fr3');
frxReport1.ShowReport(True);end;
В итоге, отчет формируется и запускается, информация из БД присутствует в отчете, но возникает сообщение об ошибке :
Были обнаружены следующие ошибки : Memo1 : Поле не найдено : Rekv."Adress"
Как победить эту ошибку ?
-
в VCL для использования справки в формате CHM подключал модуль HtmlHelpViewer, который реализовывал IHelpSystem
Можно код для примера ?
-
-
Поддерживаю, тоже интересно
Реализовал через функцию ShellExecute , конкретно в моем примере
ShellExecute(0,PChar('Open'),PChar(put + 'spravka.chm'),nil,nil,SW_SHOW);
где put - путь к файлу !
Другого способа нет ?
-
Поддерживаю, тоже интересно
-
-
После закрытия формы, приложение остается в процессах
-
а что если взять и умножить на число Пи и красиво! и не 0.2435!
)))))))
Вам известно другое решение?
-
Большое спасибо, помогло.
А мне что - то не помогло . Не поделитесь кодом для понимания ?
при определении размера компонента делайте примерно так.
tmpComponent.Width := Round(tmpComponent.Width * 0.2435);
Обратите внимание на Align компонента. Т.к. если будет TAlignLayout.Top, то округление компонента не поможет, нужно округлять ширину его Parent.
Возможно всё это костыльно, но мне помогает.
Спасибо, попробую, отпишусь. 0.2435 - число на глаз ?
-
EnumDisplayDevice - кол-во мониторов
EnumDisplaySettingsEx - для перечисления списка видео-режимов
ChangeDisplaySettingsEx - для каждого полученного режима с флагом тестирования для проверки совместимости.
примеры в поисковике или в msdn
Благодарю. Тоже склоняюсь в эту сторону
-
вопрос был
по ссылке описание режимовА если режим 1024х768 ?
я так понял Вам для виндовс, так писать надо систему, платформу, хотя на мобильных устройствах может быть несколько экранов тоже
Под винду есть в VCL Screen.Monitors[0].Handle, по хэндлу с помощью winAPI можно определить все о мониторе.
Я имел ввиду, что соотношение сторон указанного разрешения, не позволяет судить о том, широкоформатный монитор или нет
-
я бы все-таки ушел от темы "а вдруг на мониторе FullHD выставлено разрешение 800*600"
сколько выставили, столько и монитор...
в XE7 мне пришлось через WinApi собирать инфу о мониторах, тогда в FMX еще не было аналога VCL Screen
Я попробую иначе изложить свой вопрос. Возможно, я ошибаюсь с подходом, и, быть может, коллеги по цеху, предложат иной.
Ноги проблемы растут от ScaledLayout, который не учитивает aspect ratio при масшатбировании в меньшую сторону от параметров OriginWidth / OriginHeight (при масштабировании в сторону большего разрешения проблем не наблюдается). К сожалению, в моем случае режимы 800х600 и 1024х786 - вполне реальны. ПО пишется (рестайлинг) под конкретного заказчика, а там не парк, а зоопарк. Получается, если монитор широкоформатный и выбратно разрешение 1024х768 ( в дизайн-тайм OriginWidth / OriginHeight - 1366x768 ), все компоненты внутри ScaledLayout масшатибируются и отображаются вполне пропорционально, однако, если монитор "старый и квадратный", имею сплющивание по горизонтали. Разумеется, есть масса вариантов, как этого избежать, но для этого мне нужно знать, широкоформатный монитор или нет.
-
еще и версию делфи надо бы
XE7
-
вопрос был
по ссылке описание режимов
я так понял Вам для виндовс, так писать надо систему, платформу, хотя на мобильных устройствах может быть несколько экранов тоже
Под винду есть в VCL Screen.Monitors[0].Handle, по хэндлу с помощью winAPI можно определить все о мониторе.
Пишу под винду на FMX. Буду признателен за конкретный пример.
-
Я извиняюсь, не совсем понятно, на что Вы мне указываете
-
Думается, надо копать в сторону получения от системы информации, какое максимальное разрешение возможно на данном мониторе, и после делать выводы о соотношении сторон.
Какие мысли ?
-
мдя... 16:9 - стандартный широкоформатный, ширина к высоте
А если режим 1024х768 ?
-
Screen.Size()
Каким образом это поможет?
-
Добрый день !
Как программно узнать какой монитор используется, широкоформатный или нет ?
-
Большое спасибо, помогло.
А мне что - то не помогло . Не поделитесь кодом для понимания ?
-
В указанной вами теме как раз решение проблемы. FMX.SearchBox.pas скопировать к себе в проект не забыли? А лучше установите 10ую версию студии.
Благодарю Вас, проблема решилась
-
В указанной вами теме как раз решение проблемы. FMX.SearchBox.pas скопировать к себе в проект не забыли? А лучше установите 10ую версию студии.
Вы имеете ввиду, физически скопировать этот файл в папку со своим проектом?
-
Приветствую !
Проблема в следующем. Не корректно работает поиск, несмотря на сделанные изменения см. http://fire-monkey.ru/topic/781-otklonenie-filtratciia-teksta-ne-korrektno-rab/. Текст в Item и Detail находится только тогда, когда они заполнены в нижнем регистре. Работает, но смотрится не очень.... Где поправить, чтобы поиск действительно был регистронезависимым ?
FastReport +DLL - проблема
в Вопросы
Опубликовано
Добрый вечер!
Попробую пояснить. Переписываю свой старый проект под Win7, 8, 10 по просьбе заказчика. После раздумий - решил писать под Win на FMX. FastReport в XE7 представлен только для VCL, под FMX он отсутствует (могу ошибаться, но где то попадалось, что под FMX он существует в виде отдельного платного пакета, хотя в сети есть и ломаные. Ни то, ни другое меня не устраивает). Поэтому, для формирования отчета создал Dll, из которой успешно вызываю FR. В принципе, свой вопрос я решил, но не так как мне бы хотелось. Интересно разобраться, где и что я упустил.