Squeak.ru - шаблоны программирования

Delphi - Excel - Добавление теней к фигурам

У меня есть электронная таблица Excel, в которой есть известная серия изображений. Мне нужно добавить тень (свойство SoftEdge) к этим изображениям. Хотя код VBA для этого прост (захвачен с помощью записи макроса), я не могу заставить работать эквивалент Delphi. Я перебираю каждое изображение, получаю дескриптор изображения, а затем устанавливаю тип SoftEdge. Я знаю, что мой дескриптор действителен, потому что я могу «MyExcelPic.Delete», и это работает. Я попытался определить MyExcelPic как OleVariant и Shape. При определении как Shape я получаю AV, при определении как OleVariant я получаю «type_ не поддерживается объектом автоматизации».

Вот соответствующий фрагмент кода...

var
MyExcelPic:  Shape;
begin
...
  for i := 1 to TotalPicCount do
  begin
     // VBA Code...
    //ActiveSheet.Shapes.Range(Array("Picture 13")).Select
    //Selection.ShapeRange.SoftEdge.Type = msoSoftEdgeType1

    MyExcelPic := ExcelCloudSheet.Shapes.Item('Picture ' + IntToStr(i));
    //MyExcelPic.Delete;
    MyExcelPic.SoftEdge.type_ :=  msoSoftEdgeType1;
  end;

Единственная странность, которую я вижу, заключается в том, что макрос Excel определяет «тип», а Delphi определяет «type_». В идеальном мире я хотел бы иметь диапазон всех фигур на листе и установить свойство SoftEdge за один проход, но на данный момент любой способ установки этого свойства великолепен...

30.11.2018

  • Я склонен использовать вариант, а не OLEVariant, но я думаю, что любой из них будет работать. Вы не можете использовать форму и не нуждаетесь в подчеркивании; 30.11.2018
  • Если вы добавите минимальный воспроизводимый пример, я смогу использовать его для публикации ответа. 30.11.2018
  • Использование Variant, похоже, сработало. Я также перешел с SoftEdge на Shadow. Сейчас работает... Отправьте как ответ, и я приму. 30.11.2018
  • Единственная странность, которую я вижу, заключается в том, что ...: Причина этого в том, что Delphi изменяет имена элементов объектов Excel, чтобы избежать конфликтов с зарезервированными словами Delphi и т. Д., Например, type, добавляя подчеркивание. Это просто для того, чтобы модуль импорта библиотеки типов был компилируемым и не имел никакого отношения к скомпилированному коду. 30.11.2018

Ответы:


1

Я использую Variant, а не OLEVariant. Вы не можете использовать Shape и не нуждаетесь в подчеркивании. Вы указали, что переключились на тень, но я не думаю, что это имеет отношение к вопросу.

Используя ваш код, это будет равносильно следующему

var
MyExcelPic:  Variant;
begin
...
  for i := 1 to TotalPicCount do
  begin
     // VBA Code...
    //ActiveSheet.Shapes.Range(Array("Picture 13")).Select
    //Selection.ShapeRange.SoftEdge.Type = msoSoftEdgeType1

    MyExcelPic := ExcelCloudSheet.Shapes.Item('Picture ' + IntToStr(i));
    //MyExcelPic.Delete;
    MyExcelPic.SoftEdge.type :=  msoSoftEdgeType1;
  end;
30.11.2018
Новые материалы

Угловая структура архитектуры
Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

«Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

Создайте API с помощью Python FastAPI
Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

Веселье с прокси-сервером JavaScript
Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...