Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Usar TPrinter con Builder 6 (https://www.clubdelphi.com/foros/showthread.php?t=88237)

Angel.Matilla 05-05-2015 13:17:20

Usar TPrinter con Builder 6
 
Estoy usando este código
Código PHP:

TPrinter *imp = Printer();
for(
int x=0;x<imp>Printers->Count-1;x++) 
     
ComboBox1->->Items->Add(imp->Printers->Strings[x]); 

para sacar la lista de impresoras que hay en un sistema. Si lo pongo solo en un formulario nuevo limpio compila y se ejecuta sin problema, pero si lo incluyo dentro del código de otro formulario como por ejemplo así:
Código PHP:

Query->Close();
Query->SQL->Text = "INSERT INTO 'Instalacion.db' (Etiqueta, Valor, Literal) "
                   "VALUES (:Etiqueta, :Valor, :Literal)"
;
Query->ParamByName("Etiqueta")->AsString = "Situacion";
Query->ParamByName("Valor")->AsInteger   = 99;
Query->ParamByName("Literal")->AsString  = "Baja";
try
{
     
Query->ExecSQL();
}
catch(...)
{
     return 
false;
}
TPrinter *imp = Printer();[/code]me da un error [b]E2314 Call of nonfunction[/b] en la línea del TPrinter, y según la ayuda: 

El nombre que se llama no se declara como una función.
Esto es comúnmente causado porque se declara la función de forma incorrecta o una falta de ortografía del nombre de la función.[/quote]He probado poniendo el include <Printers.hpp>, pero da lo mismo.

ecfisa 05-05-2015 16:01:03

Hola Angel.Matilla.


Te hago dos observaciones:
La primera es que podes usar Printer() de forma directa ya que devuelve una instancia global de TPrinter.
La segunda, dado que la propiedad Printers es de tipo TStrings, es sobre el modo de asignación al TComboBox.

Tu código se puede resumir a:
Código PHP:

#include <printers.hpp>

void __fastcall TForm1::FormCreate(TObject *Sender) {
  
ComboBox1->Items->Assign(Printer()->Printers);
  ...
} 

En cuanto al error que te provoca el código
Código PHP:

TPrinter* prn = Printer(); 

no lo he podido reproducir en ninguna situación.

Es decir, no me provoca inconvenientes agregarlo en cualquier form de un proyecto, ¿ Hay involucrado algún otro código que pudiera estar provocándolo ?

Saludos :)

Angel.Matilla 05-05-2015 18:17:15

Cita:

Empezado por ecfisa (Mensaje 491908)
Código PHP:

#include <printers.hpp>

void __fastcall TForm1::FormCreate(TObject *Sender) {
  
ComboBox1->Items->Assign(Printer()->Printers);
  ...
} 


Perfecto. Muchas gracias
Cita:

Empezado por ecfisa (Mensaje 491908)
En cuanto al error que te provoca el código
Código PHP:

TPrinter* prn = Printer(); 

no lo he podido reproducir en ninguna situación.

Es decir, no me provoca inconvenientes agregarlo en cualquier form de un proyecto, ¿ Hay involucrado algún otro código que pudiera estar provocándolo ?

Saludos :)

Lo del código también me sorprende a mi. En donde lo he probado lo que hay son varias ejecuciones de un TQuery normal y corriente, similares al código que he puesto. Tampoco lo entiendo yo.


La franja horaria es GMT +2. Ahora son las 13:39:26.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi