Delphi - Egyedi QuickReport komponens: táblázat megjelenítése

forráskód letöltése
Amikor QuickReport-on keretezett táblázatokat szeretnénk megjeleníteni, akkor használhatjuk ehhez a komponensek Frame property-jét, vagy a QRShape komponenst. Most egy olyan komponenst adunk közre, amely némileg megkönnyíti az ilyen táblázatok elkészítését. A mellékelt példaprogram megnyitása előtt a QRGrid.pas-ban lévő komponenst telepítenie kell a Delphi alá.

A komponens Rows és Columns property-jeiben megadhatjuk, hogy hány sorra illetve oszlopra van szükségünk. Az oszlopok egyforma szélességűek, a sorok pedig egyforma magasságúak lesznek, ezért bonyolultabb táblázatok elkészítéséhez több komponenst kell felhasználnunk. Mint a mellékelt példából is látszik, ez nem olyan bonyolult feladat. A komponens fölé tetszőleges további komponensek helyezhetők, például QRLabel vagy QRDBText. A Color és GridColor property-kkel beállíthatjuk a táblázat háttérszínét, és a rácsok színét. A Frame property-n keresztül megadhatjuk a táblázat keretének tulajdonságait.

A komponens megrajzolását a RedrawTo eljárás végzi:

Kiszámoljuk a koordinátákat, és a sorok magasságát, illetve az oszlopok szélességét. Töröljük a komponens területét a Color színnel, majd két ciklusban megrajzoljuk a függőleges és vízszintes rácsokat.
  with canv do begin
…
    FillRect(crect);
    for ix:=0 to FColumns do begin
      MoveTo(Round(x+w*ix), y);
      LineTo(Round(x+w*ix), y+ch);
    end;
    for iy:=0 to FRows do begin
      MoveTo(x,Round(y+iy*h));
      LineTo(x+cw,Round(y+iy*h));
    end;
  end;
end;