Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   seleccionar elemendo de combobox y colocarlo en un edit (https://www.clubdelphi.com/foros/showthread.php?t=82945)

maxi915 26-04-2013 01:23:12

seleccionar elemendo de combobox y colocarlo en un edit
 
hola gente, el titulo lo dice todo, estoy haciendo un trabajo en el que necesito que al mostrar un combobox y el usuario lo selecciona (ya sea con las flechas o mouse haciendo doble click) que ese dato seleccionado se carge en el edit1.

otra duda es que en una linea de combobox tengo varios datos, por ejemplo: nombre y ciudad, estos al ser seleccionados deberian ser colocados noombre edit1 y ciudad en edit2, no se si se puede hacer esto con un combobox, tal vez con un stringgrid es mas simple no?

espero alguna ayudita, muchas gracias!

ecfisa 26-04-2013 01:50:16

Hola Maxi915.

Cuando tengas dudas donde publicar tu consulta elige el foro Varios, este tema no tiene relación con Delphi/web.

Cita:

hola gente, el titulo lo dice todo, estoy haciendo un trabajo en el que necesito que al mostrar un combobox y el usuario lo selecciona (ya sea con las flechas o mouse haciendo doble click) que ese dato seleccionado se carge en el edit1.
Código Delphi [-]
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  with TcomboBox(Sender) do
   if ItemIndex <> -1 then
     Edit1.Text := Items[ItemIndex];
end;

En cuanto a tu otra consulta, te ruego que la realices en un nuevo hilo como pedimos en la guía de estilo. Y sí, es posible hacerlo con un ComboBox, pero haría falta saber como están delimitados (o diferenciados) los distintos datos para para así poder extraerlos.

Saludos. :)

maxi915 26-04-2013 02:13:22

mi declaracion de tipos es:

Código Delphi [-]
empleados=record
                                id: string;
                                cod_postal:string;
                                 end;

               cod_postales=record
                               clave=integer;
                               ciudad:string;
                               end;
lo que necesito es que al ingresar codigos postales, si ese cod no existe, que me permita elejir uno de la lista, yo los estoy mostrando en combobox, en ese combobox muestro el archivo de postales.
En un renglon tengo: ciudad y codigo, necesito poder enviar lo que el usuario selecciona a un edit1, por ejemplo: enviar codigo a edit1 y ciudad a edit2, y asi se ahorraria de tener q escribirlo el usuario, haciendo click seria mas facil.
No se si se puede hacer esto con esta herramienta, estoy investigando como hacerlo con un stringgrid tambien, pero no encuentro nada.

estoy mostrando mi archivo de postales en el combobox , de esta forma:
Código Delphi [-]
 Reset(p);
    if filesize(p) <> 0
     then
       begin
        while not Eof(p) do
          begin
            read(p,Reg);
            if reg.borrado=False
            then
             begin
               lst1.AddItem('CODIGO POSTAL: ' + IntToStr(reg.clave) +
                         ' - CIUDAD: ' + reg.ciudad, lst1);
             end;
          end;
      end
     else
        showmessage('No hay códigos postales cargados');

espero haber sido correcto con la utilizacion de las etiquetas delphi. sino sepan disculpar

maxi915 26-04-2013 02:17:33

Disculpen Estoy Usando Listbox!!! No Combobox, Perdon!

Casimiro Notevi 26-04-2013 02:38:29

Te recuerdo, como ha indicado ecfisa, que leas nuestra guía de estilo, gracias.

maxi915 26-04-2013 03:12:38

la lei. que hize mal?

Casimiro Notevi 26-04-2013 04:10:28

Cita:

Empezado por maxi915 (Mensaje 459323)
la lei. que hize mal?

Pues no has debido de leerlo muy bien ;)

Cita:

NO ME GRITES QUE NO TE OIGO, o lo que es lo mismo, no escribas todo en mayúsculas

