Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 15-10-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
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 jsc.
Cita:
Empezado por jsc Ver Mensaje
...
Si es cierto que puede llegar al final y no haber leído nada, ...
Si, eso es lo primero que pensé ... igual te pongo un ejemplo de una de las formas en que podrías implementarlo:
Código Delphi [-]
...
type
  TForm1 = class( TForm )
    RichEdit1: TRichEdit;
    Button1: TButton;
    procedure FormCreate( Sender: TObject );  
    procedure RichEdit1KeyDown( Sender: TObject; var Key: Word;Shift: TShiftState );
    procedure FormDestroy( Sender: TObject );
  private
    FOldWndProc : TWndMethod;
    procedure FNewWndProc( var Message: TMessage );
    procedure ReachedEnd( const Reach: Boolean );
  public
  end;

var
  Form1: TForm1;

implementation 

procedure TForm1.FormCreate( Sender: TObject );
begin
  RichEdit1.Lines.LoadFromFile('SomeFile.rtf');
  FOldWndProc := RichEdit1.WindowProc;
  RichEdit1.WindowProc := FNewWndProc;
end;

procedure TForm1.ReachedEnd(const Reach: Boolean);
const
  FLAGS =  MB_ICONQUESTION or MB_YESNO; 
  CMSG  = '¿ Seguro que comprende el texto ?';
begin
  if not Reach then
    Exit;
  if MessageBox( Handle,PChar(CMSG), '', FLAGS ) = IDNO then
    Application.Terminate;
  {
   ...
   ...
  }
end;

procedure TForm1.FNewWndProc( var Message: TMessage );
var
  sPos: Integer;
  sInfo: TScrollInfo;
begin
  if Message.Msg = WM_VSCROLL then
  begin
    sInfo.cbSize  := SizeOf( TScrollInfo );
    sInfo.fMask   := SIF_ALL;
    GetScrollInfo( RichEdit1.Handle, SB_VERT, sInfo );
    sPos := GetScrollPos( RichEdit1.Handle, SB_VERT );
    ReachedEnd( ( sInfo.nMax = sInfo.Npage + sPos ) );
  end;
  FOldWndProc(Message);
end;

procedure TForm1.RichEdit1KeyDown( Sender: TObject; var Key: Word; Shift: TShiftState );
var
  RE : TRichEdit;
  Row: Integer;
begin
  if ( Key in [ VK_DOWN, VK_NEXT ] ) then
  begin
    RE  := TRichEdit( Sender );
    Row := RE.Perform( EM_LINEFROMCHAR, RE.SelStart, 0 );
    ReachedEnd( ( Row = RE.Lines.Count - 1 ) );
  end;
end;

procedure TForm1.FormDestroy( Sender: TObjec t);
begin
  RichEdit1.WindowProc := FOldWndProc;
end;

end.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
 



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
Saber en qué línea de un TRichEdit estoy cozina Varios 4 01-10-2016 17:14:23
Al hacer scroll no se dibuja un rectángulo en una celda de un dbgrid isnagil Varios 0 14-02-2011 18:38:50
Error al hacer scroll elcolo83 Conexión con bases de datos 1 03-04-2008 20:42:02
Situar el Cursor y mover el Scroll de un TRichEdit dec Trucos 0 14-07-2006 14:45:01
como hacer scroll en tchar Pascual Montes Gráficos 0 30-11-2004 18:41:25


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


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