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 08-02-2008
Avatar de totote
totote totote is offline
Miembro
 
Registrado: oct 2006
Posts: 150
Poder: 18
totote Va por buen camino
Llenar ListBox con fuentes del sistema

Hola a todos.

Queria saber si se puede llenar un ListBox con las fuentes que estan instaladas en la pc.

Saludos.
__________________
¡Oh nooo! no compartas, compartir es pirateria, compartir te llevara a la carcel - Revolution OS
Responder Con Cita
  #2  
Antiguo 08-02-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Fíjate en este hilo, tienes varias formas de conseguir lo que quieres.
Responder Con Cita
  #3  
Antiguo 08-02-2008
Avatar de totote
totote totote is offline
Miembro
 
Registrado: oct 2006
Posts: 150
Poder: 18
totote Va por buen camino
Muchas gracias dec
__________________
¡Oh nooo! no compartas, compartir es pirateria, compartir te llevara a la carcel - Revolution OS
Responder Con Cita
  #4  
Antiguo 09-02-2008
Khronos Khronos is offline
Miembro
 
Registrado: abr 2007
Posts: 298
Poder: 18
Khronos Va por buen camino
Código Delphi [-]
Listbox1.items:=screen.fonts;


Salu2
Responder Con Cita
  #5  
Antiguo 09-02-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por Khronos Ver Mensaje
Código Delphi [-]
Listbox1.items:=screen.fonts;


Salu2
Vaya, que simple lo hiciste......

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #6  
Antiguo 09-02-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Cita:
Empezado por Khronos Ver Mensaje
Código Delphi [-]
Listbox1.items:=screen.fonts;

Salu2
¿eso no explota?

Por si las moscas:
Código Delphi [-]
ListBox1.Items.AddStrings(Screen.Fonts);



Salu2
Responder Con Cita
  #7  
Antiguo 09-02-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por ixMike Ver Mensaje
¿eso no explota?
Explotar ????, pues he ejecutado la instrucción y pues no, funcionó bien.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #8  
Antiguo 09-02-2008
Avatar de totote
totote totote is offline
Miembro
 
Registrado: oct 2006
Posts: 150
Poder: 18
totote Va por buen camino
la verdad es que está resuelto muy facil XD jajaja
__________________
¡Oh nooo! no compartas, compartir es pirateria, compartir te llevara a la carcel - Revolution OS
Responder Con Cita
  #9  
Antiguo 09-02-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cita:
Empezado por ixMike Ver Mensaje
¿eso no explota?
¡Claro que no!

Gracias al estupendo trabajo del equipo de desarrollo de la VCL!

Código Delphi [-]
procedure TCustomListBox.SetItems(Value: TStrings);
begin
  if Style in [lbVirtual, lbVirtualOwnerDraw] then
    case Style of
      lbVirtual: Style := lbStandard;
      lbVirtualOwnerDraw: Style := lbOwnerDrawFixed;
    end;
  Items.Assign(Value);
end;

¡gracias, chavales! Por eso es un placer programar en Delphi!
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #10  
Antiguo 09-02-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
La última vez que asigné TStrings como si fuera un valor me explotó el petardo en la mano:

Código Delphi [-]
var
  Lista: TStrings;
begin
...
Listbox1.Items:=Lista;
...
Lista.Free;


Responder Con Cita
  #11  
Antiguo 09-02-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 20
keyboy Va por buen camino
Eso explota pero por usar un TStrings en lugar de un TStringList.

Bye
Responder Con Cita
  #12  
Antiguo 09-02-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Bueno, eso depende....

Código Delphi [-]
var
  Lista: TStrings;
begin
  Lista := TStringList.Create();
  try
    ...
    Listbox1.Items:=Lista;
    ...
  finally
    Lista.Free;
  end;

Esto debiera ir perfecto!
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #13  
Antiguo 09-02-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Cita:
Empezado por keyboy Ver Mensaje
Eso explota pero por usar un TStrings en lugar de un TStringList.

Bye
Eso explota porque al hacer ListBox1.Items:=Lista y después liberar Lista, al intentar al acceder a ListBox1.Items... Error Acces violation bla bla bla porque ya no existe, ¡lo he liberado!


Salu2.
Responder Con Cita
  #14  
Antiguo 09-02-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Parece que no leíste el código que puse en el post #9 de este hilo. Ahora veo que solo seguís suponiendo que explotaría... pero en realidad no pasa. Te invito a comprobarlo.

Código Delphi [-]
var
  Lista: TStrings;
