Delphi - Képes-e az aktuális nyomtató színesben nyomtatni?

forráskód letöltése
E kérdés megválaszolására keresünk megoldást, mely programból képes mindezt eldönteni. A megoldáshoz DocumentProperties függvény hívása és az általa visszaadott értékek vizsgálata szükséges.
procedure TForm1.Button1Click(Sender: TObject);
…
Első lépésként válasszuk az alapértelmezett nyomtatót, majd a GetPrinter hívásával határozzuk meg ennek alapvető tulajdonságait.
  Printer.PrinterIndex:=-1;
  Printer.GetPrinter(device, driver, port, h);
  dm1:=nil; dm2:=nil;
Ha a DocumentProperties utolsó paramétere nulla értéket kap, akkor a függvény visszatérési értéke adja meg annak a szükséges memória területnek a nagyságát, melyet le kell foglalnunk ahhoz, hogy oda átmásolhassa a függvény a kívánt adatokat.
  GetMem(dm1, DocumentProperties(0, 0, device, dm1^, dm2^, 0));
A lefoglalt memóriaterületet ezek után már átadhatjuk a DocumentProperties-nek.
  DocumentProperties(0, 0, device, dm1^, dm2^, DM_OUT_BUFFER);
A függvény futása után a dmFields értékében kell vizsgálnunk, hogy a DM_COLOR bit beállított-e vagy sem. Ez a bit határozza meg azt a kérdést, hogy a nyomtató képes-e színes nyomtatásra vagy sem.
  if dm1^.dmFields and DM_COLOR<>0 then begin
    Label1.Caption:='A színes nyomtatást támogatja a '+device;
  end else begin
    Label1.Caption:='A színes nyomtatást nem támogatja a '+device;
  end;
  FreeMem(dm1);
end;