• Viernes 8 de Noviembre de 2024, 19:39

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Pernorak

Páginas: [1]
1
C++ Builder / Re: Convertir Un Form Junto Con Sus Controles En Una I
« en: Miércoles 30 de Mayo de 2007, 14:12 »
Hola, ya lo he resuelto. Para ello he tenido que usar funciones de la API de Windows.

Si quereis ver el código os remito a mi ultimo post del hilo:

"Ayuda Para Completar Código. Uso De Bitmap, Traducción de Delphi a Builder C++"

2
C++ Builder / Re: Ayuda Para Completar Código. Uso De Bitmap
« en: Miércoles 30 de Mayo de 2007, 14:09 »
void TForm1::SaveControlImage(TWinControl *Control, AnsiString FileName){
//Creamos el componente Bitmap HDC DC; //Para manejar el Handle
Graphics::TBitmap *BitmpPrueba = new Graphics::TBitmap(); //Bitmap := TBitmap.Create;
try{
BitmpPrueba->Width = Control->Width;
BitmpPrueba->Height = Control->Height;

DC = GetWindowDC(Control->Handle); //ASi muestra toda la ventana
BitBlt(BitmpPrueba->Canvas->Handle, 0, 0, Control->Width, Control->Height, DC, 0, 0, SRCCOPY);
ReleaseDC(Control->Handle, DC); //para que devuelva el control al programa
BitmpPrueba->SaveToFile(FileName);
}
__finally{
delete BitmpPrueba;
}
}

Como pueden ver es practicamente igual a como se haría en Delphi.Con este código pueden obtener la imagen de cualquier ventana, ó control que se le pase como parámetro. Muy útil a la hora de imprimir el texto de un RichEdit, creanme. (Gracias roman  )

Weps84 gracias por la sugerencia, probé varias cosas similares y no funcionó.
1 Saludo!  :hola:

3
C++ Builder / Re: Impresión De Una Ficha Con Trichedit Entre Otros
« en: Miércoles 30 de Mayo de 2007, 14:04 »
B)  Despues de mucho currar y pensar en caminos alternativos, he logrado la impresión de una Form con controles RichEdit (entre otros..) de la siguiente manera:

1ª) Crear una imagen de la ficha que pretendes imprimir. Lo que he hecho es copiar mi ficha de la Aplicación en otra, cambiar su color de fondo a Blanco, quitar efectos de 3d de algunos controles, etc.. vamos en definitiva lo que he considerado necesario para que la copia de esta form sea lo que yo quiero que se imprima.

2º) Impresión de la ficha que he preparado: Como la función Print() fallaba me ingenié el siguiente camino alternativo:
2.1.- Crear una imagen de la ficha (Bitmap)-> Ver un hilo que abrí a tal efecto.
2.2.- Crear una tercera ficha en la que se incluya un control Image que ocupe todo el area cliente de la nueva ficha
2.3.- Cargar en dicho control el Bitmap
2.4.- Imprimir esta tercera ficha usando la función Print():
Form3->Print();

 :kicking: Os puedo asegurar que funciona.  

Nota: Yo en vez de usar el Bitmap directamente, lo que hago es guardarlo en un fichero.bmp, luego para cargar el fichero en el control image uso:
Form3->Image->Picture->LoadFromFile("C:\ImagenForm2.bmp");
Pero es mejor cargar directamente el Bitmap en el control Image, ahorrándote el proceso de guarda/carga en fichero.bmp. Para hacerlo de esta manera usar esta instrucción:
Form3->Image->Picture->Bitmap->Assign(Bitmap);

Pd-> Agradecimientos a todos aquellos que han hecho posible que siga avanzando con el proyecto.
1 Saludo. :)

4
Delphi / Ayuda Para Completar Código. Uso De Bitmap
« en: Martes 29 de Mayo de 2007, 14:07 »
Hola tengo el siguiente código que lo que hace es:
1º) copiar la imagen de la ficha Form1 en un componente Bitmap y
2º) pega dicha imagen en la ficha Form2

//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//Creamos el componente Bitmap
Graphics::TBitmap *BitmpPrueba = new Graphics::TBitma();  
//Copiamos la imagen de la Form en un Bitmap
CopyControlImage(Form1, BitmpPrueba); //Tb se podría poner Screen->ActiveForm
//Dibujamos el Bitmap en una nueva form
Form2->Canvas->Draw(0,0,BitmpPrueba);
//La mostramos
Form2->Show();

delete BitmpPrueba;
}

- Aqui está el código del Procedimiento que copia la imagen de la Form1 a un Bitmap:

