Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   funcion , listbox y conversion (https://www.clubdelphi.com/foros/showthread.php?t=12978)

mainau 02-08-2004 20:40:44

funcion , listbox y conversion
 
Hola foreros , buenas noches, ya estoy otra vez en un fregado a ver si me iluminais bueno al toro:

Tengo una funcion :
Código Delphi [-]
function seltext(listbox1: Tlistbox) : string;
var 
  nitem: integer;
begin
  nitem:=listbox1.itemindex;
  if nitem >= 0 then 
    Result:= listbox1.items [nitem]
  else
    Result:='';
end;
que me devuelve una cadena cuando intengo pasar esta a integer
Código Delphi [-]
 
canal := 25 + strtoint(seltext())
de esta manera me devuelve el siguiente error :

NOT ENOUGH ACTUAL PARAMETERS
no se lo que hago mal espero vuestra ayuda , gracias por todo.

roman 02-08-2004 20:59:07

La función seltext que defines recibe un parámetro ¿no? Pues ¡pásaselo!

// Saludos

mainau 02-08-2004 21:15:12

no se puede ser mas tonto
 
Desde luego, no es que los arboles no medejen ver el bosque es que me he perdido en el bosque no veo ni un arbol ...



Gracias, por iluminarme y sarcarme de la estupidez mental , de nuevo gracias..


Sera el Calor ?

coej 11-04-2011 16:48:40

Haber, otro más novato aún , estoy intentando capturar en una variable el contenido en texto de una Listbox, pero la verdad estoy empezando en delphi, y me pierdo, pongo el código..., no me pegueis porfavor...
Código Delphi [-]
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
  ListBox1: TListBox;


  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  a: String;
  SelItems :String;
  nItem :Integer;

implementation

{$R *.dfm}
  
   function SelText (ListBox1 : TListBox) : String;
   var
    nItem : Integer;
    begin
      nItem := ListBox1.ItemIndex;
      if nItem >= 0 then
        Result := ListBox1.Items [nItem]
      else
        Result := '';
        end;

   begin
a:= SelText(ListBox1);
end.

El error es Undeclared identifier . 'ListBox1', la verdad, se que es una tontería pero no lo pillo, me gustaría asignar a la vble a el valor seleccionado del listbox que es ListBox1 y mostrar en el mismo formulario el valor en texto..., gracias...

roman 11-04-2011 16:55:16

Debes declarar la función SelText como método del formulario:

Código Delphi [-]
TForm1 = class(TForm)
  ListBox1: TListBox;

private
  { Private declarations }
public
  { Public declarations }
  function SelText (ListBox1 : TListBox) : String;
end;

y anteponer el nombre de la clase del formulario al momento de implementar el método:

Código Delphi [-]
function TForm1.SelText (ListBox1 : TListBox) : String;
begin
  ...
end;

Por otra parte, cuando pongas código asegúrate de poner las etiquetas adecuadas para su formato.

// Saludos

coej 11-04-2011 17:00:10

Código Delphi [-]
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
  ListBox1: TListBox;


  private
    { Private declarations }
  public
    function SelText (ListBox1 : TListBox) : String;
  end;

var
  Form1: TForm1;
  a: String;
  SelItems :String;
  nItem :Integer;

implementation

{$R *.dfm}
  
   function TForm1.SelText (ListBox1 : TListBox) : String;
   var
    nItem : Integer;
    begin
      nItem := ListBox1.ItemIndex;
      if nItem >= 0 then
        Result := ListBox1.Items [nItem]
      else
        Result := '';
        end;

   begin
a:= TForm1.SelText(ListBox1);
end.

Pero sigo con el mismo error, siento ser tan pesado(y gracias por la rapidez de respuesta...
quiero asignar a la variable string a , el texto del valor seleccionado en el listbox y mostrarlo luego dentro del formulario...

ecfisa 11-04-2011 17:09:20

Cita:

Empezado por roman (Mensaje 396558)
Por otra parte, cuando pongas código asegúrate de poner las etiquetas adecuadas para su formato.

Gracias por apuntarlo román, por que pegan más rápido de lo que coloco las etiquetas... :)

Un saludo.

roman 11-04-2011 17:18:01

Cita:

Empezado por coej (Mensaje 396561)
y gracias por la rapidez de respuesta...

Demasiado rápido :o

En realidad, mi respuesta es incorrecta, el cambio que te señalé no debería ser necesario. El error te lo marca en la línea:

Código Delphi [-]
a:= SelText(ListBox1);

La llamada a SelText no reconoce ListBox1 porque ListBox1 está dentro del formulario. Tendrías que poner algo como:

Código Delphi [-]
a:= Form1.SelText(ListBox1);

// Saludos

coej 11-04-2011 17:26:34

HOla de nuevo Roman, si que lo tengo puesto
a:= TForm1.SelText(ListBox1);

Haber si me estoy explicando mal
Tengo un formulario Form1, un listbox ListBox1, y le pongo 3 items, rojo, verde azul
y quiero que cuando se marque en uno de ellos(se seleccione), guarde en la variable a el valor (rojo por ejemplo), y lo enseñe en un texto en el mismo formulario, algo asi quiero conseguir, gracias de nuevo...

roman 11-04-2011 17:37:17

¡Qué bárbaro! Hoy yo no debería de contestar. A ver si le atino de una buena vez.

Con tu código original, pones:

Código Delphi [-]
a:= SelText(Form1.ListBox1);

Pero, viendo los detalles de la pregunta, el punto es, desde dónde llamas a SelText. Me parece que tienes que poner SelText como método del formulario, tal como comenté al principio y la llamada a SelText tiene entonces que estar en el evento OnClick del ListBox con lo cual ya no es necesario anteponer Form1.

// Saludos

coej 11-04-2011 17:39:43

Cita:

Empezado por ecfisa (Mensaje 396566)
Gracias por apuntarlo román, por que pegan más rápido de lo que coloco las etiquetas... :)

