За последнее время в сообществе DelphiFeeds появилось сразу несколько блогов, касающихся непосредственно FireMonkey — это блоги разработчиков из Embarcadero: Евгения Крюкова, Сергея Рощина и Ярослава Бровина, а также совсем новый интересный блог под названием «FMX, Usability & Rad Studio IDE». Так что теперь полезной, интересной и, главное, свежей информации по FireMonkey должно быть предостаточно для того, чтобы начать разбираться с новой платформой и использовать её в своих проектах. Я же решил немного отвлечься от теории, касающейся FMX и разработать какой-нибудь небольшой проектик с использованием FireMonkey 2.0, а заодно и как-то оправдать название блога. Всё-таки в последнее время статьи, появляющиеся в блоге, к Web и Internet отношение имели очень мало. Вот и появилась идея написать небольшой клиент для DelphiFeeds.ru, который бы позволял получать информацию о новых публикациях в максимально короткий срок и позволять производить те же действия, что и на сайте, т.е. — голосовать за понравившиеся статьи. Ну, а что из этой затеи вышло — читайте далее :)
Интерфейс
В начале немного про интерфейс. Здесь я не стал изобретать ничего сверхъестественного и решил использовать в разработке премиум-стиль FMX 2.0., который шел в бонус-паке к Delphi XE3. Одновременно с этим я постарался сделать так, чтобы сама программа не была слишком «нагруженной» всякими окошками, диалогами и т.д. В результате «DelphiFeeds Client» приобрел вот такой незамысловатый вид:
Пр работе над программой пришлось попутно вникать в разработку компонентов для FireMonkey и написать свой небольшой компонент для рейтинга (на рисунке он находится в статусбаре), а в остальном — все обошлось использованием того, что предоставляет FMX «из коробки»: TGrid, TImage, TComboBox’ы и т.д.
Теперь посмотрим, что и зачем нужно в программе.
Обновление списка публикаций
Первая задача, которую надо было решить — это: как получать список публикаций на DelphiFeeds? С одной стороны можно было не заморачиваясь просто «вытягивать» с сайта одну-две страницы, парсить их на предмет чего-либо необходимого и выводить результаты в таблицу. С другой — неплохо было бы иметь под рукой полный список публикаций, чтобы потом можно было, не напрягая сервер лишними запросами, организовать в программе, например, поиск публикаций или какие-либо другие манипуляции с данными, т.е. иметь небольшой задел на будущее (если оно посветит программе :)). Так как доступа к API сайта у меня не было, то в результате родилась такая схема работы с данными сайтов:
- Один раз программа проходит по всему сайту DelphiFeeds.ru и набирает базу публикаций. Всего, как Вы можете видеть на рисунке выше, на момент написания этой заметки в БД находилось 2159 публикаций. Эта база распространяется вместе с программой (не советую её терять и удалять :))
- При последующем обновлении списка публикаций парсер, в зависимости от Ваших настроек, скачивает с сайта от 1 до 5 страниц и сохраняет в БД только новые публикации.
Вот эта самая кнопка и используется для выполнения п.2 — скачивает 1-5 страниц и парсит с этих страничек публикации. Все новые публикации, как и положено, появятся в таблице в первых строках.
Кроме этого «DelphiFeeds Client» может обновлять список публикаций автоматически без Вашего участия. Время между авто-обновлениями можно установить в интервале от 5 до 60 минут. Если в результате обновления окажется, что на DelphiFeeds появились новые публикации, то программа сообщит Вам об этом.
Обновление рейтинга записей
Так как программа позволяет голосовать за те или иные публикации, то хорошо было бы иметь под рукой всегда свежую информацию о рейтинге записей. Здесь, опять же был выбор: использовать уже имеющийся парсер страничек и вытаскивать с его помощью информацию по рейтингу записи, или же написать специальный класс для обновления рейтинга. Второй вариант оказался на порядок быстрее в работе. Как происходит обновление рейтинга.
Клик по этой кнопке запускает процесс обновления рейтинга записей, видимых в данный момент в таблице. При этом программа не скачивает ничего с сайта — только отправляет небольшой, буквально в пару десятков байт POST-запрос и получает примерно такой же по объему ответ сервера. Эта операция запускается пока только вручную. Ели потребуется, то сделать авто-обновление рейтинга можно будет без проблем.
Работа со списком публикаций
Как можно видеть на рисунке ниже, в списке публикаций отображается: статус публикации в базе данных, автор публикации, дата и заголовок:
Чтобы получить аннотацию к публикации, а также выполнить необходимые операции, например, проголосовать или изменить статус для статьи надо нажать «Enter» или, если выставлена соответствующая опция в настройках, сделать двойной клик мышкой по записи в таблице. В результате откроется панель с расширенным описанием публикации:
Здесь Вы можете проголосовать за публикацию точно также как и на сайте DelphiFeeds.ru, перейти по прямой ссылке сразу на сайт автора и прочитать полный текст статьи или же изменить статус публикации. Кстати, заодно скажу пару слов и о том зачем потребовалось использование статуса. Полагаю, что все когда-либо встречали на DelphiFeeds записи, которые по тем или иным причинам, нам видеть бы совсем не хотелось. Ну, например,
Так как модерация записей на DelphiFeeds ведется вручную, то на удаление такой «левой» записи уйдет какое-то время. Другой пример — дублирование одних и тех же записей, скажем, первый вариант статьи — на русском языке, а второй — на английском. И, наконец, ссылки на несуществующие записи — опубликовал автор статью, парсер DelphiFeeds её «подхватил» вынес на главную страницу, а автор вдруг передумал и затёр запись в блоге — такое встречается редко, но тем не менее. Вот для того, чтобы такие записи можно было скрыть из списка, но, в случае необходимости, получить обратно и были введены два статуса для публикации — «Удалена» и «Опубликована». Записи со статусом «Удалена» никуда не деваются из БД, т.к. вполне возможно, что какие-то из этих записей могут пригодится в дальнейшем, например, теже английские варианты статей, но скрыть их из списка довольно просто — достаточно отжать кнопку «Показывать удаленные» и в списке останутся только опубликованные публикации, а сам список примет вот такой простенький вид:
Настройки программы
Окно настроек программы имеет следующий вид:
В принципе, пояснять здесь особенно и нечего :). В настройках Вы можете:
- Включить/отключить авто-обновление списка публикаций
- Настроить интервал времени между авто-обновлениями (5-60 минут)
- Настроить работу парсера публикаций, указав количество загружаемых за одну сессию страниц (1-5 страниц)
- Определить действие для двойного щелчка мыши по записи в списке. По умолчанию двойной щелчок открывает окно предпросмотра (расширенного описания) статьи, но Вы можете, например, настроить двойной щелчок для перехода на сайт автора.
- Сохранять настройки фильтра записей в таблице.
Справка по программе
Собственно, вся справка по программе уже расписана выше в статье :) В программе же я оставил только небольшую напоминалку по горячим клавишам, посмотреть которую можно в окне «О программе»:
В этом окне также приведена информация об использованных технологиях, даны ссылки на сайты и т.д. В общем, стандартный набор информации.
Вот пожалуй и все, что пока могу сообщить о программе «DelphiFeeds Client«. Конечно, есть ещё куда двигаться, что добавлять, улучшать и т.д., но это уже другая история =) Пока же можете скачать архив, в котором Вы найдете готовую базу по статьям с DelphiFeeds.ru и сам exe-файл программы:
Книжная полка
![]() |
Описание: Рассмотрены практические вопросы по разработке клиент-серверных приложений в среде Delphi 7 и Delphi 2005 с использованием СУБД MS SQL Server 2000, InterBase и Firebird. Приведена информация о теории построения реляционных баз данных и языке SQL. Освещены вопросы эксплуатации и администрирования СУБД.
|
![]() |
![]() |
Название: О чем не пишут в книгах по Delphi
Описание: Рассмотрены малоосвещенные вопросы программирования в Delphi. Описаны методы интеграции VCL и API. Показаны внутренние механизмы VCL и приведены примеры вмешательства в эти механизмы. Рассмотрено использование сокетов в Delphi: различные режимы их работы, особенности для протоколов TCP и UDP и др.
|
![]() |










Супер! Особенно понравился фильтр авторов. Но переход с одной строки на другую 1-2 секунды, почему так медленно? Может быть сделать настраиваемый вид и добавить панель чтения внизу, чтобы не надо было дважды кликать для чтения 2-3 строчек новости?
IL, спасибо за отзыв. По поводу перехода со строки на строку — вообще такого не наблюдаю…скролом список мотается без проблем и задержек. Единственное, что сам TGrid немного притормаживает, когда скролится большое количество строк — там все время OnGetValue вызывается. По поводу настраиваемого вида, думаю, что имеет смысл над этим подумать :)
Крутатенюшка!
P.S. Вот ты где пропадал?!
P.P.S. Просто представить себе не могу, что будет после выхода Mobile Studio.
Всеволод Леонов, вот тут вот и пропадал. Воплощал в жизнь план захвата контента с DelphiFeeds :) Теперь осталось этот план доработать напильником…
Всегда пожалуйста! На другом компьютере, гораздо менее мощным, чем первый, и с встроенным видео Intel i865G, переход со строки на строку почти незаметен, хотя грид немного подтормаживает. Зато посмотрите, как выглядит окно
Особенно надпись «Автор», не видны картинки на кнопках, вертикальная полоска чередующихся красных и зеленых пикселей слева, оставшаяся от левой же колонки при горизонтальном скроллинге. Даешь настройку шрифта, и хорошо быть иметь возможность ставить рейтинг статье прямо из клиента :)
IL, OMG! По-моему по проекту прибавилось довольно много ге…работы :) Ладно — гляну. А рейтинг статье и так из клиента выставляется — вызываете панельку с расширенным описанием и там есть рейтинг (звездочки) — голосуется точно также как и на DelphiFeeds — выбираете нужное количество звездочек и кликаете мышкой. Если в процессе голосования произойдет ошибка, то клиент об этом скажет, опять же в точности так, как это делается на DelphiFeeds, например, «Вы уже проголосовали за эту статью» и т.д.
А чего тут скажешь? Круто!
А чего без исходников? :( жалко?
Игорь, проект хоть и нацелен на благо (по)читателей delphifeeds, но содержит в исходниках некоторые моменты по работе с сайтом, которые не хотелось бы выкладывать на общее обозрение — в проекте они контролируются и я уверен, что проблем никаких с сайтом не будет, а вот если утекут исходники — не факт, что кто-нибудь не захочет «побаловаться». Да и собственно смотреть-то там особенно не на что — использованы только стандартные компоненты FireMonkey и премиум-стиль
по-честному хотелось как раз этот стиль и поиметь (:
это будет наглость попросить у вас стили с бонус-пака?
Игорь, не наглость, но и не хорошо.
прошу тогда прощения…
кстати, не могли бы на будущее, пусть далекое, написать урок по работе с видео в FM?
всё чаще вижу связь FM с бизнес приложениями..
по мне — он очень хорош для мультимедийных приложений.
но никак не могу разобраться, как можно отрисовывать свою графику на видеокадрах..
типа Sample Grabber’a что-то бы такое..
да и звук взять.. добавив в функционал тот же эквалайзер да пару стандартных DSP эффектов — для разработчников, понимающих всю структуру, мелочь.., а для популярности FM большой плюс.. для VCL сторонних библиотек, примеров очень много.. на FM даже не знаю откуда подойти..
Влад, это действительно очень нужная вещь!
Мне прям этого сильно не хватало, спасибо!
Влад, я бы ещё туда встроил
* сортировку
* «пользовательские флажки» (аналог многомерного избранного) как в мс аутлуке (типа оранжевые нужно проч., крас — интересная, …) и фильтрац.
* среднюю оценку(рейтиг)/кол. оценок в грид
* Ctrl+C в гриде
Иногда выпадает
Floating point division by zero.
Георгий, спасибо за отзыв. Как раз сейчас дорабатываю клиент согласно пожеланиям :) Настраиваемую панельку просмотре текста публикации уже сделал — заодно и над вашими «хотелками» подумаю — как их можно аккуратно прикрутить к клиенту, чтоб сильно его не перегружать разными элементами. Про Floating point division by zero не можете по-подробнее рассказать когда он выпадывает? Просто у меня клиент запущен практически постоянно и таких ошибок не встречалось пока
> P.P.S. Просто представить себе не могу, что будет после выхода Mobile Studio.
А что может быть? Если будет работать также медленно и криво, как это есть в XE2, то ничего хорошего не будет…
Vlad, нехорошо удалять комментарии, даже если они вам не нравятся…
Прогиб не защитан :(
——, Во-первых, комментарии модерируются, что вызывает определенную задержку их публикации. Спам я тут плодить не собираюсь. Во-вторых, на счет «прогиба». Прежде, чем кого-то в этом упрекать, стоило бы хотя бы нормально представиться, а то разговариавать с анонимом желание нет — он ведь, сами понимаете, хуже …. Да, и, кстати, блог — моя собственность пока ещё, поэтому что «хорошо», а что «плохо» удалять я уж решу как-нибудь без советов анонимов. Удачи :)
@——
>>А что может быть? Если будет работать также медленно и криво, как это есть в XE2, то ничего хорошего не будет…
Уважаемый, неосведомленность нужно скрывать. Хотите пообщаться — я тут.
Для начала расскажите, что у Вас работает медленно.
Влад,походу на прорисовке.
Стабильно повторяется при сворачивание и разворачивание.
+ к хотелкам ))
* Поиск по like %…%
Георгий, понятно, погоняю ещё клиент. У меня такой ошибки не возникало — попробую ещё на виртуалках проверить.
Поиск, думаю, можно будет реализовать=)
сам клиент для DelphiFeeds — круть решение!
поковырявшись в FM понял, что очень ещё сырой..
отрисовка хрен поймешь — на одном ПК нормально, на другом полосы какие-то..
шапка того же окна настроек — вместо кнопки закрыть линия горизонтальная пока мышкой не наведешь.. как буд-то со стилями где то напутано..
попробывав графику в FM пришел в уныние.
даже взять простой вывод текста на битмапе.. тяжело что ли было прикрутить к FillText кроме сплошной кисти и другие (градиент, битмап…), ту же тень тяжело что ли было прилепить..?
вообщем пока он годится для домашних «бизнес» приложений..
Игорь, я вот сейчас тоже в FMX ковыряюсь. Пока могу ответить следующее: >>отрисовка хрен поймешь — на одном ПК нормально, на другом полосы какие-то.. В бытность XE2 советовали обновить дрова видяхи :) Конечно, немного туповато быдет выглядеть просьба пользователю вместе с установкой проги ещё и дрова обновлять, но тем не менее… >>шапка того же окна настроек — вместо кнопки закрыть линия горизонтальная пока мышкой не наведешь.. как буд-то со стилями где то напутано.. Есть такое дело. Причем только когда у окна выставлено свойство BorderStyle НЕ bsSizeable. У меня сложилось впечатление, что проблема в самом стиле — то ли криво там… Подробнее »
Игорь,
А в чем сложности отрисовки текста в TBitmap?
Берете канву для TBitmap (TBitmap.Canvas) и рисуете в свое удовольствие. Канва использует свои кисти (TCanvas.Fill, TCanvas.Stroke). Поэтому как вы кисть канвы настроите, так текст у вас и отрисуется.
Ярослав, хоть вопрос адресован не ко мне, но все-таки позволю себе немного высказаться, думаю, Игорь, в случае чего, дополнит разговор.. Видимо сложность, как обычно, упирается в недостаточность «живых» примеров. Их сейчас, конечно, на много больше, чем было после выхода XE2, но тем не менее FireMonkey — это всё же молодая платформа и абсолютно другая идея нежели тот же VCL. Взять хотя бы работу со стилями — вроде и в wiki есть пример простенький и вроде как пример работает, но коснись чего-нибудь более-менее сложного — тормоза, до всего «догоняешь» самостоятельно, а это ведь не каждый может себе позволить. Хотя, признаюсь, понять… Подробнее »
Доброгр время суток!
При попытке запуска проги вылетает сообщение о ошибке
«Exception EArgumentOutOfRangeException in module DFClient.exe at 00893F28.
Argument out of Range» и программа не открывается.
Походу выход за границы массива.
Win 7 x64 Pro German. На компе так же стоит лицензионный XE2 тоже немецкий.
С уважением Михаил.
RusMikle, у меня тоже Win 7 x64. Ок, нет проблем, попробуем разобраться и к следующей версии исправить. Ошибка появляется сразу же ДО того как главное окно программы появляется?
Vlad.
Хорошо. Нет проблем. Как будет время напишу статью про графику в FireMonkey :-)
Ярослав, с удовольствием увидел бы пример отрисовки текста на битмапе использую допустим градиентную кисть.. логически должно быть так: var LRect: TRectF; begin LRect:= Image1.BoundsRect; Image1.Bitmap.Canvas.BeginScene; Image1.Bitmap.Canvas.Font.Family:=’Times New Roman’; Image1.Bitmap.Canvas.Font.Size:=50; Image1.Bitmap.Canvas.Fill.Kind := TBrushKind.bkGradient; Image1.Bitmap.Canvas.Fill.Gradient.Style:= TGradientStyle.gsLinear; Image1.Bitmap.Canvas.Fill.Gradient.StartPosition.X:= 0; Image1.Bitmap.Canvas.Fill.Gradient.StartPosition.Y:= 0; Image1.Bitmap.Canvas.Fill.Gradient.StopPosition.X:= 2; Image1.Bitmap.Canvas.Fill.Gradient.StopPosition.Y:= 2; Image1.Bitmap.Canvas.Fill.Gradient.Color := TAlphaColors.Red; Image1.Bitmap.Canvas.Fill.Gradient.Color1 := TAlphaColors.Gray; Image1.Bitmap.Canvas.FillText(LRect, ‘Delphi XE3 FM2’, false, 55, [], TTextAlign.taLeading, TTextAlign.taCenter); Image1.Bitmap.Canvas.EndScene; посмотрев FillText можно увидеть только Layout.Color := Self.Fill.Color; второй момент — есть свои алгоритмы обработки изображений.. как сейчас добраться до пикселей не понимаю.. хотя бы тот же ScanLine прикрутили бы.. видео взять.. для VideoCaptureDevice есть SampleBufferReady, а для плеера как добраться до… Подробнее »
По записи и чтению пикселей нашел только этот пример: [code] var vBitMapData : TBitmapData; vPixelColor : TAlphaColor; // Note: FireMonkey colors are different from VCL TColor x,y : Integer; begin memo1.Lines.Clear; // dump bitmap pixels if image1.Bitmap.Map(TMapAccess.maRead, vBitMapData) then // lock bitmap and get pixels begin for y := 0 to trunc(image1.Bitmap.height)-1 do // loop through image lines begin Memo1.Lines.Add('======================'); memo1.Lines.Add('Line # ' + IntToStr(Y)); Memo1.Lines.Add('======================'); for x := 0 to trunc(image1.Bitmap.width)-1 do // loop through pixels on the line begin vPixelColor := vBitmapData.GetPixel(x,y); // get the pixel colour memo1.Lines.Add( // dump pixel info to screen 'line=' + IntToStr(Y) +… Подробнее »
Alexander, спасибо!
я как раз дошел до FMX.PixelFormats
что-то радости не прибавилось (:
Игорь, 1. Доступ к пикселям TBitmap: Прямого доступа к ScanLine нету. И на это есть причина. TBitmap, в отличии от VCL, кроссплатформенный и внутренне зависит от целевой платформы. Предоставление, по умолчанию, доступа к пикселям резко сказывается на производительности TBitmap. Поэтому прямого доступа нету. Однако, этот доступ можно получить/запросить, явно указав свое намерение на это (через TBitmap.Map). Пример Александра правдив. 2. Градиентная закраска текста: Опять же. Канва — кроссплатформенная. К сожалению, на маке нету быстрой функции рендеринга закраски текста градиентной кистью (для примера GDI+, DirectWriter предоставляет такую возможность). «Быстрой» — это значит прямой закраски, а не через вспомогательные способы: Получение Path… Подробнее »
По поводу ошибки division by zero при использовании Premium style (jet.style). В Delphi XE3 создаём пустое приложение HD Firemonkey. Затем кидаем на форму stylebook и подцепляем вышеуказанный стиль (именно его). Теперь при сворачивании разворачивании окна формы будет выскакивать ошибка деления на ноль.
Скорее всего у Вас видео карта Radeon. :) У меня такая же проблема, но если на другой видео карте или даже драйвере (на ноутбуке вторая карта Intel HD), то все нормально. Проблема пока не решается никак. У меня сначала были проблемы с отрисовкой DirectX 2D, после обновления драйвера карты — с отрисовкой DirectX 3D. Можно еще поиграть константами (запрет на аппаратную обработку directx и т.п.), но тогда ошибка уйдет, а отрсовка начнет глючить. Понятно, что это ошибка драйвера, но хотелось бы, чтобы она автоматически перехватывалась… В QC регистрировал, но ответ прост — обновите видеодрайвер. Оправданием служит только то, что «проект… Подробнее »
Krasnov Anatoly, в том и дело, что на моей уже старенькой ATI Radeon 4650 этой ошибки вообще нету =) хоть новый драйвер, хоть не новый — все пашет как надо, а вот на Nvidia и более старых версиях Radeon, например как на работе — 3600 — ошибка есть. Начинаешь играться с константами — начинаются глюки с отрисовкой, появляются какие-то левые артефакты причем на всех видюшках. Короче замкнутый круг — либо оставлять стиль как есть и получать регулярно баг-репорты, либо отказываться от Direct2D и получать опять же баг-репорты о том, что окно «рисуется криво», либо отключать стилизацию рамки и получать не… Подробнее »
>>Короче идеал не достижим пока по любому :) Это я уже давно понял :) У меня на ноутбуке «идеал» только при работе с Intel HD. Про NVidia впервые от Вас услышал. У Radeon просто традиционно с драйверами были проблемы. Исходя из моего и, судя по всему, и Вашего опыта делаю неутешительный вывод о том, что проблема в самой FM, хотя Embarcadero того и не признает, отсылая к кривым драйверам. Точнее, скорее всего проблема в модулях, работающих с DX10. К сожалению их исходники закрыты и понять где именно падает невозможно. Но то, что там нет простейшей обработки исключений, мне очевидно. Access… Подробнее »
>>PS. Кстати, у меня на Radeon 6940 Ваше приложение вообще не запустилось.Висит черная рамка и белое поле внутри нее.
Эмм….вот такого финта я точно не ожидал :)))) Хотя сильно не удивляюсь. Плз выложите скрин куда-нибудь на Яндекс.Фотки — я просто хочу это увидеть своими глазами и другим заодно буду показывать со словами «Будешь использовать Radeon’ы — вот так будут выглядеть все программы!!» :))
Вот здесь можно посмотреть снимки экрана
1. Radeon — https://plus.google.com/u/0/photos/103489498231610989071/albums/5833197923917786817/5833197930648102914
2. Intel HD — https://plus.google.com/u/0/photos/103489498231610989071/albums/5833197923917786817/5833197944273628322
По поводу division by zero, интересно, на 2-м компе попробовал всё отлично, причём всё летает (тормозов при прорисовке, и скролирование нету). На 1-м обновил дрова видюхи, и всё стало тоже летать, а вот division by zero осталась ))
да на 1-м XP x32, на 2-м 7-ка x64
наоборот
Георгий, какая-то мистическая ошибка :) Серьезно — пробовал уже и на XP (виртуалке) и на Win 7 x64 всяко разно эту ошибку поймать — нету её и всё тут :)
Vlad, у меня эта ошибка на Win7 x64. А вообще это нездорово, когда работа бизнес приложений зависит от версии дров видеокарты. Нужна стабильность.
2Сергей Сидоров Да я понимаю. Не просто же так вы сказали, что есть ошибка. Мне б ещё эту ошибку воспроизвести у себя…у меня-то тоже Win 7 x64 ну и до кучи виртуалки с Mac OS и Win XP. Пробовал уже всяко разно вертеть приложение — нет ошибки и всё тут :( Даже программу почти на сутки в работе оставлял — думал, может хоть так что-нибудь всплывет. Надо сказать, впервые расстраиваюсь, когда программа НЕ ошибается :) Если ошибка всплывет я её исправлю. Кстати, я дрова видюхи вообще не обновлял уже года два — как воткнул их после покупки, так они и… Подробнее »
Vlad
У меня ошибка проявляется всегда при сворачивании/разворачивании формы. На работе рядом ещё десяток компьютеров с разными ОС — попробую на них. На следующей неделе постараюсь преодолеть лень и отписать в Embarcadero Quality Central.
2Сергей Сидоров
Сори за задержку с ответом — с хостером проблема была. По поводу ошибки я понял, что она у вас при сворачивании/разворачивании появляется, просто я ещё решил отталкиваться от идеи, что в моем коде, что-то может быть не то :)
Vlad. Да, проявляется при сворачивании/разворачивании формы. Код в пустой проект не добавлял.
2Сергей Сидоров
Эта ошибка именно на стиле Jet проявляется? Не пробовали другие стили применять?
Vlad
Пробовал и другие, но проявляется только в Jet
2Сергей Сидоров
Ок. Уже лучше, завтра попробую погонять приложение с Jet на разных компах — у меня их на работе тоже достаточно =)
Vlad, да, ошибка вылетает до того как что либо становится видно.
Доброго времени суток уважаемые Коллеги!
Наверное адресую вопрос прежде всего Ярославу, как одному из разработчиков FMX, но может быть кто-то сталкивался с аналогичной ситуацией:
В TCanvas отсутствует метод CopyRect, есть ли какой-нибудь обходной путь чтобы получить аналогичный результат?
[…] всё, что с этим связано. Во-первых, по поводу доработки клиента для DelphiFeeds.ru. Обновление в процессе, но в виду того, что работа […]
[…] несколько человек с тех самых пор, как я выложил первую версию клиента для DelphiFeeds.ru. Знаете, я бы никогда и ни за что не поверил в то, что […]