• Jueves 2 de Mayo de 2024, 04:48

Autor Tema:  Impresión...  (Leído 1241 veces)

kekal

  • Nuevo Miembro
  • *
  • Mensajes: 22
    • Ver Perfil
Impresión...
« en: Viernes 14 de Enero de 2005, 16:09 »
0
Hola, necesito un poco de ayuda, resulta que hice un programa que imprime por una impresora especifica que no es la que tiene instalada windows por defecto
el programa levanta la impresora de un archivo ini
Código: Text
  1.  
  2.   /// OBTIENE EL LISTADO DE MIS IMPRESORAS DEFINIDAS
  3.   AnsiString s = Application->ExeName;
  4.   AnsiString ExePath = ExtractFilePath(s);
  5.   s=ExePath+"impresoras.ini";
  6.   Label3->Caption=s;
  7.   TIniFile* pif2 = new TIniFile(s);
  8.   Form3->Edit1->Text=pif2->ReadString("IMPRESORAS","ALBARANES",",,");
  9.   delete pif, pif2;
  10.  
  11.  

y en base a eso a la hora de sacar el quickreport
-levanta las impresoras definidas en windows
-abro mi archivo ini y veo cual es mi impresora
-comparo mi impresora con cada una de la lista (con un contador que comienza en 0)
-cuando la encuentro, el numero del contador (que es indice de impresoras)
es el que le asigno al quick report

Código: Text
  1.  
  2.         Form2->QuickRep1->PrinterSettings->PrinterIndex=result;
  3.  
  4.  

hasta aqui todo genial, hace lo que le pido.... mientras sea el PC donde estoy haciendo el programa

el problema surge, cuando previo paso por el installshield (con BDE y componente qreport incluido) lo instalo en otro PC.

sencillamente lo saca por la impresora que quiera (ni la definida, ni la por defecto de windows)

un detalle a saber, siempre es la misma impresora por la que intenta imprimir (que repito, no es la definida, ni la predeterminada por windows)

Alguna idea de que puede ser?¿

kekal

  • Nuevo Miembro
  • *
  • Mensajes: 22
    • Ver Perfil
Re: Impresión...
« Respuesta #1 en: Lunes 17 de Enero de 2005, 16:26 »
0
Bueno, ya le encontre la vuelta asi que va a quien le haya pasado algo parecido ahi va....

Bueno resulta que si usamos el TIniFile para leer las impresoras de windows nos devuleve algo asi como   \\AMDK7\\OKIPAGE=WINSPOOL,6,5
y a la hora de comparar contra las impresoras de windows, esta todo un poco para alla.
En cambio use un obj TPrinter

Código: Text
  1.  
  2. TPrinter *impre = Printer();
  3. TStringList *lista2 = new TStringList;
  4. lista2->AddStrings(impre->Printers);
  5. delete impre;
  6.  
  7.  

nos devuelve algo asi como OKIPAGE, y no todo el otro rollo
a la hora de compara

y va como un cañon

salutes