![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Hola.
Ese código si funciona, te lo aseguro. ![]() El ícono de prohibido lo vas a ver siempre que el cursor del mouse esté sobre la imágen ya que este componente no tiene por qué permitir ningún drop dentro de él. Seguí desplazándote hasta posicionarte en el área del ScrollBox y me contas. De todos modos, estaba pensando que si tenes mas de una imágen dentro del ScrollBox, seguramente te sea mas útil de este modo: Código:
TPoint PIni;
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
if (Shift.Contains(ssCtrl)) { /* ¿ Tecla Ctrl presionada ? */
PIni.x = X;
PIni.y = Y;
((TImage*)Sender)->BeginDrag(true);
}
}
void __fastcall TForm1::ScrollBox1DragOver(TObject *Sender,
TObject *Source, int X, int Y, TDragState State, bool &Accept)
{
Accept = Source->ClassNameIs("TImage");
}
void __fastcall TForm1::ScrollBox1DragDrop(TObject *Sender,
TObject *Source, int X, int Y)
{
((TImage*)Source)->Left = X - PIni.x;
((TImage*)Source)->Top = Y - PIni.y;
}
![]()
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 03-06-2013 a las 01:32:09. |
|
#2
|
||||
|
||||
|
Hola.
Se me ocurre otra forma de mover las imágenes dentro del ScrollBox. Pero no utilizando los eventos OnDragOver y OnDragDrop como en el código de tu primer mensaje. Por medio de aquellos, veo difícil solucionar el efecto del ícono de prohibición. Tal vez esta propuesta se ajuste mas a lo que estas buscando: Código:
bool Moving;
void __fastcall TForm1::ControlMouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
Moving = Shift.Contains(ssCtrl);
}
void __fastcall TForm1::ControlMouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
TControl *Ctrl = static_cast<TControl*>(Sender);
if (Moving) {
Ctrl->Left = X + Ctrl->Left;
Ctrl->Top = Y + Ctrl->Top;
}
}
void __fastcall TForm1::ControlMouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
Moving = false;
}
Saludos. ![]()
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 03-06-2013 a las 05:27:25. |
|
#3
|
||||
|
||||
|
Pues no se que pasa que ninguno de los que me has puesto me funciona a mi. Hay una imagen en el TImage, pulso Ctrol., hago clic sobre la imagen e intento arrastrar para que se muevan los scrolls y poder ir mostrando el resto de la imagen pero no hace absolutamente nada, solo sale el icono de prohibido y nada mas.
|
|
#4
|
||||
|
||||
|
Hola.
Te adjunto el código fuente que te sugerí en el mensaje #6 para que puedas estudiarlo con tranquilidad. (Compila y funciona correctamente en C++ Builder 6) Saludos. ![]()
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 05-06-2013 a las 17:16:08. |
|
#5
|
||||
|
||||
|
Guauuuuu, tio no se que haria yo mal, quizas es que activas alguna propiedad o algo pero tu proyecto va muy bien y solo le hice un par de cambios para que funcione mas o menos como quiero porque por ejemplo en el tuyo cuando mueves automaticamente el puntero se va a la posicion x=0, y=0 de la imagen y le quité lo de que tenga que pulsar la tecla de Ctrol y va genia pero me falta un detalle:
Código:
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TPoint *TheSpot = new TPoint;
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
bool Moving = false;
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Image1->Picture->LoadFromFile(ExtractFilePath(Application->ExeName)+
"LogoRad.bmp");
}
void __fastcall TForm1::ControlMouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
//Moving = Shift.Contains(ssCtrl);
Moving = true;
TheSpot->x = X;
TheSpot->y = Y;
}
void __fastcall TForm1::ControlMouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
TControl *Ctrl = static_cast<TControl*>(Sender);
if (Moving) {
Screen->Cursor = crCross;
Ctrl->Left = X + Ctrl->Left - TheSpot->x;
Ctrl->Top = Y + Ctrl->Top - TheSpot->y;
}
}
void __fastcall TForm1::ControlMouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
Moving = false;
Screen->Cursor = crDefault;
}
|
|
#6
|
||||
|
||||
|
He probado esto:
Código:
if((Ctrl->Left + X + Ctrl->Left - TheSpot->x < 0) || (Ctrl->Left < 0 && Ctrl->Width + Ctrl->Left - ScrollBox1->Width >= 0))
{
Ctrl->Left = X + Ctrl->Left - TheSpot->x;
}
|
|
#7
|
||||
|
||||
|
Al final lo he conseguido con esto:
Código:
void __fastcall TForm1::ControlMouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
TControl *Ctrl = static_cast<TControl*>(Sender);
if (Moving)
{
if((Ctrl->Left + X + Ctrl->Left - TheSpot->x <= 0) &&
(Ctrl->Width + Ctrl->Left + X + Ctrl->Left - TheSpot->x - ScrollBox1->Width >= 0) &&
(Ctrl->Top + Y + Ctrl->Top - TheSpot->y <= 0) &&
(Ctrl->Height + Ctrl->Top + Y + Ctrl->Top - TheSpot->y - ScrollBox1->Height >= 0))
{
Ctrl->Left = X + Ctrl->Left - TheSpot->x;
Ctrl->Top = Y + Ctrl->Top - TheSpot->y;
}
else if((Ctrl->Left + X + Ctrl->Left - TheSpot->x <= 0) &&
(Ctrl->Width + Ctrl->Left + X + Ctrl->Left - TheSpot->x - ScrollBox1->Width >= 0))
{
Ctrl->Left = X + Ctrl->Left - TheSpot->x;
}
else if((Ctrl->Top + Y + Ctrl->Top - TheSpot->y <= 0) &&
(Ctrl->Height + Ctrl->Top + Y + Ctrl->Top - TheSpot->y - ScrollBox1->Height >= 0))
{
Ctrl->Top = Y + Ctrl->Top - TheSpot->y;
}
}
}
![]() |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Pasar estructura Type de delphi a Builder.. | Novatin | C++ Builder | 4 | 31-05-2013 19:00:35 |
| pasar codigo de delphi a c++ Builder | rxaxx9 | C++ Builder | 2 | 13-05-2012 06:27:17 |
| codigo en delphi a c++ builder | zidfrid | C++ Builder | 4 | 09-07-2008 14:34:29 |
| Convertir codigo Delphi a Builder | _Willa | C++ Builder | 3 | 15-02-2008 11:37:10 |
| Cambiando el codigo de delphi a builder... | paco_galo | C++ Builder | 5 | 03-12-2007 22:14:54 |
|