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 19-09-2012
Anel Hernandez Anel Hernandez is offline
Miembro
 
Registrado: mar 2005
Posts: 94
Poder: 20
Anel Hernandez Va por buen camino
Seleccionar un item en FileListBox desde codigo

Hola,

como puedo seleccionar desde codigo un TFileListBox, es decir, que aparezca un item seleccionado.

lo intente con itemIndez pero no funcioana. Igual con selected.

gracias
Responder Con Cita
  #2  
Antiguo 19-09-2012
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.

Ejemplo:
Código Delphi [-]
procedure SelectItemFLB(FLB: TFileListBox; Inx: Integer);
begin
  Dec(inx);  // comienza en FLB.Items[0]
  if (Inx >= 0)and(Inx < FLB.Items.Count) then
    FLB.FileName := FLB.Items[Inx]
end;

Llamada:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  SelectItemFLB(FileListBox1, 5); // en realidad posición 4
end;


Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 19-09-2012
Anel Hernandez Anel Hernandez is offline
Miembro
 
Registrado: mar 2005
Posts: 94
Poder: 20
Anel Hernandez Va por buen camino
gracias, funciona bien. pero no se ejecuta el onchange. como puedo hacer para que al seleccionarse desde codigo se ejecute el onchange?

gracias
Responder Con Cita
  #4  
Antiguo 19-09-2012
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
Cita:
Empezado por Anel Hernandez Ver Mensaje
gracias, funciona bien. pero no se ejecuta el onchange. como puedo hacer para que al seleccionarse desde codigo se ejecute el onchange?

gracias
Hola.

Acabo de hacer la prueba y siempre que a la función SelectItemFLB se le envíe como argumento (Inx) un valor diferente al item actualmente seleccionado, el evento OnChange del TFileListBox se dispara correctamente...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 19-09-2012
Anel Hernandez Anel Hernandez is offline
Miembro
 
Registrado: mar 2005
Posts: 94
Poder: 20
Anel Hernandez Va por buen camino
yo no puse el procedimiento, puse directamente:FLB.FileName := FLB.Items[Inx]

y no entra al onchange
Responder Con Cita
  #6  
Antiguo 19-09-2012
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
Cita:
Empezado por Anel Hernandez Ver Mensaje
yo no puse el procedimiento, puse directamente:FLB.FileName := FLB.Items[Inx]

y no entra al onchange
Hola.

Un ejemplo en forma directa:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  Inx: Integer;
begin
  Inx := 5;
  with FileListBox1 do
    FileName := Items[Inx];
end;
De este modo también dispara el evento OnChange del TFileListBox sin problemas.

Saludos.
__________________
Daniel Didriksen

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

Última edición por ecfisa fecha: 19-09-2012 a las 17:21:56.
Responder Con Cita
  #7  
Antiguo 19-09-2012
Anel Hernandez Anel Hernandez is offline
Miembro
 
Registrado: mar 2005
Posts: 94
Poder: 20
Anel Hernandez Va por buen camino
lo acabo de poner aparte en un boton y si levanta el onchange.

el mio, lo tengo en un procedimiento aparte que añado, a continuacion, a ver si me dicen por que no lo levanta:
Código Delphi [-]
procedure inidir;
var
 s:string;
 i,j:byte;
begin
 TotalCheck:=0;i:=0;
 IF NOT FileExists(extractfiledir(application.exename)+'\inidir.ini') THEN exit;
 assign(fichero,extractfiledir(application.exename)+'\inidir.ini');RESET(FICHERO);
 readln(fichero,s);form1.radiogroup1.itemindex:=strtoint(s);
 readln(fichero,s);form1.CheckBox1.Checked:=StrToBool(s);
 readln(fichero,s);form1.CheckBox2.Checked:=StrToBool(s);
 readln(fichero,dirE);
 readln(fichero,dirt);
 readln(fichero,dirM);form1.edit4.text:=dirM;
 readln(fichero,s);form1.FileListBox1.ItemIndex:=strtoint(s);
 form1.FileListBox1.FileName := form1.FileListBox1.Items[form1.FileListBox1.ItemIndex];
 readln(fichero,s);
 repeat
  form1.CheckListBox1.Items.Add(copy(s,3,length(s)));
  if strtoint(copy(s,0,1))=1 then BEGIN
   form1.CheckListBox1.Checked[form1.CheckListBox1.count-1]:=true;
   Inc(TotalCheck);
  END;
 readln(fichero,s);
 until pos(':',s)=0;
 while not eof(fichero) do begin
  form1.CheckListBox2.Checked[i]:=StrToBool(s);inc(i);
  readln(fichero,s);
 end;
 close(fichero);
 form1.statusbar1.Panels[3].Text:=inttostr(TotalCheck)+'/'+inttostr(form1.CheckListBox1.Count);
 form1.edit1.text:=dirE;
 form1.edit2.text:=dirT;
end;

gracias
Responder Con Cita
  #8  
Antiguo 19-09-2012
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.

Pareciera que el problema es el valor que lee del archivo 'fichero' en la variable 's' cosa que sin el archivo no es posible asegurar.

Modifiqué un poco el código (en negrita) sin alterar el funcionamiento original para que visualice el valor de 's' y puedas evaluarlo:
Código Delphi [-]
procedure inidir;
var
 s:string;
 i,j:byte;
 Inx: Integer;
begin
  TotalCheck:=0;i:=0;
  IF NOT FileExists(extractfiledir(application.exename)+'\inidir.ini') THEN exit;
  assign(fichero,extractfiledir(application.exename)+'\inidir.ini');
  Reset(FICHERO);
  readln(fichero,s);
  with Form1 do
  begin
    radiogroup1.itemindex:= strtoint(s);
    readln(fichero,s);
    CheckBox1.Checked:= StrToBool(s);
    readln(fichero,s);
    CheckBox2.Checked:= StrToBool(s);
    readln(fichero,dirE);
    readln(fichero,dirt);
    readln(fichero,dirM);
    edit4.text:= dirM;
    readln(fichero,s);
    Inx := StrToInt(s);
    ShowMessage('Valor del indice: ', IntToStr(Inx));
    FileListBox1.FileName := FileListBox1.Items[Inx]; // o sólo: FileListBox1.FileName := FileListBox1.Items[StrToInt(s)];
    readln(fichero,s);  
    repeat
      CheckListBox1.Items.Add(copy(s,3,length(s)));
      if strtoint(copy(s,0,1))=1 then
      begin
        CheckListBox1.Checked[CheckListBox1.count-1]:=true;
        Inc(TotalCheck);
      end;
      readln(fichero,s);
    until pos(':',s)=0;
    while not eof(fichero) do
    begin
      CheckListBox2.Checked[i]:= StrToBool(s);
      inc(i);
      readln(fichero,s);
    end;
    close(fichero);
    statusbar1.Panels[3].Text:= inttostr(TotalCheck)+'/'+inttostr(CheckListBox1.Count);
    edit1.text:=dirE;
    edit2.text:=dirT;
  end;
end;
Si funciona, sólo elimina la línea del ShowMessage.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #9  
Antiguo 20-09-2012
Anel Hernandez Anel Hernandez is offline
Miembro
 
Registrado: mar 2005
Posts: 94
Poder: 20
Anel Hernandez Va por buen camino
No, el valor s que lee esta bien.

parece que hay otro problema.

en este ejemplo que me sugieres da error en Close(fichero); dice que "too many actual parameters".

al final resolvi poniendo la sentencia
Código Delphi [-]
FileListBox1.FileName := FileListBox1.Items[Inx];
fuera, en un procedimiento de Tform1.Mil gracias
Responder Con Cita
  #10  
Antiguo 20-09-2012
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
Cita:
Empezado por Anel Hernandez Ver Mensaje
No, el valor s que lee esta bien.

parece que hay otro problema.

en este ejemplo que me sugieres da error en Close(fichero); dice que "too many actual parameters".
Pero ese error te lo debería estar dando anteriormente, ya que no toqué para nada esa parte de tu código.
Por otro lado no tiene relación con tu planteo inicial, como te mencioné antes, solo cambié las líneas que figuran en negrita.

Saludos.
__________________
Daniel Didriksen

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

Última edición por ecfisa fecha: 20-09-2012 a las 20:51:18.
Responder Con Cita
  #11  
Antiguo 20-09-2012
Anel Hernandez Anel Hernandez is offline
Miembro
 
Registrado: mar 2005
Posts: 94
Poder: 20
Anel Hernandez Va por buen camino
Y ademas pusiste lo de With Tform1 do.

al ponerlo asi da ese error, con la llamada a las propiedades de cada objeto poniendo la ruta completa uno por uno, form1.objeto.propiedad, no da ese error.

ese error aparece al poner el with.

saludos
Responder Con Cita
  #12  
Antiguo 20-09-2012
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 Anel.

No, el error "too many actual parameters" no es provocado por la inclusión de:
Código Delphi [-]
with Form1 do
ni tampoco se provoca en la línea:
Código Delphi [-]
Close(fichero);

El error se produce en la línea:
Código Delphi [-]
   ShowMessage('Valor del indice: ' , IntToStr(Inx));  // error por la ','
Al transcribir el código cometí un error de tipeo del que ahora me percato, la línea tendría que ser:
Código Delphi [-]
  ShowMessage('Valor del indice: ' + IntToStr(Inx)); // ( '+' )

Saludos.
__________________
Daniel Didriksen

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

Última edición por ecfisa fecha: 20-09-2012 a las 21:26:11.
Responder Con Cita
  #13  
Antiguo 20-09-2012
Anel Hernandez Anel Hernandez is offline
Miembro
 
Registrado: mar 2005
Posts: 94
Poder: 20
Anel Hernandez Va por buen camino
ahora todo listo, mil gracias.
Responder Con Cita
  #14  
Antiguo 20-09-2012
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
Y yo te pido mil disculpas por las complicaciones que te traje con ese error tán estúpido...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #15  
Antiguo 20-09-2012
Anel Hernandez Anel Hernandez is offline
Miembro
 
Registrado: mar 2005
Posts: 94
Poder: 20
Anel Hernandez Va por buen camino
no pasa nada, me has dado una gran ayuda.

mil gracias
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
Seleccionar item de DbLookUpComboBox chorrito OOP 1 20-08-2010 01:33:24
Seleccionar item de combobox forgiveness Conexión con bases de datos 1 16-11-2009 20:00:23
Seleccionar item de DbComboBox por Codigo Camilo Varios 4 26-06-2008 19:19:25
seleccionar item en TdbLockupListbox!!!!!! david_uh Varios 1 22-05-2007 19:19:10
Seleccionar un item de un List Box zvf OOP 2 06-04-2006 16:45:38


La franja horaria es GMT +2. Ahora son las 04:53:29.


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