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

giveaway

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

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

  • Посещение

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

    1

Сообщения, опубликованные giveaway

  1. 1 час назад, Losev Andrei сказал:

    Ответ положительный, но без танцев с бубном, как я уже писал, не обошлось.

    И вдогонку вопрос - а Каталину только версия для Delphi поддерживает? А С++ нет? В описании к нему ни строчки о поддержке.

  2. В 12.12.2019 в 11:56, Losev Andrei сказал:

    Всем успехов и поменьше граблей на пустом месте :)

    Так вам удалось подружить Embarcadero  10.3.3 и Xcode 11.2.1? Под Каталину приложуха построится? А то в сети читаю гневные отзывы, что это только обещания, а в реале новый SDK не подтягивается 

  3. С нижеследующим кодом под Windows все работает нормально (при печати добавляю на канву принтера номер страницы)

    А вот в Маке вместо номера, получаю залитый черным прямоугольник. В чем ошибка?

    TRectF pgRect;
    	String numPagebuf;
    	int x1, y1, x2, y2;
    	x1 = 60;
    	y1 = Printer->PageHeight - 220;
    	x2 = Printer->PageWidth - 60;
    	y2 = Printer->PageHeight - 170;
    	pgRect.init(x1, y1, x2, y2);
    	numPagebuf = IntToStr(numPage);
    	TCanvas * canvas = Printer->Canvas;
    	canvas->BeginScene();
    	canvas->Font->Size = 90;
    	canvas->Fill->Kind = TBrushKind::Solid;
    	canvas->Stroke->Thickness = 1;
    	canvas->FillText(pgRect, numPagebuf, false, 0, TFillTextFlags(),
    	TTextAlign::Center, TTextAlign::Center);
    	canvas->EndScene();

     

  4. Дальнейшие эксперименты показали, следующее... У меня есть форма и внутри нее канва браузера. Я стал снимать скриншот не только с канвы, а со всей формы. Так вот - в данном случае скриншот не весь пустой, - на него попадают элементы управления формы (кнопки и пр.), но находящая внутри скриншота канва браузера пуста. Ощущение что отображаемые браузером html фалы не относятся к графике и не захватываются. Напоминанием попытку снять скриншот кино в видеоплеер с помощью клавиши printscreen, там тоже окно видеоплеера будет присутствовать, но его содержимое - нет.

    Напомню, что такая бага присутствует только в Маке, - в Винде скриншоты захватываются нормально.

  5. Привожу кусок кода, в котором я захватываю в скриншот то, что отображает бразуер. Под Виндой все прекрасно работает, а вот в Маке скриншоты создаются пустыми. Что может быть не правильно?
     

    TBitmap* TForm1::getScreenshotWebBrowser() {
    	TBitmap *BitmapBuffer;
    	TBitmap *bmp_Scrhot = new TBitmap;
    	// Фиксируем размер снимаемой области
    	TRectF SourceRect(0, 0, WebBrowser1->Width, WebBrowser1->Height);
    	TRect Rect_bmp(0, 0, WebBrowser1->Width, WebBrowser1->Height);
    	// Создаем временный буфер для получения скриншота
    	BitmapBuffer = new TBitmap(SourceRect.Width(), SourceRect.Height());
    	try {
    		// Переводим канву в режим отрисовки - начинаем процесс отрисовки сцены
    		if (BitmapBuffer->Canvas->BeginScene())
    			try {
    			// Говорим контролу отрисовать себя в канве нашего буфера в указанной области
    			WebBrowser1->PaintTo(BitmapBuffer->Canvas, SourceRect);
    			}
    		__finally {
    			// Завершаем процесс отрисовки, заканчивая формируемую сцену
    			BitmapBuffer->Canvas->EndScene();
    		}
    		BitmapBuffer->SaveToFile(GetHomePath() +"/screenshot1.png");
    		bmp_Scrhot->Width = Rect_bmp.Width();
    		bmp_Scrhot->Height = Rect_bmp.Height();
    		bmp_Scrhot->CopyFromBitmap(BitmapBuffer, Rect_bmp, 0, 0);
    		bmp_Scrhot->SaveToFile(GetHomePath() +"/screenshot2.png");
    	}
    	__finally {
    		delete BitmapBuffer;
    	}
    	return bmp_Scrhot;

     

  6. Строю приложение под Win и Mac OS X с использованием TWebBrowser. В Винде оно нормально открывает файлы html, в Маке же браузер не работает, - просто пустое окно даже для примитивных html файлов. Читаю в сети отзывы, и что-то не понятно по кроссплатформенности компонента. Для Мака она есть? Или надо пользоваться альтернативой?

  7. Формирую документ для печати и хочу в него добавить программно некий текст, фигуры и изображение. Вот кусок кода:

    TRectF RectF(10, 10, 30, 30);
    BitmapTmp->Canvas->DrawRect(RectF, 0, 0, AllCorners, 100);
    BitmapTmp->Canvas->FillText(RectF, ImageSel->Name, false, 1,
    TFillTextFlags() << TFillTextFlag::RightToLeft,
    // TFillTextFlags(),
    TTextAlign::Center, TTextAlign::Center);

    Прямоугольник отрисовывается нормально, а текст не отображается. Что я делаю не так?

  8. 1 час назад, slav_z сказал:

    pdf - текстовый формат данных... в простом виде, без сжатия, можно самому все сделать... при желании...

    Мне в пдфку чисто картинки надо скидывать, но с определенной версткой (две на одну страницу). Это возможно сделать без сторонних средств?

  9. 16 часов назад, slav_z сказал:

    вылет с ошибкой? какой? или вылет по return ?

    image.png.ef71cc6eea98368131bf56af0e9277e8.png

     

    Почему-то при первом запуске (нажатии кнопки Печать) строка
    if(!Printer)
              return;
    возвращает null. Хотя принтеры на компьютере есть.

    При втором нажатии код уже вдруг переходит к условию
    if(Printer->ActivePrinter->SelectDPI(1200, 1200)==false) return;

    И происходит вот такоей вылет:
    image.thumb.png.93f0b4740004c807de2367be9ab6f6b6.png

    Сама функция вот такая, если что:

    image.thumb.png.e874482a8cf77c0b5fb63f3ed341ac18.png

  10. Создаю код для вывода на печать картинки из файла. Взял за основу рабочий пример. Вот мой, немного переделанный, код

    void __fastcall TForm1::PrintImageh(TImage *ImageTmp) {
      TRectF SrcRect, DestRect;
      TPrinter *Printer = Printer;
     if(!Printer)
    		  return;
      /* Set the default DPI for the printer. The SelectDPI routine defaults
             to the closest available resolution as reported by the driver. */
    if(Printer->ActivePrinter->SelectDPI(1200, 1200)==false)   return;
      /* Set canvas filling style. */
     Printer->Canvas->Fill->Color = claBlack;
    Printer->Canvas->Fill->Kind = TBrushKind(1);
    
      /* Start printing. */
      Printer->BeginDoc();
      /* Set the Source and Destination TRects. */
      SrcRect = ImageTmp->LocalRect;
      DestRect = TRectF(0, 0, Printer->PageWidth, Printer->PageHeight);
    
      /* Print the picture on all the surface of the page and all opaque. */
      Printer->Canvas->DrawBitmap(ImageTmp->Bitmap, SrcRect, DestRect, 1);
      /* Finish the printing job. */
      Printer->EndDoc();
    }

    Происходит вылет на строке if(Printer->ActivePrinter->SelectDPI(1200, 1200)==false) return;
    Что может быть не так?

     

  11. Год назад прекрасно копилил проект под Мак в такой связке (специально сохранил):
    RADStudio-Berlin-10.1.2
    Xcode 7.3.1 с SDK 10.11.4
    Mac OS X 10.12.6 Sierra
    VMware Workstation Pro 12.5.8

    Сейчас попробовал сделать то же самое. Компилятор ошибок не выдает, но при развертывании app в самом Маке Терминал пишет:
    >dyld: Library not loaded: @rpath/bplrtl240.dylib
      Referenced from: /Users/admin/PAServer/scratch-dir/Admin-Sierra/MyApp.app/Contents/MacOS/MyApp
      Reason: image not found

    Хотя файл существует по пути Embarcadero\Studio\18.0\binosx32\bplrtl240.dylib и Embarcadero\Studio\18.0\Redist\osx32\bplrtl240.dylib

    Что пошло не так?

    Еще создал другой новый проект. Он даже построение не проходит. Вылетает куча ошибок типа E2268 Call to undefined function и E2451 Undefined symbol

    Под Винду оба проекта строятся и запускаются прекрасно.

    P.S. Я правильно понимаю что SDK при нажатии Update Local File Cache вытаскивается из подключенного Мака, из того Xcode, который там установлен?

  12. Задача такая. Использую TWebBrowser для отображения сайта на десктопе. По кнопке делаю скриншот желаемой веб-страницы. Нужно что бы снимаемые таким образом скриншоты отображались в виде миниатюр в колонке сбоку. Попадали туда один за другим. Желательно с ними там проводить некоторые операции – 1) менять порядок 2) удалять

    Какой компонент(ы) взять для такой «колонки»  в качестве контейнера? Требуется кроссплатформенность Винда/Мак. Буду признателен за идеи.

  13. Написал приложение. Все прекрасно работало, пока реальные пользователи Мак не стали жаловаться на такую ошибку.

    Приложение скачивается ими с моего сайта (не Apple Store), и если его тут же запускать из папки Downloads, то выскакивает такое окно с алертом “The specified file was not found”. Однако стоит просто перенести приложение, или на рабочий стол, или в любую другую папку, включая системные по типу Applications и т.д., то все работает замечательно. Что за ерундень в этом Маке?)) Куда копать?

    P.s. Контейнер апп содержит внутри бинарник unrar, который я использую для распаковки .rar файлов (так нужно по задумке). Может отсюда ноги растут?

    a07bb2eeeb5ecb012efecad50fb447daa023e6b8.png

  14. Решения данной проблемы так и нет? Так чтобы половина кода не переделывать? Аппликуха нормально работала на всех Маках пока не вышла High Sierra

    Я даже готов отказаться от https, в случае если юзер будет запускать мое приложение на High Sierra. Как внутри отловить условие ненайденной SSL библиотеки и отказаться от ее использования в данном случае?

  15. Напишу сюда же, дабы не создавать новую тему.

    Есть вопрос - как Mac обозначает диски? В своем приложении проверку свободного места на диске я реализовал через посыл определенной команды в терминал. Его ответ я использую для подсчета места. Но если в Windows диски обозначатся буквами, и отталкиваясь от этого я выполняю нужные калькуляции. У Мака ничего такого нет, и в итоге у меня определяется место только на том диске, с которого запущено мое приложение. А если есть другие внутренние или внешний диски – то калькуляция свободного места на них не получается… Есть идеи как это решить?

  16. 27 минут назад, Vitaldj сказал:

    Поверь мне, ничего я этого не делал (я про мак). Только загрузил две иконки. Одну ico вторую icns. И все!

    Я не знаю как все прошло. Единственное, что стоит упомянуть, я его делал еще в версии delphi XE8, потом проект протягивал через все версии постепенно. Но в иконки для мака не заглядывал больше.

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

  17. Разобрался. Почему-то мало где описан процесс создания иконок. Их надо создавать по-разному под Винду и Мак.

    1) Для Windows нужно создать квадратные картинки png с разрешениями: 16, 24, 32, 48, 256. Потом в спец.редакторе собрать их в один файл .ico
    Я пользовался IcoFX. И уже данный "многослойный" файл .ico загружается в билдере (Project->Options->Application) и подхватывается при компиляции.

    2) Для Мака также создаются png картинки, но кроме расширения нужно задать им и спец.имя:

    icon_16x16.png
    icon_16x16@2x.png
    icon_32x32.png
    icon_32x32@2x.png
    icon_128x128.png
    icon_128x128@2x.png
    icon_256x256.png
    icon_256x256@2x.png
    icon_512x512.png
    icon_512x512@2x.png

    Все эти картинки помещаются в папку <название>.iconset, которая заидывается на реальный Мак или его виртуальную инкарнацию. Там в Терминале вводим команду iconutil -c icns <название>.iconset Терминал создаст "многослойный" иконочный файл для Мака с расширением .icns

    Его тоже загружаем в билдере через Project->Options->Application. Если это не сработает, и после компиляции под Мак подцепится опять какая-то левая иконка, можно заменить этот файл .icns внутри конейнера .app Он там лежит в явном виде в папке Resources

     

  18. Создал, как полагается, иконку в формате .icns, сделал Load в Project->Options->Application, причем и для All Configurations, и для Debug, и для Release. После компиляции маленькая иконка оказывается стандартной, которую сам биледр подставляет со значком С++, а большой ярлык вообще почти пустой (Мак свой какой-то подсовывает). Скрин прилагаю. Что делаю не так? Версия под Винду иконки подхватывает норм, а Мак вот артачиться. 

    AJOe1RNJ_3c.jpg

  19. 22 минуты назад, ENERGY сказал:

    Засада конкретно в тех двух точках, где виснет программа.

    Не факт) На комп №1 поставил такую же связку как и на №2, а именно VMWare Workstation 10.0.7 и OS X Maverick 10.9 DP1 (без Xcode) и приложение стало работать без ошибок. Более того теперь на других Mac OS (Maverick 10.9.5 и Mountain Lion 10.8.3) первая точка проходится без сбоев, а вот вторая осталась.

  20. На компьютере №1 установлены:
    VMWare Workstation 10.0.7
    OS X Maverick 10.9 DP1
    Xcode 5.1.1

    На нем скомпилированное приложение .app выполняет все свои функции.

    На компьютере №2 установлены:
    VMWare Workstation 12.5.5
    OS X El Capitan 10.11.6
    OS X Maverick 10.9.5
    OS X Mountain Lion 10.8.3
    Xcode отсутствует во всех OS X

    На нем в любой из систем приложение виснет в двух одних и тех же точках.

    В чем засада? В Workstation? Как я понимаю, отсутствие Xcode не должно влиять на работу уже скомпилированного .app

     

×
×
  • Создать...