Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-06-2005
Javi2 Javi2 is offline
Miembro
 
Registrado: jun 2004
Posts: 152
Poder: 20
Javi2 Va por buen camino
Como poner el cursor al inicio de un TMemo

Hola, tengo un Memo que se va cargando dinámicamente con distinta información dependiendo del artículo seleccionando. El problema es que cuando selecciono un artículo que tiene muchas líneas de información y no caben todas en la parte de memo visible, se queda visualizando la última parte de la información ya que el scrollbar se ha ido desplazando hacia abajo conforme he añadido la información.

¿ Cómo puedo hacer para que una vez cargada la información, me la muestre desde el principio (de manera que el texto que no se vea sean las últimas líneas) ?

He probado con la propiedad SelectStart pero como el MEmo no tiene el foco (y no quiero que lo tenga) no me hace ni caso.

Gracias.
Responder Con Cita
  #2  
Antiguo 22-06-2005
rK-Neo rK-Neo is offline
Miembro
 
Registrado: may 2005
Ubicación: Ecija
Posts: 41
Poder: 0
rK-Neo Va por buen camino
y pq no le pones el foco al memo, aces el Memo1.SelStart y dspues l pasas el foco a lo k tu kieras...
__________________
rK 4ever
Responder Con Cita
  #3  
Antiguo 22-06-2005
Javi2 Javi2 is offline
Miembro
 
Registrado: jun 2004
Posts: 152
Poder: 20
Javi2 Va por buen camino
Es que el problema es que la lista de artículos los tengo en un Grid y la información en el Memo la muestro a partir de la línea del Grid seleccionada. ¿Al darle el foco al Memo y después volverselo a dar al Grid me seleccionara la misma fila que tenía antes? ¿Cómo puedo hacer esto?
Responder Con Cita
  #4  
Antiguo 22-06-2005
Avatar de hermes_32
hermes_32 hermes_32 is offline
Miembro
 
Registrado: jul 2003
Posts: 94
Poder: 21
hermes_32 Va por buen camino
Hola Javi2,

sería mejor si utilizases un RichEdit.

Un saludo
__________________
Hay gente que esta demasiado educada para hablar con la boca llena pero no les importa hacerlo con la cabeza hueca.
Responder Con Cita
  #5  
Antiguo 22-06-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Prueba con algo así:

Código Delphi [-]
   Memo.Lines.BeginUpdate;
   Memo.Lines.Add('una nueva línea');
   Memo.Lines.EndUpdate;

Consigues, en efecto, lo que precisas: también puedes conseguirlo si en lugar de añadir "strings" al Memo añades "TStrings".
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 22-06-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Aquí el problema no está en si el memo tiene o no el foco. SelStart := 0 realmente pone el cursor en el primer caracter como podrás comprobar si después la instrucción cambias el foco al memo (no con el ratón sino con TAB) y oprimes la tecla de movimiento a la derecha. En ese momento las líneas del memo se desplazan para reflejar la posición del cursor.

El problema está justamente en que la sola instrucción SelStart := 0 no desplaza las líneas.

Pon

Memo1.Perform(EM_SCROLLCARET, 0, 0);

después de SelStart y obtendrás lo que quieres.

Nota BeginUpdate y EndUpdate no ayudan para este problema específico. Estas instrucciones sirven para que los cambios en las líneas del memo no se visualicen sino hasta que terminen de adicionarse todas. Pero aún así, el cursor termina al final del memo.

// Saludos

Última edición por roman fecha: 22-06-2005 a las 16:20:30.
Responder Con Cita
  #7  
Antiguo 22-06-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

roman, lo que yo creo que ocurre es que la pregunta está mal formulada, porque, no es lo mismo:

Cita:
Como poner el cursor al inicio de un TMemo
Que...

Cita:
¿Cómo puedo hacer para que una vez cargada la información, me la muestre desde el principio (de manera que el texto que no se vea sean las últimas líneas)?
No está diciendo nada del cursor, ni de la posición del cursor... de hecho el problema estaba en que no se mostraran las últimas líneas añadidas, sino las primeras... Es por eso que no puedo estar de acuerdo contigo.

Quiero decir, que, aunque tu solución pueda ser más acertada, en este caso, precisamente, el uso de BeginUpdate y EndUpdate parecen servir, puesto que cumplen con el objetivo, que no es situar el cursor al inicio del Memo, pero que se vean sus primeras líneas, y no las últimas añadidas.

O sea. Uno va añadiendo líneas al Memo, y la ScrollBar se va desplazando según es menester para mostrar las últimas líneas... no se trata, pues, de poner el cursor al inicio del Memo, sino de evitar este comportamiento...

En todo caso creo que el compañero podrá solucionar el problema siguiendo alguna de las indicaciones que se le han ofrecido aquí.

¿Eh? ¿Qué te parece roman?
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 22-06-2005 a las 16:43:47. Razón: (corrección del texto)
Responder Con Cita
  #8  
Antiguo 22-06-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Tienes razón. Las líneas no se desplazan y quizá esto le baste aun cuando el cursor sí que queda al final y apenas quiera moverse por el memo se desplazará hasta el final.

// Saludos
Responder Con Cita
  #9  
Antiguo 22-06-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por dec
No está diciendo nada del cursor, ni de la posición del cursor...
Je, je, se me estaba yendo. ¿Cómo que no dice nada? ¿Ya leiste el título del hilo?

Como poner el cursor al inicio de un TMemo



// Saludos
Responder Con Cita
  #10  
Antiguo 23-06-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

No, roman; sí que en el título hace referencia justamente a lo que tú contestante perfectamente: pero por eso digo yo que creo que la pregunta/título está mal planteada, porque luego lo que se deja entender es que se quiere que el Memo muestre las primeras líneas y no las últimas que se añadan, y esto ya es algo que no tiene que ver con la situación del cursor...

En cualquier caso insisto que el compañero habrá obtenido suficiente información como para solucionar su problema. Y una cosa que se me quedó antes sin decir: no me des la razón que debe ser una cosa muy pesada que no sé yo si estoy dispuesto a soportar
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 16:41:34.


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