Un saludo.

Por otra parte, cuando pongas código asegúrate de poner las etiquetas adecuadas para su formato.


Como se ponen las etiquetas adecuadas para su formato???? No entiendo????

beginner01 11-04-2011 17:49:09

Cita:

Empezado por coej (Mensaje 396570)

Haber si me estoy explicando mal
Tengo un formulario Form1, un listbox ListBox1, y le pongo 3 items, rojo, verde azul
y quiero que cuando se marque en uno de ellos(se seleccione), guarde en la variable a el valor (rojo por ejemplo), y lo enseñe en un texto en el mismo formulario, algo asi quiero conseguir, gracias de nuevo...

hay otras maneras de hacerlo.
prueba agregando en el evento onclick de el listbox esto.

Código Delphi [-]
 
a:=listbox1.items.strings[listbox1.itemindex];
 form1.caption:=a;

saludos.

beginner01 11-04-2011 17:54:35

Cita:

Empezado por coej (Mensaje 396573)
Por otra parte, cuando pongas código asegúrate de poner las etiquetas adecuadas para su formato.


Como se ponen las etiquetas adecuadas para su formato???? No entiendo????

;)
http://www.clubdelphi.com/foros/show...ight=etiquetas

saludos.

coej 11-04-2011 17:55:17

Si , así me funciona pero el texto me lo pone en la barra de la ventana, no en un texto dentro del formulario como quería, de todas formas muchas gracias, ya he aprendido otra cosa...
ya entiendo lo de las etiquetas, sorry...

beginner01 11-04-2011 17:59:08

Cita:

Empezado por coej (Mensaje 396577)
Si , así me funciona pero el texto me lo pone en la barra de la ventana, no en un texto dentro del formulario como quería, de todas formas muchas gracias, ya he aprendido otra cosa...

al formulario le agregas por ejemplo un componente llamado tlabel
y le pones.

