 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Phoenix Cdt

Registrado: 24 Ago 2003Mensajes: 8
|
Publicado: Lun 08 Dic, 2003 2:28 am Asunto: Arrastar formulario, y hacer click con segundo boton |
|
|
| HOla!!!, vi su codigo de ejemplo para arrastrar un formulario desde cualquier parte del mismo, pero hace esto, el click lo recibe y lo manda como si lo hiciera en la parte de arriba, y listo, peor el problema es cuando hago click con el boton derecho(pues tengo un menú popup), pues lo manda a lo de arriba, y no sale el menú, diganme como le hago para que salga este dichoso menú, sinq uitar la cualidad de que se peuda arrastrar el formulario desde su cuerpo(el formulario que tengo tiene una imagen que le hace una especie de skin) |
|
| Volver arriba |
|
 |
_Viktor Master


Registrado: 20 Jul 2003Mensajes: 463Ubicación: Santiago, Los Angeles - Chile
|
Publicado: Mar 09 Dic, 2003 4:09 am Asunto: |
|
|
Hola, yo lo he hecho usando este codigo de _Leo:
| Código: |
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
BitmapToRgn(this, Image1);
}
//---------------------------------------------------------------------------
/// Permite arrastrar el form pulsando el botón izquierdo
// sobre cualquier parte del mismo
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
if ( Button == mbLeft )
{
ReleaseCapture();
Perform( WM_SYSCOMMAND, 0xF012, 0 );
}
}
//---------------------------------------------------------------------------
/// Da al form la forma del bitmap dado, usando como color
// transparente el de la esquina inferior izquierda
void __fastcall TForm1::BitmapToRgn(TForm *form, TImage *img)
{
form->BorderStyle = bsNone;
Graphics::TBitmap *bmp =
dynamic_cast< Graphics::TBitmap* >( img->Picture->Bitmap );
bmp->HandleType = bmDIB;
bmp->PixelFormat = pf32bit;
form->SetBounds( form->Left, form->Top, bmp->Width, bmp->Height );
img->SetBounds( 0, 0, bmp->Width, bmp->Height );
form->Brush->Bitmap = bmp;
DWORD colorTransparente =
static_cast< DWORD* >( bmp->ScanLine[bmp->Height-1] )[0];
HRGN rgn = CreateRectRgn( 0, 0, form->Width, form->Height );
HRGN rgnTemp = CreateRectRgn( 0, 0, form->Width, form->Height );
CombineRgn( rgn, rgn, rgnTemp, RGN_DIFF );
DeleteObject( rgnTemp );
for (int y=0; y < form->Height; ++y)
{
DWORD *pixel = static_cast< DWORD* >( bmp->ScanLine[y] );
int ancho = 0;
for (int x=0; x <= form->Width; ++x)
{
if ( x != form->Width && pixel[x] != colorTransparente )
ancho++;
else
if ( ancho > 0 )
{
rgnTemp = CreateRectRgn( x - ancho, y, x, y + 1 );
CombineRgn( rgn, rgn, rgnTemp, RGN_OR );
DeleteObject( rgnTemp );
ancho = 0;
}
}
}
SetWindowRgn( form->Handle, rgn, true );
DeleteObject( rgn );
}
//---------------------------------------------------------------------------
/// Cierra el form
void __fastcall TForm1::btnCerrarClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
|
Solo he asignado el PopupMenu al TImage que contiene la imagen para el "Skin"... y no me da ningun problema...
El mensaje completo de _Leo esta AQUI, donde ademas pone un zip para que te descargues el proyecto de ejemplo...
Espero te sirva y soluciones tu problema...
Saludos!!!! _________________ "Ser inteligente no es ser mas, solo equivocarse menos y no usar Visual Basic"
Atte.
Victor Yañez
Apoyen el Proyecto OpenSource del Club Builder. Ya tenemos componentes Listos!!! |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|