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 26-03-2017
Snaked Snaked is offline
Baneado
 
Registrado: Sep 2016
Posts: 102
Poder: 0
Snaked Va por buen camino
mover ScrollBox para centrar un TImage en pantalla

hola ecfisa....que tal.....como va todo???

tengo una dudilla aqui a ver si me echas un cable....

te explico...tengo un TImage sobre un ScrollBox y cuando pulso las teclas de cursores, pinto un Cursor sobre el timage mediante Canvas->Draw() la cuestion es que el TImage es mas grande que la zona que se ve en pantalla y queria que cuando el cursor que pinto, alcance el ancho dado, el Scrollbox se desplace un trozo para que el cursor no desaparezca por el borde del limite del ancho de la imagen

un saludo y gracias

el codigo que tengo ahora es este pero se que no esta bien, el caso es que me he levantado hace poco y aun estoy "espeso" en cuanto a pensar un poco en ello jejejej

Cita:
if(MAP_CURSORX * 32 >987) sScrollBox1->ScrollBy(800, 0);
if(MAP_CURSORY * 32 >292) sScrollBox1->ScrollBy(0, 290);
Form1->Image1->Canvas->Draw(MAP_CURSORX * 32, MAP_CURSORY * 32, Form2->Image2->Picture->Graphic);

Última edición por Snaked fecha: 26-03-2017 a las 12:54:35.
Responder Con Cita
  #2  
Antiguo 28-03-2017
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: Dec 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.114
Poder: 30
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Contestando al título, para centrar un TImage en un TScrollBox podes hacer:
Código PHP:
...
  
Image->Left = ( ScrollBox->Width  Image->Width  ) / 2;
  
Image->Top  = ( ScrollBox->Height Image->Height ) / 2
Y si entendí bién la consulta del mensaje, lo haría al modo de este ejemplo:
Código PHP:
// (valores a tu gusto)
TPoint pos = (Point)( 11);
int inc    10;

void __fastcall TForm1::FormCreate(TObject *Sender)
{
  
Image2->Left pos.x;
  
Image2->Top  pos.y;
}

void __fastcall TForm1::FormKeyDown(TObject *SenderWORD &Key,
      
TShiftState Shift)
{
  
TRect sbr ScrollBox1->ClientRect// rect. cliente

  // tratamiento de teclas
  
switch ( Key ) {
   case 
VK_LEFT  pos.-= inc; break;
   case 
VK_RIGHT pos.+= inc; break;
   case 
VK_UP    pos.-= inc; break;
   case 
VK_DOWN  pos.+= inc; break;
  }

  
// desplazamiento horizontal
  
if ( pos.) {
    
ScrollBox1->ScrollByinc);
    
pos.0;
  }

  if ( 
pos.Image2->Width sbr.right ) {
    
ScrollBox1->ScrollBy( -inc);
    
pos.sbr.right GetSystemMetricsSM_CXHSCROLL ) + 2;
  }

  
// desplazamiento vertical
  
if ( pos.0) {
    
ScrollBox1->ScrollBy0inc );
    
pos.0;
  }

  if ( 
pos.Image2->Height sbr.bottom ) {
    
ScrollBox1->ScrollBy0, -inc );
    
pos.sbr.Bottom GetSystemMetricsSM_CXVSCROLL ) + 2;
  }

  
Image2->Left pos.x;
  
Image2->Top  pos.y;

Resultado:



Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 29-03-2017
Snaked Snaked is offline
Baneado
 
Registrado: Sep 2016
Posts: 102
Poder: 0
Snaked Va por buen camino
oye gracias hombre...... lo estaba haciendo de una manera similar aunque no tan sencilla como tu la has hecho

muchas gracias.....voy a probarlo a ver que tal funciona

Responder Con Cita
  #4  
Antiguo 29-03-2017
Snaked Snaked is offline
Baneado
 
Registrado: Sep 2016
Posts: 102
Poder: 0
Snaked Va por buen camino
pues no me funciona correctamente ecfisa......
Responder Con Cita
  #5  
Antiguo 30-03-2017
Snaked Snaked is offline
Baneado
 
Registrado: Sep 2016
Posts: 102
Poder: 0
Snaked Va por buen camino
mira ecfisa... yo lo estoy haciendo asi de esta manera para controlar los desplazamientos del Scrollbox