Si estás habituado a navegar por internet sabrás que si escribes en mayúsculas es equivalente a estar gritando en una conversación normal. Si lo haces para denotar urgencia, tranquilo, todos somos conscientes que los problemas que se proponen son urgentes. Por lo tanto escribe de manera correcta y en minúsculas, de esta manera evitaremos herir sensibilidades.
Además, una frase o párrafo escrito con letras mayúsculas es más cansado, lento y propenso a cometer errores de lectura que uno escrito en minúsculas.


Como has escrito todo en mayúsculas, el sistema lo ha filtrado y lo ha dejado así (mayúsculas/minúsculas): "Disculpen Estoy Usando Listbox!!! No Combobox, Perdon!"

maxi915 26-04-2013 05:59:59

bua, no pense q fuera para tanto,disculpen.

no pued encontrar la solucion

ecfisa 26-04-2013 08:49:45

Hola.

Un modo de lograr lo que buscas de manera bastante sencilla es usando un array dinámico:
Código Delphi [-]
...
implementation

const
   CFILENAME = 'CODPOST.DAT'; // Aquí ruta y nombre de tu archivo

type
  TCodPost = record
    clave  : Integer;
    ciudad : string[50];
  end;
  TFileCodPost = file of TCodPost;
  TVecCodPost  = array of TCodPost;

var
  FCodPost : TFileCodPost;
  VCodPost : TVecCodPost;

// Cargar arreglo y TStrings con los registros del archivo
procedure GetCodPost(var F: TFileCodPost; var V: TVecCodPost; TS: TStrings);
var
  CP : TCodPost;
begin
  Reset(F);
  while not eof(FCodPost) do
  begin
    Read(F, CP);
    SetLength(V, Length(V)+1);
    VCodPost[Length(V)-1].clave  := CP.clave;
    VCodPost[Length(V)-1].ciudad := CP.ciudad;
    TS.Add('CODIGO POSTAL: ' + FormatFloat('0000', CP.clave) +
           ' - CIUDAD: ' + CP.ciudad);
  end;
  CloseFile(F);
end;

// Comenzar
procedure TForm1.FormCreate(Sender: TObject);
begin
  // Se supone que el archivo de nombre CFILENAME ya ha sido creado 
  AssignFile(FCodPost, CFILENAME);
  GetCodPost(FCodPost, VCodPost, ListBox1.Items);
end;

// Mostrar en Edit1 y Edit2 datos de la selección
procedure TForm1.ListBox1Click(Sender: TObject);
begin
  with ListBox1 do
    if ItemIndex <> 0 then
    begin
      Edit1.Text := FormatFloat('0000', VCodPost[ItemIndex].clave);
      Edit2.Text := VCodPost[ItemIndex].ciudad;
    end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  SetLength(VCodPost, 0);
  VCodPost := nil;
end;
También podes usar TStrings o manipular la cadena de caracteres del ListBox, ...
Lamentablemente al usar un record, no se puede aprovechar el método Items.AddObject (TStrings) del ListBox.

Saludos.

Casimiro Notevi 26-04-2013 11:27:29

Cita:

Empezado por maxi915 (Mensaje 459328)
bua, no pense q fuera para tanto,disculpen.
no pued encontrar la solucion

Tiene la importancia que se le quiera dar, aunque eso es así en todos los sitios de internet, no sólo en clubdelphi.
Además demuestra que no has leído la guia de estilo.

TOPX 26-04-2013 15:01:24

Cita:

Empezado por Casimiro Notevi (Mensaje 459337)
Además demuestra que no has leído la guia de estilo.

Por esto, opino que, resultaría mejor que los moderadores pidieran "cumplir la guía de estilo" en lugar de "leer la guía de estilo".

-

Casimiro Notevi 26-04-2013 16:05:47

Cita:

Empezado por TOPX (Mensaje 459346)
Por esto, opino que, resultaría mejor que los moderadores pidieran "cumplir la guía de estilo" en lugar de "leer la guía de estilo".-

:rolleyes:
..........


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

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