Перейти к содержанию
Fire Monkey от А до Я

Antonyan

Пользователи
  • Постов

    68
  • Зарегистрирован

  • Посещение

  • Победитель дней

    1

Весь контент Antonyan

  1. Добрый вечер! Попробую пояснить. Переписываю свой старый проект под Win7, 8, 10 по просьбе заказчика. После раздумий - решил писать под Win на FMX. FastReport в XE7 представлен только для VCL, под FMX он отсутствует (могу ошибаться, но где то попадалось, что под FMX он существует в виде отдельного платного пакета, хотя в сети есть и ломаные. Ни то, ни другое меня не устраивает). Поэтому, для формирования отчета создал Dll, из которой успешно вызываю FR. В принципе, свой вопрос я решил, но не так как мне бы хотелось. Интересно разобраться, где и что я упустил.
  2. Проект под Win писал на FMX, для печати отчетов использую FR5, вызываемый из Dll
  3. Antonyan

    FastReport +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; begin Result := 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" Как победить эту ошибку ?
  4. Вызов конкретного топика (может кому пригодится) : ShellExecute(0, Pchar('open'),Pchar('hh.exe'),PChar(' -mapid 5 '+Extractfilepath(paramstr(0))+ 'ваш.chm'),nil,9); где, -mapid 5, команда, указывающая на вызов топика №5. Не забудьте добавить модуль ShellApi в uses С уважением.
  5. Реализовал через функцию ShellExecute , конкретно в моем примере ShellExecute(0,PChar('Open'),PChar(put + 'spravka.chm'),nil,nil,SW_SHOW); где put - путь к файлу ! Другого способа нет ?
  6. А мне что - то не помогло . Не поделитесь кодом для понимания ? при определении размера компонента делайте примерно так. tmpComponent.Width := Round(tmpComponent.Width * 0.2435); Обратите внимание на Align компонента. Т.к. если будет TAlignLayout.Top, то округление компонента не поможет, нужно округлять ширину его Parent. Возможно всё это костыльно, но мне помогает. Спасибо, попробую, отпишусь. 0.2435 - число на глаз ?
  7. Благодарю. Тоже склоняюсь в эту сторону
  8. по ссылке описание режимов я так понял Вам для виндовс, так писать надо систему, платформу, хотя на мобильных устройствах может быть несколько экранов тоже Под винду есть в VCL Screen.Monitors[0].Handle, по хэндлу с помощью winAPI можно определить все о мониторе. Я имел ввиду, что соотношение сторон указанного разрешения, не позволяет судить о том, широкоформатный монитор или нет
  9. Я попробую иначе изложить свой вопрос. Возможно, я ошибаюсь с подходом, и, быть может, коллеги по цеху, предложат иной. Ноги проблемы растут от ScaledLayout, который не учитивает aspect ratio при масшатбировании в меньшую сторону от параметров OriginWidth / OriginHeight (при масштабировании в сторону большего разрешения проблем не наблюдается). К сожалению, в моем случае режимы 800х600 и 1024х786 - вполне реальны. ПО пишется (рестайлинг) под конкретного заказчика, а там не парк, а зоопарк. Получается, если монитор широкоформатный и выбратно разрешение 1024х768 ( в дизайн-тайм OriginWidth / OriginHeight - 1366x768 ), все компоненты внутри ScaledLayout масшатибируются и отображаются вполне пропорционально, однако, если монитор "старый и квадратный", имею сплющивание по горизонтали. Разумеется, есть масса вариантов, как этого избежать, но для этого мне нужно знать, широкоформатный монитор или нет.
  10. по ссылке описание режимов я так понял Вам для виндовс, так писать надо систему, платформу, хотя на мобильных устройствах может быть несколько экранов тоже Под винду есть в VCL Screen.Monitors[0].Handle, по хэндлу с помощью winAPI можно определить все о мониторе. Пишу под винду на FMX. Буду признателен за конкретный пример.
  11. Я извиняюсь, не совсем понятно, на что Вы мне указываете
  12. Думается, надо копать в сторону получения от системы информации, какое максимальное разрешение возможно на данном мониторе, и после делать выводы о соотношении сторон. Какие мысли ?
  13. Добрый день ! Как программно узнать какой монитор используется, широкоформатный или нет ?
  14. Antonyan

    Поиск в SearchBox

    Благодарю Вас, проблема решилась
  15. Antonyan

    Поиск в SearchBox

    Вы имеете ввиду, физически скопировать этот файл в папку со своим проектом?
  16. Antonyan

    Поиск в SearchBox

    Приветствую ! Проблема в следующем. Не корректно работает поиск, несмотря на сделанные изменения см. http://fire-monkey.ru/topic/781-otklonenie-filtratciia-teksta-ne-korrektno-rab/. Текст в Item и Detail находится только тогда, когда они заполнены в нижнем регистре. Работает, но смотрится не очень.... Где поправить, чтобы поиск действительно был регистронезависимым ?
×
×
  • Создать...