//DESCRIPICION: Se pretende capturar en un BitMap un control cualquiera que se le pasa como parámetro.
void TForm1::CopyControlImage(TWinControl *Control,Graphics::TBitmap * BitmpPrueba){
HDC DC; //Pasar de Delphi a Builder C++ --> esto para que sirve???
//Ajustamos las dimensiones del bitmap BitmpPrueba a las del Control
BitmpPrueba->Width = Control->Width;
BitmpPrueba->Height = Control->Height;
//Copia de la imagen de la Form en el control Bitmap BitmpPrueba
//--------------------------------------------------------------------
Pasar de Delphi a Builder C++ estas instrucciones
DC.GetWindowDC(Control->Handle);
BitBlt(BitmpPrueba->Canvas->Handle, 0, 0, Control->Width, Control->Height, DC, 0, 0, SRCCOPY);
ReleaseDC(Control->Handle, DC);

//--------------------------------------------------------------------
}

- Lo que no sé es como realizar la copia de la imagen de la Form1 al Bitmap, este código al parecer lo puede hacer, pero está en Delphi. Si alguien sabe un equivalente a este código para Builder C++ le estaría muy agradecido.
1 Saludo. :wink:

5
C++ Builder / Ayuda Para Completar Código. Uso De Bitmap
« en: Martes 29 de Mayo de 2007, 14:05 »
Hola tengo el siguiente código que lo que hace es:
1º) copiar la imagen de la ficha Form1 en un componente Bitmap y
2º) pega dicha imagen en la ficha Form2

//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//Creamos el componente Bitmap
Graphics::TBitmap *BitmpPrueba = new Graphics::TBitma();  
//Copiamos la imagen de la Form en un Bitmap
CopyControlImage(Form1, BitmpPrueba); //Tb se podría poner Screen->ActiveForm
//Dibujamos el Bitmap en una nueva form
Form2->Canvas->Draw(0,0,BitmpPrueba);
//La mostramos
Form2->Show();

delete BitmpPrueba;
}

- Aqui está el código del Procedimiento que copia la imagen de la Form1 a un Bitmap:

//DESCRIPICION: Se pretende capturar en un BitMap un control cualquiera que se le pasa como parámetro.
void TForm1::CopyControlImage(TWinControl *Control,Graphics::TBitmap * BitmpPrueba){
HDC DC; //Pasar de Delphi a Builder C++ --> esto para que sirve???
//Ajustamos las dimensiones del bitmap BitmpPrueba a las del Control
BitmpPrueba->Width = Control->Width;
BitmpPrueba->Height = Control->Height;
//Copia de la imagen de la Form en el control Bitmap BitmpPrueba
//--------------------------------------------------------------------
Pasar de Delphi a Builder C++ estas instrucciones
DC.GetWindowDC(Control->Handle);
BitBlt(BitmpPrueba->Canvas->Handle, 0, 0, Control->Width, Control->Height, DC, 0, 0, SRCCOPY);
ReleaseDC(Control->Handle, DC);

//--------------------------------------------------------------------
}

- Lo que no sé es como realizar la copia de la imagen de la Form1 al Bitmap, este código al parecer lo puede hacer, pero está en Delphi. Si alguien sabe un equivalente a este código para Builder C++ le estaría muy agradecido.
1 Saludo.  :hola:

6
C++ Builder / Re: Convertir Un Form Junto Con Sus Controles En Una I
« en: Martes 29 de Mayo de 2007, 12:02 »
Ok, Max_D echaré un vistazo a la clase Screen a ver si me sirve. Gracias
1 Saludo. :hola:

7
C++ Builder / Convertir Un Form Junto Con Sus Controles En Una I
« en: Lunes 28 de Mayo de 2007, 19:30 »
Hola me preguntaba si es posible convertir una form junto con sus controles TLabel, TEdit, ... etc.. en una imagen, de manera que en esa imagen tengamos la "foto" de la Form.

¿Se puede generalizar para cualquier control? Es decir, se puede tener la imagen (Bitmap ó similar) de un control cualquiera.

1 Saludo

8
C++ Builder / Impresión De Una Ficha Con Trichedit Entre Otros
« en: Domingo 27 de Mayo de 2007, 18:48 »
Hola, soy nuevo aqui espero poder ayudarles y que ustedes lo puedan conmigo. Sin más comienzo con la descripción de mi problema:
-PROBLEMA: Tengo una ficha que contiene varios controles TEdit, TRichEdit, etc.. y algunos gráficos (TImage) y quiero imprimirla

INTENTOS REALIZADOS:
1º) He usado el método
Print() con el que cuenta la ficha, pero al imprimir no se muestra el contenido de los controles TRichEdit.
2º) He probado a usar el método Print() del TRichEdit junto con el anterior, pero lo que hace es imprimir la ficha con los TRichEdit vacios, y a continuación, en una hoja distinta el contenido del TRichEdit.

- Estoy con el Proyecto Fin de Carrera, y despues de hacer todo el programa, este escollo me tiene retenido, les agradecería si me pudiesen echar una mano.
1 Saludo desde Almería  :hola:

Páginas: [1]