Ver Mensaje Individual
  #6  
Antiguo 08-06-2007
Avatar de xEsk
[xEsk] xEsk is offline
Miembro Premium
 
Registrado: feb 2006
Posts: 454
Reputación: 21
xEsk Va por buen camino
He probado el código, y funciona bien. Con lo q me entra una duda, y a lo mejor "funciona" pero no hace lo q tu quieres??

Otras cosas.

Por lo que deduzco, "te da igual" el CaseSensitive, así pues te puedes ahorrar la función que transforma el texto a "minúsculas", y usar directamente la función (LowerCase del propio delphi) q transforma a minúsculas. La función quedaría así:

Código Delphi [-]
Procedure Busqueda(PalabraBuscar : String);
var
 I : Integer;
begin
 PalabraBuscar := LowerCase(PalabraBuscar);
  // busca
  for i:=0 to Form1.ListBox1.Items.Count - 1 do
    if Pos(PalabraBuscar, LowerCase(Form1.ListBox1.Items[i])) > 0 then
      begin
        Form1.ListBox1.ItemIndex:=i;
        Exit;
      end;
end;

Otra cosa, yo te recominedo, q si este procedure solo lo vas a usar en este Form, lo crearas como parte del TForm, así te ahorras de hacer referencia al "Form1" dentro del procedure Busqueda.

El código seria algo así:

Código Delphi [-]
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button5: TButton;
    ListBox1: TListBox;
    Edit1: TEdit;
    procedure Button5Click(Sender: TObject);
  private
    Procedure Busqueda(PalabraBuscar : String); // declaras aqui el procedure
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

// y aqui el codigo del procedure
Procedure TForm1.Busqueda(PalabraBuscar : String);
var
 I : Integer;
begin
 PalabraBuscar := LowerCase(PalabraBuscar);
  // busca
  for i:=0 to ListBox1.Items.Count - 1 do
    if Pos(PalabraBuscar, LowerCase(ListBox1.Items[i])) > 0 then
      begin
        ListBox1.ItemIndex:=i;
        Exit;
      end;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
 Busqueda(Edit1.Text);
end;

end.
Responder Con Cita