begin
  Lista := TStringList.Create();
  try
    Lista.Add('A que no exploto!!!');
    Listbox1.Items:=Lista;
  finally
    Lista.Free;
  end;
  try
    ShowMessage(ListBox1.Items[0]);
  except
    ShowMessage('Explotó!');
  end;
end;

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate

Última edición por jachguate fecha: 09-02-2008 a las 03:25:56. Razón: Corregir ShowMessage
Responder Con Cita
  #15  
Antiguo 09-02-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Cita:
Empezado por jachguate Ver Mensaje
Parece que no leíste el código que puse en el post #9 de este hilo. Ahora veo que solo seguís suponiendo que explotaría... pero en realidad no pasa. Te invito a comprobarlo.
Es cierto, pero, ¡si a mí me pasaba!

Mí no entender.


Edito: creo recordar que me pasaba entre objetos TStrings, no con la propiedad Items.
Responder Con Cita
  #16  
Antiguo 09-02-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por ixMike Ver Mensaje
Eso explota porque al hacer ListBox1.Items:=Lista y después liberar Lista, al intentar al acceder a ListBox1.Items... Error Acces violation bla bla bla porque ya no existe, ¡lo he liberado!


Salu2.
Amigo ixMike, que quieres decir con intentar acceder a ListBox1.Items, si liberas Lista el ListBox1.Items ya cargo lo que tuviese Lista, asi que no veo donde este el error de acceso.

Prueba este código, funciona sin problemas y accedes al ListBox tantas veces quieras y Lista ya está "liberada".......

Código Delphi [-]
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    ListBox1: TListBox;
    procedure Button1Click(Sender: TObject);
    procedure ListBox1DblClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Lista: TStrings;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Lista := TStringList.Create;
  with Lista do begin
    Add('This example uses A string List.');
    Add('It is the easiest way to add strings');
    Add('to a combobox''s list of strings.');
    Add('Always remember TStrings.Create method');
    Add('is abstract; So use TStringList.Create');
    Add('method instead.');
  end;
  Listbox1.Items := Lista;
  Lista.Free;
end;

procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
  ShowMessage(ListBox1.Items.Strings[ListBox1.ItemIndex]);
end;

end.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #17  
Antiguo 09-02-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
No lo tengo a mano ahora para confirmarlo... pero estoy seguro que esto es así desde Delphi 1.

Quizás te pasaba con Turbo Pascal..

Un saludo.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #18  
Antiguo 09-02-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Cita:
Empezado por egostar Ver Mensaje
Amigo ixMike, que quieres decir con intentar acceder a ListBox1.Items, si liberas Lista el ListBox1.Items ya cargo lo que tuviese Lista, asi que no veo donde este el error de acceso.

Prueba este código, funciona sin problemas y accedes al ListBox tantas veces quieras y Lista ya está "liberada".......

Salud OS
se te adelantó jachguate

De todas formas, Items no es una variable tipo dato a la que se le asignes un número, un carácter... sino que es un objeto... creo que ahí estaba mi jaleo mental

Gracias a los dos.


Añado: me pasaba con Delphi 3, pero ya digo, puede que fuera entre objetos TStrings, o algo así...
Responder Con Cita
  #19  
Antiguo 09-02-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por jachguate Ver Mensaje
No lo tengo a mano ahora para confirmarlo... pero estoy seguro que esto es así desde Delphi 1.

Quizás te pasaba con Turbo Pascal..

Un saludo.

Casi estoy seguro que el problema era que usabas esto

Código Delphi [-]
var
  Lista: TStrings;

begin
  Lista := TStrings.Create;
end;

en lugar de esto

Código Delphi [-]
var
  Lista: TStrings;

begin
  Lista := TStringList.Create;
end;

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #20  
Antiguo 09-02-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Fantástico, ¿no?
¿Por qué crees que he dicho esto antes?

Cita:
Empezado por yo mero
Gracias al estupendo trabajo del equipo de desarrollo de la VCL!
...
¡gracias, chavales! Por eso es un placer programar en Delphi!
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
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
agregar y/o eliminar items de un listbox a partir de otro listbox Goyo PHP 2 27-09-2007 16:46:30
Llenar un listbox con 3 columnas manel660 OOP 4 14-06-2007 21:05:46
Recuperar Fuentes JODELSA Varios 2 26-01-2007 22:01:33
trabajo con fuentes gustavoh .NET 0 28-08-2006 14:13:31
Fuentes de microsoft en la red !!! abel Noticias 11 19-02-2004 15:25:37


La franja horaria es GMT +2. Ahora son las 04:02:28.


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