Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.081 Beiträge
 
Delphi 12 Athens
 
#10

Re: Wie erkennen, ob Drucker Farb- oder Schwarzweißdrucker i

  Alt 28. Jul 2006, 15:56
Es wäre vielleicht auch mal nicht schlecht, wenn du mit einbeziehst, ob eventuell die Funktionen garkein Ergebnis (oder halt ein Falsches) zurückliefern.

Delphi-Quellcode:
Bits := GetDeviceCaps(Printer.Handle, BITSPIXEL);
Planes := GetDeviceCaps(Printer.Handle, PLANES);
If (Planes = 1) and (Bits = 1) Then Result := Monocrome
Else If (Planes = 1) and (Bits > 1) Then Result := GrayScale
Else If (Planes > 1) and (Bits > 1) Then Result := Color
Else Result := Error;
Delphi-Quellcode:
Colors := GetDeviceCaps(Printer.Handle, NUMCOLORS);
If Colors > 2 Then Result := ColorOrGrayScale
Else If Colors = 2 Then Result := Monocrome
Else Colors < 2 Then Result := Error;
Zu den Schweizern, ich weiß nicht was das mit dem >1 bei .dmColor auf sich hat, aber dort gibt es keine "Farbanzahl" ... nur DMCOLOR_COLOR, oder DMCOLOR_MONOCHROME.
MSDN-Library durchsuchenDocumentProperties > http://msdn.microsoft.com/library/de...tspol_7k1f.asp

Laut MSDN sähe es dann also so aus
Delphi-Quellcode:
Var DM: PDeviceMode;

Begin
  GetMem(DM, DocumentProperties(0, Printer.Handle, nil, nil, nil, 0));
  Try
    DocumentProperties(0, Printer.Handle, nil, DM, nil, DM_OUT_BUFFER);
    If DM1^.dmColor = DMCOLOR_COLOR Then Result := Color
    Else Result := Monocrome;
  Finally
    FreeMem(DM);
  End;
End;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat