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 26-09-2006
DM2005 DM2005 is offline
Miembro
 
Registrado: abr 2005
Posts: 41
Poder: 0
DM2005 Va por buen camino
listbox

Hola a todos nuevamente, necesitando una vez mas de la ayuda en el foro...
estoy trabajando con un listbox en el que cargo un archivo txt, por medio de un speedbuttom, voy recorriendo el mismo,

seria algo asi:
lleno el listbox con los items del archivo txt
Código Delphi [-]
ListBox2.Items.LoadFromFile('C:\IPCapitulo.txt');


recorro los items del listbox
Código Delphi [-]
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
   with ListBox2.Items do
    begin
      if ListBox2.ItemIndex < Count-1
         then ListBox2.ItemIndex := ListBox2.ItemIndex + 1
         else MessageDlg(Final del curso !',mtInformation,[mbOk],0);
end;

el contenido del listbox seria:
01
01
01
02
02
03
03
04

y quiero que cuando pase por ejemplo del item 01 al 02..me informe con un mensaje que pase al siguiente item..
muchas gracias por la ayuda..
saludos..
Responder Con Cita
  #2  
Antiguo 26-09-2006
Avatar de epuigdef
epuigdef epuigdef is offline
Miembro
 
Registrado: jul 2005
Posts: 196
Poder: 19
epuigdef Va por buen camino
Buenas!

Prueba esto:



Código Delphi [-]
procedure TForm1.SpeedButton2Click(Sender: TObject);
var anterior String;
begin 
    anterior := '';
    with ListBox2.Items do 
    begin 
     if ListBox2.ItemIndex < Count-1 then begin 
        ListBox2.ItemIndex := ListBox2.ItemIndex + 1 
        if (ListBox2.items[ListBox2.itemindex] <> anterior) and 
         (anterior <> '') then 
            showmessage('cambio'); 
        anterior := ListBox2.items[ListBox2.itemindex]; 
    end 
    else MessageDlg(Final del curso !',mtInformation,[mbOk],0);
end;






Un saludo

Edu
Responder Con Cita
  #3  
Antiguo 27-09-2006
DM2005 DM2005 is offline
Miembro
 
Registrado: abr 2005
Posts: 41
Poder: 0
DM2005 Va por buen camino
Hola a todos nuevamente, segun mi duda planteada, epuigdef, me paso una procedure que no es muy clara, ya que da un error, y aparentemente no estaria realizando lo que estoy necesitando...
desde ya muchas gracias por el tiempo..
saludos..
Responder Con Cita
  #4  
Antiguo 27-09-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿Eso es todo? Podrías decir por qué no te parece claro o qué error te da. Además, si aparentemente no hace lo que deseas posiblemente sea porque no ha quedado claro que es eso que deseas ¿no crees? ¿Por qué mejor no tratas de aclararlo?

// Saludos
Responder Con Cita
  #5  
Antiguo 27-09-2006
Avatar de epuigdef
epuigdef epuigdef is offline
Miembro
 
Registrado: jul 2005
Posts: 196
Poder: 19
epuigdef Va por buen camino
Hola!

Pues no le veo el error, pero lo he hecho de memoria porque en este ordenador no tengo el Delphi.

Lo que creo que hace es dar un mensaje a cada cambio de valor, excepto en el primero.

Ya nos dirás algo!

Edu
Responder Con Cita
  #6  
Antiguo 27-09-2006
DM2005 DM2005 is offline
Miembro
 
Registrado: abr 2005
Posts: 41
Poder: 0
DM2005 Va por buen camino
Hola... les comento don de me da error...

Código Delphi [-]
procedure TForm1.SpeedButton2Click(Sender: TObject);
var anterior: String;
begin
    anterior := '';
    with ListBox2.Items do
    begin
     if ListBox2.ItemIndex < Count-1 then begin
        ListBox2.ItemIndex := ListBox2.ItemIndex + 1
        if (ListBox2.items[ListBox2.itemindex] <> anterior) and (anterior <> '') then
            showmessage('cambio');
        anterior := ListBox2.items[ListBox2.itemindex];
    end
    else MessageDlg('Final del curso !',mtInformation,[mbOk],0);
end;

en la primer linea.... donde declara la variable... supongo que correctamente seria asi:
Código Delphi [-]
var anterior: String;

2º error es en la linea:
Código Delphi [-]
if (ListBox2.items[ListBox2.itemindex] <> anterior) and (anterior <> '') then
alli cuando compilo me da el siguinte mensaje:
"Missing operator or semicolon"

espero haber aclarado bien mi duda..
gracias

Última edición por DM2005 fecha: 27-09-2006 a las 16:46:54.
Responder Con Cita
  #7  
Antiguo 27-09-2006
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 22
Bicho Va por buen camino
Hola, prueba a ponerlo así:

Código Delphi [-]
procedure TForm1.SpeedButton2Click(Sender: TObject);
var anterior : String;
begin
  anterior := '';
  with ListBox2.Items do begin
    if ListBox2.ItemIndex < Count-1 then begin
       ListBox2.ItemIndex := ListBox2.ItemIndex + 1;
       if (ListBox2.items[ListBox2.itemindex] <> anterior) and (anterior <> '') then
          showmessage('cambio');
       anterior := ListBox2.items[ListBox2.itemindex];
    end
    else MessageDlg('Final del curso !',mtInformation,[mbOk],0);
  end;
end;

El segundo error que comentas, es debido a que la linea anterior no tiene el punto y coma del final de la linea.
Tambien he corregio otro error por falta de una comilla en el else MessageDlg
Espero te sirva,

Saludos
Responder Con Cita
  #8  
Antiguo 27-09-2006
DM2005 DM2005 is offline
Miembro
 
Registrado: abr 2005
Posts: 41
Poder: 0
DM2005 Va por buen camino
Hola de nuevo...
el codigo funciona bien....solo que el recorre el listbox y no me avisa cuando paso al siguiente item (ej.: 01 al 02)...y si me avisa cuando llego al final..

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
 ListBox2.Items.LoadFromFile('C:\IPCapitulo.txt');
end;

IPCapitulo.txt :
01
01
01
02
02
03
03
03
04

Código Delphi [-]
 
procedure TForm1.SpeedButton1Click(Sender: TObject);
var anterior : String;
begin
  anterior := '';
  with ListBox2.Items do begin
    if ListBox2.ItemIndex < Count-1 then begin
       ListBox2.ItemIndex := ListBox2.ItemIndex + 1;
       if (ListBox2.Items[ListBox2.ItemIndex] <> anterior) and (anterior <> '') then
          showmessage('cambio');
       anterior := ListBox2.Items[ListBox2.ItemIndex];
    end
    else MessageDlg('Final del curso !',mtInformation,[mbOk],0);
  end;
end;

tambien estaba probando con esta otra procedure que encontre por el foro:
Código Delphi [-]
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  begin
    with ListBox2 do
      begin
        ItemIndex:= (ItemIndex + 1) mod Count;
       if ItemIndex < Count then
        if Items[ItemIndex] <> Items[ItemIndex] then
         begin
         showmessage('cambio');
         end;
      end;
  end;
end;

nuevamente gracias por la ayuda...
saludos
Responder Con Cita
  #9  
Antiguo 28-09-2006
DM2005 DM2005 is offline
Miembro
 
Registrado: abr 2005
Posts: 41
Poder: 0
DM2005 Va por buen camino
Hola, sera que me pueden ayudar con la procedure, ya que tengo que terminar mi proyecto y la verdad que eh probado de varias formas y no funciona como me gustaria.
gracias.
saludos
Responder Con Cita
  #10  
Antiguo 28-09-2006
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Me parece que puedo ver el problema.

La variable anterior es local y se fija su valor a cadena vacía en cada llamada al procedimiento.

Lo que se necesita es que esta varible conserve su valor entre llamadas al procedimiento.

posible solución, hay que declararla como global e inicializarla cuando se crea el formulario.

quedaría algo así



Código Delphi [-]
.
.
.
var
  Form1: TForm1;
  anterior: String;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  anterior:='';
end;



procedure TForm1.Button1Click(Sender: TObject);
begin
  if ListBox2.ItemIndex < ListBox2.Items.Count-1 then
  begin
    ListBox2.ItemIndex := ListBox2.ItemIndex + 1;
    if (ListBox2.Items[ListBox2.ItemIndex] <> anterior) and (anterior <> '') then
      showmessage('cambio');
    anterior := ListBox2.Items[ListBox2.ItemIndex];
  end
  else
    MessageDlg('Final del curso !',mtInformation,[mbOk],0);
end;

.
.
.

Saludos
Responder Con Cita
  #11  
Antiguo 28-09-2006
DM2005 DM2005 is offline
Miembro
 
Registrado: abr 2005
Posts: 41
Poder: 0
DM2005 Va por buen camino
Thumbs up

Muchas Gracias, Hector.
Funciono correctamente como necesitaba.
Saludos
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
Uso del listbox.... WilloW Varios 5 14-09-2006 21:40:54
ListBox Tala OOP 3 21-06-2006 16:31:46
2 Listbox y BD .... elbilla Varios 5 04-11-2004 11:06:12
ListBox neon OOP 2 09-08-2004 11:15:27
listbox cesarjbf OOP 1 16-10-2003 13:17:21


La franja horaria es GMT +2. Ahora son las 14:32:14.


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