FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Ayuda para completar código:Traducción de Delphi a Builder
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::TBitmap(); //Bitmap := TBitmap.Create; //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. |
#2
|
||||
|
||||
En principio veo un error de copia:
Código:
DC.GetWindowDC(Control->Handle); Código:
DC=GetWindowDC(Control->Handle); |
#3
|
|||
|
|||
Ya lo he conseguido. Aqui dejo el código que permite obtener una imagen de una form y pegarla en otra form dentro de un control TImage:
void __fastcall TForm1::Button1Click(TObject *Sender) { //Obtenemos la imagen de la Form1 Graphics::TBitmap *BitmpPrueba = Form1->GetFormImage(); //Pegamos el Bitmap en una nueva form a través del Clipboard Clipboard()->Assign(BitmpPrueba); Form2->ImgForm1->Picture->Assign(Clipboard()); //La mostramos Form2->Show(); delete BitmpPrueba; } Todo esto lo hace al pulsar un botón que hay en la Form1, en la Form2 he colocado un TImage que ocupa todo el área de la Form, cuando pulsas el botón en la Form1, aparece la Form2 igual, en apariencia que la Form1, pero sus controles no se pueden usar, ya que son una foto. De todas maneras sigue sin servirme para imprimir mi Expediente, porque misteriosamente, el texto d los RichEdit no aparece, si el del resto de controles... a pesar de que se supone que es una captura de la imagen de la form. Gracias a todos los que han colaborado. Si a alguien se le ocurre como hacer que aparezca el texto de un RichEdit al hacer una imagen de la Form soy todo ojos. 1 Saludo. |
#4
|
|||
|
|||
He aqui la traducción a Builder del código:
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 ) Última edición por Pernorak fecha: 30-05-2007 a las 12:47:30. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
report builder para delphi 6 | karocs | Impresión | 1 | 11-06-2005 22:09:10 |
Ayuda a completar una busqueda | salvanano | SQL | 10 | 20-05-2005 20:06:56 |
datos para el codigo de barras en Report Builder 6.0 | Ricsato | Varios | 1 | 08-02-2005 13:12:02 |
Asginar datos para el codigo de barras en Report Builder 6.0 | Ricsato | Impresión | 0 | 07-02-2005 19:23:35 |
Traduccion de código | Periyo | Varios | 1 | 10-06-2003 14:09:26 |
|