moveticks y paginas son variables int globales

al principio pongo el cursor del raton encima de las barras del Scrollbox para que actualice inmediatamente si se produce la condicion

el área de visualizacion en pantalla de la imagen es de unos 960x290 pixeles asi que si quiero ver mas imagen es cuando hago esto en el Form1 evento KeyDown

Código PHP:
  SetCursorPos(20325);
  switch(
Key)
  {
    case 
VK_UP:
                
moveticks_y -= 1;
                if(
moveticks_y 0moveticks_y 0;
                if(
ceil(moveticks_y 8) > 1)
                 {
                  
sScrollBox1->VertScrollBar->Position 290 pagina_y;
                 }
                 else { 
sScrollBox1->VertScrollBar->Position 0; }
          
//ShowMessage("UP");
    
break;

    case 
VK_DOWN:
                
moveticks_y += 1;
                if(
moveticks_y Image1->Height 32moveticks_y Image1->Height 32;
                if(
ceil(moveticks_y 8) > 1)
                 {
                  
sScrollBox1->VertScrollBar->Position 290 pagina_y;
                 }
                 else { 
sScrollBox1->VertScrollBar->Position 0; }
          
//ShowMessage("DOWN");
    
break;

    case 
VK_LEFT:
                
moveticks_x -= 1;
                if(
moveticks_x 0moveticks_x 0;
                if(
ceil(moveticks_x 29) > 1)
                 {
                  
sScrollBox1->VertScrollBar->Position 960 pagina_x;
                 }
                 else { 
sScrollBox1->VertScrollBar->Position 0; }
          
//ShowMessage("LEFT");
    
break;

    case 
VK_RIGHT:
                
moveticks_x += 1;
                if(
moveticks_y Image1->Width 32moveticks_y Image1->Width 32;
                if(
ceil(moveticks_x 29) > 1)
                 {
                  
sScrollBox1->VertScrollBar->Position 960 pagina_x;
                 }
                 else { 
sScrollBox1->VertScrollBar->Position 0; }
          
//ShowMessage("RIGHT");
    
break;


  } 

Última edición por Snaked fecha: 30-03-2017 a las 18:10:22.
Responder Con Cita
  #6  
Antiguo 30-03-2017
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: Dec 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.114
Poder: 30
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.
Cita:
Empezado por Snaked Ver Mensaje
pues no me funciona correctamente ecfisa......
Que extraño... como te muestro en la animación, me funciona correctamente. Te adjunto los archivos fuente para que los revises y pruebes con tranquilidad.

Ejecuté tu código, pero no desplaza la imágen en absoluto.

Saludos
Archivos Adjuntos
Tipo de Archivo: zip Snaked.zip (2,41 MB, 1 visitas)
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 31-03-2017
Snaked Snaked is offline
Baneado
 
Registrado: Sep 2016
Posts: 102
Poder: 0
Snaked Va por buen camino
gracias ecfisa.... mañana lo revisare y lo adaptaré al codigo a ver si funciona

mira el ejemplo de Wifi Detection que he puesto en el foro
Responder Con Cita
  #8  
Antiguo 31-03-2017
Snaked Snaked is offline
Baneado
 
Registrado: Sep 2016
Posts: 102
Poder: 0
Snaked Va por buen camino
por alguna misteriosa razon que no logro comprender (creo que es el GetSystemmetrics ese) cuando me salgo del borde de la imagen.....la imagen cursor se me descuadra de la rejilla virtual de 32x32 pixeles y pinto los graficos descuadrados .....

necesito que el cursor se mueva 32 pixeles en cada movimiento de las flechas pero que no se descuadre ecfisa

a ver si me echas una mano, el scroll ya lo hace bien
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
centrar timage en una form JXJ Varios 4 05-10-2017 23:51:30
Ajustar (Stretch) & Centrar Imagen En TImage Dentro de ScrollBox Beaker_ Gráficos 3 22-05-2012 17:36:57
Como centrar una imagen en un timage con un click The_Duke Gráficos 3 24-11-2008 02:07:03
Mover un TImage por la pantalla islu Gráficos 0 01-09-2004 14:00:54
Centrar en pantalla Gorehide Varios 3 09-07-2004 11:59:28


La franja horaria es GMT +2. Ahora son las 19:55:10.


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