Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-05-2007
Pernorak Pernorak is offline
Miembro
 
Registrado: may 2007
Posts: 13
Poder: 0
Pernorak Va por buen camino
Question 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.
Responder Con Cita
  #2  
Antiguo 29-05-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
En principio veo un error de copia:
Código:
DC.GetWindowDC(Control->Handle);
Cuando debería ser:
Código:
DC=GetWindowDC(Control->Handle);
Responder Con Cita
  #3  
Antiguo 29-05-2007
Pernorak Pernorak is offline
Miembro
 
Registrado: may 2007
Posts: 13
Poder: 0
Pernorak Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 30-05-2007
Pernorak Pernorak is offline
Miembro
 
Registrado: may 2007
Posts: 13
Poder: 0
Pernorak Va por buen camino
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 13:47:30.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
report builder para delphi 6 karocs Impresión 1 11-06-2005 23:09:10
Ayuda a completar una busqueda salvanano SQL 10 20-05-2005 21:06:56
datos para el codigo de barras en Report Builder 6.0 Ricsato Varios 1 08-02-2005 14:12:02
Asginar datos para el codigo de barras en Report Builder 6.0 Ricsato Impresión 0 07-02-2005 20:23:35
Traduccion de código Periyo Varios 1 10-06-2003 15:09:26


La franja horaria es GMT +2. Ahora son las 14:51:10.


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