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);
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); public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
Procedure TForm1.Busqueda(PalabraBuscar : String);
var
I : Integer;
begin
PalabraBuscar := LowerCase(PalabraBuscar);
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.