PDA

Ver la Versión Completa : Usar TPrinter con Builder 6


Angel.Matilla
05-05-2015, 13:17:20
Estoy usando este código

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í:

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 E2314 Call of nonfunction 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:

#include <printers.hpp>

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

En cuanto al error que te provoca el código
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
#include <printers.hpp>

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

Perfecto. Muchas gracias
En cuanto al error que te provoca el código
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.