Technický článek

Technický článek: HotXLS Charts and Images: Excel Drawings in Delphi v češtině

Tato lokalizovaná verze se věnuje tématu HotXLS Charts, Images, and Drawing Objects in Delphi a bere aktualizovaný anglický článek jako technický základ pro týmy pracující s Delphi, PDF a dokumentovým softwarem

Stránka převádí aktualizovaný výchozí článek na konkrétní kontrolní body pro návrh, implementaci a ověření

Co bylo synchronizováno z anglického článku

Anglický výchozí text byl rozšířen o praktický kontext, technická rozhodnutí a konkrétní příklady, takže tato stránka funguje jako pracovní průvodce, nikoli jako krátké shrnutí

Důležité části aktualizovaného výchozího článku:

  • Nejprve použijte malé reprodukovatelné vstupní soubory
  • Názvy produktů, API, souborů a literálové hodnoty ponechte beze změny
  • Uložte výstup validátoru a informace o verzích spolu s vytvořeným vzorkem

Praktická implementační rozhodnutí

Začněte typem souboru, očekávaným výstupem a chybovým stavem, který má vidět uživatel. Potom svažte každé volání API s ověřitelným výsledkem, aby validace, logování i podpora mohly zopakovat zákaznický scénář

  • Nejprve použijte malé reprodukovatelné vstupní soubory
  • Názvy produktů, API, souborů a literálové hodnoty ponechte beze změny
  • Uložte výstup validátoru a informace o verzích spolu s vytvořeným vzorkem

Kód a body API

Ukázky kódu zůstávají beze změny, aby je vývojář mohl porovnat přímo s projekty Delphi, C++Builder a Lazarus/FPC

var
  Book: TXLSXWorkbook;
  Sheet: TXLSXWorksheet;
  Chart: TXLSXChart;
begin
  Book := TXLSXWorkbook.Create;
  try
    Sheet := Book.Sheets.Add('Sales');
    Sheet.Cells[1, 1].Value := 'Region';
    Sheet.Cells[1, 2].Value := 'Revenue';
    Sheet.Cells[2, 1].Value := 'East';
    Sheet.Cells[2, 2].Value := 1184350;
    Sheet.Cells[3, 1].Value := 'Central';
    Sheet.Cells[3, 2].Value := 902210;
    Sheet.Cells[4, 1].Value := 'West';
    Sheet.Cells[4, 2].Value := 1010675;

    // Frame anchored to rows 6..22, columns 1..8
    Chart := Sheet.AddChart(xlsxChartColumn, 'Revenue by Region', 6, 1, 22, 8);
    Chart.AddSeries('Revenue', 'Sales!$A$2:$A$4', 'Sales!$B$2:$B$4');
    Chart.ValueAxisTitle := 'USD';

    Sheet.AddImageFromFile(1, 5, 'logo.png');
    Book.SaveAs('dashboard.xlsx');
  finally
    Book.Free;
  end;
end;
var
  Book: IXLSWorkbook;
  Data, Trend: IXLSWorksheet;
  Series: array[0..0] of TXLSChartSeriesInfo;
begin
  Book := TXLSWorkbook.Create;   // interface-counted: do not Free
  Data := Book.Sheets.Add;
  Data.Name := 'Data';
  Data.Cells.Item[1, 1].Value := 'Month';
  Data.Cells.Item[1, 2].Value := 'Units';
  Data.Cells.Item[2, 1].Value := 'Apr';
  Data.Cells.Item[2, 2].Value := 1530;
  Data.Cells.Item[3, 1].Value := 'May';
  Data.Cells.Item[3, 2].Value := 1721;

  Series[0].Name := 'Units';
  Series[0].Categories := 'Data!$A$2:$A$3';
  Series[0].Values := 'Data!$B$2:$B$3';
  Trend := Book.Sheets.AddChartSheet('Trend', xlsChartTypeLine,
    'Units sold', 'Month', 'Units', Series);
  // Trend is a chart substream: never call cell methods on it

  Data.Shapes.AddTextBox('Source: ERP nightly export', 6, 1, 8, 4);
  Data.Shapes.AddPicture('approved-stamp.bmp');
  Book.SaveAs('trend.xls');
end;

Kontrola před vydáním

Výstupní soubor ověřte stejnými nástroji, jaké použije zákazník nebo archiv. Zaznamenejte verzi komponenty, testovací data, verzi validátoru a pozorovaný výsledek, aby šla pozdější regrese přesně dohledat

Doplňující technický rozbor

Tento rozšířený oddíl navazuje na článek Technický článek: HotXLS Charts and Images: Excel Drawings in Delphi v češtině a záměrně rozebírá stejný pracovní tok z pohledu týmu, který potřebuje mít jistotu, že rozhodnutí v generátoru, validátoru i v provozním logu zůstanou dohledatelné i po delší době. Anglický základ na navazující stránce přes hreflang ukazuje, proč není dostačující jen přeložit nadpisy; důležité je rozvést důvody, proč se má soubor považovat za hotový až ve chvíli, kdy jsou pravidla, výstup i kontrolní záznamy skutečně sladěné

U implementačních článků je klíčové oddělit návrh od ověření. Nejprve se určí typ souboru, očekávané chování a chyba, která má být vidět, potom se každé API volání sváže s výsledkem, který lze ověřit ve stejném scénáři znovu. To je praktické u PDF i tabulkových procesorů: kódové ukázky zůstávají beze změny, ale okolní text musí vysvětlit, proč se má logovat verze komponenty, identifikace šablony, vstupní data a stav validace spolu

Stejně důležité je zachovat pojmenování produktů, API, souborů a literálových hodnot přesně tak, jak se objevují v anglickém zdroji. Tím se drží společný referenční rámec pro vývoj, support i kontrolu kvality a zmenšuje se riziko, že by se z lokální verze stala jen volná parafráze bez konkrétního technického obsahu. Pokud je v článku uveden kód, jeho komentáře i tokeny mají zůstat nedotčené, protože právě ty spojují text s reálným projektem

Při čtení této stránky je užitečné přemýšlet i o tom, jak bude článek použit po zveřejnění. Dobrá validační poznámka popíše, co se testovalo, jaký nástroj vyhodnotil výsledek, které verze byly zapojené a kde je uložený důkaz o shodě nebo o selhání. Když později vznikne regresní problém, archivovaný report a související vstupní soubor jsou mnohem cennější než samotný dojem, že „to tehdy prošlo“.

Pro tuto lokalizovanou větev tedy platí jednoduché pravidlo: udržet hlavní rozhodnutí, ověřovací body a kontext kódu pohromadě tak, aby článek zůstal použitelný nejen při prvním čtení, ale i při pozdějším ladění, auditu a porovnání mezi verzemi. To je rozdíl mezi krátkým shrnutím a pracovním dokumentem, který má hodnotu i po několika releasích.

  • Nejprve použijte malé reprodukovatelné vstupní soubory
  • Názvy produktů, API, souborů a literálové hodnoty ponechte beze změny
  • Ukládejte verzi komponenty, výsledky validátoru i vstupní data společně
  • Kódové bloky a jejich komentáře zachovejte přesně tak, jak jsou ve zdroji

Související čtení