Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-11-2005
bustio bustio is offline
Miembro
 
Registrado: oct 2003
Posts: 231
Poder: 21
bustio Va por buen camino
Como saber la posicion Fila, Columna en un MEMO?

Hola a todos:

Necesito saber en que posicion FILA, COLUMNA se encuentra el cursos de edicion dentro de un MEMO.. algo mas o menos asi como lo que tienen todos los editores de codigo que te dicen en que lugar exactamente esta para do el cursor,,, y que cuando lo mueva con las teclas del cursor del teclado pues que se actualice esta informacion. Probe con el truco que se encuentra en TrucoMania y no funciona.. no se por que sera.

Código Delphi [-]
procedure TFrmChild.SynEditorKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  Row : Integer;
  Col : Integer;
  LineLength : Integer;

begin
 Row := SendMessage(SynEditor.Handle,EM_LINEFROMCHAR,SynEditor.SelStart,0);
 Col := SendMessage(SynEditor.Handle,EM_LINEINDEX,Row,0);
 LineLength := SendMessage(SynEditor.handle, EM_LINELENGTH, Col, 0);
 Col := SynEditor.SelStart - Col;

 StatusBar1.Panels[1].Text :=  IntToStr(Row) + ': ' + IntToStr(Col);
end;

NOTA: Utilizo un SynEditor para mostrar los textos, que a la larga es lo mismo que un TMEMO.
__________________
Muchas Gracias...
Responder Con Cita
  #2  
Antiguo 26-01-2013
alvaro2007 alvaro2007 is offline
Registrado
NULL
 
Registrado: ene 2013
Posts: 1
Poder: 0
alvaro2007 Va por buen camino
Funciona

Efectivamente Es el mismo proceso en un TMemo.
Responder Con Cita
  #3  
Antiguo 26-01-2013
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,

Si usas un "SynEdit", como dices, prueba con algo así:

Código Delphi [-]
  StatusBar.Panels[ 0 ].Text := Format
  (
    'Line %d - Column %d',
    [ SynEdit.CaretY, SynEdit.CaretX ]
  );
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 26-01-2013
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
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 28-01-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
bustio,

Cita:
Empezado por bustio
Necesito saber en que posicion FILA, COLUMNA se encuentra el cursos de edicion dentro de un MEMO...
Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, ShellAPI;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    StatusBar1: TStatusBar;
    procedure MemoCursorPosition;
    procedure MemoChange(Sender: TObject);
    procedure MemoClick(Sender: TObject);
    procedure MemoEnter(Sender: TObject);
    procedure MemoKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure MemoKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.MemoCursorPosition;
begin
   StatusBar1.Panels[0].Text := IntToStr(Memo1.CaretPos.Y+1);
   StatusBar1.Panels[1].Text := IntToStr(Memo1.CaretPos.X+1);
end;

procedure TForm1.MemoChange(Sender: TObject);
begin
   MemoCursorPosition;
end;

procedure TForm1.MemoClick(Sender: TObject);
begin
   MemoCursorPosition;
end;

procedure TForm1.MemoEnter(Sender: TObject);
begin
   MemoCursorPosition;
end;

procedure TForm1.MemoKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   MemoCursorPosition;
end;

procedure TForm1.MemoKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   MemoCursorPosition;
end;

end.
El código anterior permite Determinar la Posición del Cursor (Fila y Columna) en un Control TMemo por medio del Método CaretPos, el cual es implementado en los eventos OnChange, OnClick, OnEnter, OnKeyDown y OnKeyPress del citado control para capturar el movimiento del cursor de forma análoga al editor de Delphi.

Quizás este código sea aplicable al control SynEdit por medio de SynEdit.CaretY (Fila) y SynEdit.CaretX (Columna).

El ejemplo esta disponible en el link: http://terawiki.clubdelphi.com/Delph...orPosition.rar

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 28-01-2013 a las 17:19:57.
Responder Con Cita
  #6  
Antiguo 28-01-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
bustio.

Cita:
Empezado por nlsgarcia
...OnChange, OnClick, OnEnter, OnKeyDown y OnKeyPress...
Corrección del Msg #5:

No es el evento OnKeyPress, es el evento OnKeyUp del control TMemo tal como se indica en el código del citado mensaje.

Espero sea útil

Nelson.
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


La franja horaria es GMT +2. Ahora son las 01:18:28.


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