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 18-04-2014
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 13
danielmj Va por buen camino
Hola Ecfisa, he mirado tu demo y me pasa lo mismo, realmente no entiendo nada por que a ti te funciona y a mi no siendo el mismo codigo??



Hola nlsGarcía, tu código no lo he mirado aun, ahora me pongo con el. Sobre usar el findDialog, bueno, en realidad lo he pensado y lo he usado en un momento, pero sinceramente dado que la aplicación no es nada del otro mundo (y ademas de uso personal), prefiero no "salirme" de la interface de esta, es decir que si puedo prescindir del findDialog.execute... etc, mejor, de todos modos, como te digo, ahora me pongo con tu aporte.

Saludos y gracias a los dos.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.

Última edición por danielmj fecha: 18-04-2014 a las 09:31:11. Razón: modificar mensaje
Responder Con Cita
  #2  
Antiguo 18-04-2014
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 13
danielmj Va por buen camino
Hola, ¿puede ser ese error provocado por delphi? uso la version XE4 y no funciona bien, pero acabo de probar con lazarus y si funciona el codigo de ecfisa.

¿?

Saludos.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.
Responder Con Cita
  #3  
Antiguo 18-04-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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 danielmj.
Cita:
Empezado por danielmj Ver Mensaje
Hola Ecfisa, he mirado tu demo y me pasa lo mismo, realmente no entiendo nada por que a ti te funciona y a mi no siendo el mismo codigo??
Si, es muy posible ya que las versiones de TRichEdit son diferentes. Habría que revisar un poco sobre los valores de las constantes... En principio podrías intentar quitando la constante que redefine el valor de EM_SCROLLCARET (necesario para Delphi 7).

Voy a buscar un poco sobre el tema en XE4 y cualquier novedad te comento.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 18-04-2014
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 13
danielmj Va por buen camino
Hola, gracias por la ayuda, sigo mirando a ver que consigo y quedo a la espera por si encuentras algo.

Saludos.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.
Responder Con Cita
  #5  
Antiguo 18-04-2014
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
danielmj,

Cita:
Empezado por danielmj
...Sobre usar el FindDialog...si puedo prescindir del FindDialog...mejor...
El código sugerido en el Msg #5 es una solución alternativa al problema planteado por medio de un TComboBox como interfaz de un TFindDialog, funcionando correctamente según lo esperado en Delphi 7, Delphi 2010 y Delphi XE4 bajo Windows 7 Professional x32.

Espero sea útil

Nelson.
Responder Con Cita
  #6  
Antiguo 18-04-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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 danielmj.
Cita:
Empezado por danielmj Ver Mensaje
Hola, gracias por la ayuda, sigo mirando a ver que consigo y quedo a la espera por si encuentras algo.

Saludos.
No cuento con otra versión que Delphi 7 para comprobarlo (lo que me dificulta la taréa...), así que tengo que pedirte que verifiques si te funciona este modo en tu Delphi:
Código Delphi [-]
uses RichEdit;

const
  EM_SCROLLCARET = $00B7;

var
  LastCase: Integer;

procedure TForm1.btnSearchFirstClick(Sender: TObject);
begin
  with RichEdit1 do
  begin
    LastCase:= RichEdit1.FindText(Lista.Text, 0, Length(RichEdit1.Text), []);
    if LastCase <> -1 then
    begin
      SelStart:= Perform(EM_LINEINDEX, 0, 0) + LastCase;
      SelLength:= Length(Lista.Text);
      Perform(EM_SCROLLCARET, 0, 0);
      SetFocus
    end
  end
end;

procedure TForm1.btnNextClick(Sender: TObject);
var
  Next: Integer;
begin
  with RichEdit1 do
  begin
    Next:= RichEdit1.FindText(Lista.Text, SelStart+SelLength, Length(RichEdit1.Text), []);
    if Next <> -1 then
    begin
      SelStart:= Perform(EM_LINEINDEX, Next, 0) + Next + 1;
      SelLength:= Length(Lista.Text);
      Perform(EM_SCROLLCARET, 0, 0);
      LastCase:= Next
    end;
    SetFocus;
  end
end;
Insisto en este modo de búsqueda, por que en principio entendí que respeta la estética que queres darle a tu aplicación.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 18-04-2014
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
danielmj,

Cita:
Empezado por ecfisa
...No cuento con otra versión que Delphi 7 para comprobarlo...así que tengo que pedirte que verifiques si te funciona este modo en tu Delphi...
El código sugerido en el Msg #11 funciona correctamente según lo esperado en Delphi 7, Delphi 2010 y Delphi XE4 bajo Windows 7 Professional x32.

Espero sea útil

Nelson.
Responder Con Cita
  #8  
Antiguo 18-04-2014
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
danielmj,

Cita:
Empezado por danielmj
...Sobre usar el FindDialog...si puedo prescindir del FindDialog...mejor...
Revisa este código:
Código Delphi [-]
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    RichEdit1: TRichEdit;
    Button1: TButton;
    ComboBox1: TComboBox;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
   ComboBox1.Items.LoadFromFile('Search_Parameters.txt');
   RichEdit1.Lines.LoadFromFile('Search_File.txt');
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  FoundAt: LongInt;
  StartPos, ToEnd: Integer;

begin
   with RichEdit1 do
   begin
     if SelLength <> 0 then
        StartPos := SelStart + SelLength
     else
        StartPos := 0;

     FoundAt := FindText(ComboBox1.Text, StartPos, Length(RichEdit1.Text), []);
     if FoundAt <> -1 then
     begin
        SetFocus;
        SelStart := FoundAt;
        SelLength := Length(ComboBox1.Text);
     end
     else
        SelStart := 0;
   end;
end;

end.
El código anterior es la versión 2 del código sugerido en el Msg #5 sin la utilización del componente TFindDialog y con la capacidad de hacer Búsquedas Cíclicas de tipo Case Insensitive, funcionando correctamente según lo esperado en Delphi 7, Delphi 2010 y Delphi XE4 bajo Windows 7 Professional x32.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 18-04-2014 a las 23:27:23.
Responder Con Cita
  #9  
Antiguo 18-04-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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
Gracias por probar el código Nelson
Cita:
Empezado por nlsgarcia Ver Mensaje
...
Cita:
Empezado por ecfisa
...Sobre usar el FindDialog...si puedo prescindir del FindDialog...mejor...
Pero... ¿ En que mensaje escribí esa opinión ?

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Funciones para limpiar y buscar una cadena en otra cadena o en un fichero xaguilars Trucos 1 29-07-2007 22:20:14
Funcion para buscar cadena dentro de otra cadena y el numero de veces flystar Varios 3 02-07-2007 22:48:08
Buscar número en cadena torito Varios 4 19-04-2004 19:05:25
buscar dato de una cadena noe SQL 5 10-02-2004 18:58:20
Buscar cadena dentro de otra cadena doverzhoff Varios 4 27-01-2004 05:27:15


La franja horaria es GMT +2. Ahora son las 00:18: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