Código Delphi [-]
 
 label1.caption:=a

coej 11-04-2011 18:06:52

Prefesto..., muuuchas gracias.

ecfisa 11-04-2011 18:16:28

Cita:

Empezado por coej (Mensaje 396573)
Por otra parte, cuando pongas código asegúrate de poner las etiquetas adecuadas para su formato.


Como se ponen las etiquetas adecuadas para su formato???? No entiendo????

Hola coej.

Román se refiere a las etiquetas vB. Aquí encontrarás información sobre su uso. Consiste sólamente en encerrar el texto entre las etiquetas adecuadas.
Por ejemplo para código Delphi es: [delphi] código [/delphi] dando este efecto:
Código Delphi [-]
function TForm1.SelText (ListBox1 : TListBox) : String;
var
  nItem : Integer;
begin
  nItem := ListBox1.ItemIndex;
  if nItem >= 0 then
    Result := ListBox1.Items [nItem]
  else
    Result := '';
end;
Para que notes la diferencia voy a poner la misma porción de código tal como lo presentaste en tu post:

function TForm1.SelText (ListBox1 : TListBox) : String;
var
nItem : Integer;
begin
nItem := ListBox1.ItemIndex;
if nItem >= 0 then
Result := ListBox1.Items [nItem]
else
Result := '';
end;

Como verás es mucho más difícil de leer que despues de puestas las etiquetas.

Edito: Luego de guardar estas líneas ví que que habías visto lo de las etiquetas.
No tenés por que disculparte, nadie empieza sabiendo en el foro... ;)

Un saludo.

coej 11-04-2011 18:27:17

Ok, veo que el foro funciona muy bien , rápido y comprensivos, eso anima a seguir en él...

Y sigo planteando preguntas..., empiezo por donde debería haber empezado, estoy siguiendo la biblia de delphi 7 de mario cantu, y al ir siguiendo código he visto en el componente Listbox que si se quiere utilizar con frecuencia el texto de un item del listbox se puede utilizar una funcion como esta...
Código Delphi [-]
function SelText (List :TListBox) : String;
var
  nItem := List.ItemIndex;
  if nItem >= 0 then
       Result:= List.Items[nItem]
  else
     Result := '';
end;

El problema es que como no tengo el cd de codigos de ejemplo , y estoy empezando me encuentro con bastantes problemas(tontos), de código, y no sé como llamar a esta función desde dentro del formulario, y asignar el resultado devuelto por la función como pedía antes a una etiqueta y mostrarlo... pasando como parametro el listbox, creo que en las respuestas que he recibido hay parte de respuesta, y es que cuando el codigo no estre dentro de un evento , tengo que poner el parent del componente?????

ecfisa 11-04-2011 21:51:54

Podés llamar a la función desde varios eventos, te pongo tres ejemplos:

Al hacer click en el ListBox:
Código Delphi [-]
procedure TForm1.ListBox1Click(Sender: TObject);
begin
 (* se asigna a la propiedad Caption del Label el item  seleccionado en ListBox1 *)
  Label.Caption:= SelText(ListBox1); 
end;

Al hacer click en un TButton:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
 (* se asigna a la propiedad Caption del Form el item seleccionado en ListBox1 *)
  Self.Caption:= SelText(ListBox1);
end;

Al salir del ListBox1:
Código Delphi [-]
procedure TForm1.ListBox1Exit(Sender: TObject);
begin
  (* se muestra el item seleccionado en ListBox1, en un cuadro de dialogo *)
  ShowMessage(SelText(ListBox1));
end;

Un saludo.

coej 11-04-2011 22:05:21

Muchas gracias de nuevo a todos, así da gusto meterse en foros...

Como simulo la tercera opción , al salir del listbox, he probado a seleccionar uno , y picar fuera del listbox, o cerrar el formulario pero en ningún caso me muestra el mensaje..., doy poca guerra, jeje...


La franja horaria es GMT +2. Ahora son las 22:07:37.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi