PDA

Ver la Versión Completa : Alinear un listbox como si se tratara de un memo


krlox31416
19-02-2009, 04:38:46
Hola programadores!!!
Tengo un problema con un componente listbox, me gustaría saber si este componente tiene alguna propiedad para alinear los ítems agregados al listbox como ejemplo esta el memo en el cual se especifica el tipo de alineación ya sea alinear a la derecha, izquierda o centrado. type TAlignment = (taLeftJustify, taRightJustify, taCenter);
Eje:

procedure TForm1.Alienear_a_la_derechaClick(Sender: TObject);
begin
Memo1.Alignment:=taRightJustify;
end;
procedure TForm1.Alienear_a_la_izquierdaClick(Sender: TObject);
begin
Memo1.Alignment:=taLeftJustify;
end;
procedure TForm1.CentrarClick(Sender: TObject);
begin
Memo1.Alignment:=taCenter;
end;
el problema es que después de hacer una consulta cargo en el listbox los siguientes datos de mi tabla artículos con los atributos: Descripción y Precio

while not datamodule2.Table2.Eof do
begin
ListBox1.Items.Add(Datamodule2.Table2.FieldByName('Descripción').AsString
+' $ '+DataModule2.Table2.FieldByName('Precio').AsString+' PESOS');
Edit2.Text:=DataModule2.Table2.Fieldbyname('Precio').AsString;
cobros:= cobros + StrToFloat(Edit2.Text);
Edit2.Text:=FloatToStr(cobros);
Edit1.Text:='$ '+Edit2.Text +' pesos';
i:=1;
Edit9.Text:=CantidadEnLetra(StrToFloat(Edit2.Text) ,i);
ComboBox1.Text:='';
ComboBox1.SetFocus;
Exit;
end;
como podrán ver concateno el precio a la descripción y dejo espacios en blanco para que el precio no este muy junto a la descripción.
Así es como me queda en el listbox con el código anterior:
COCA COLA DE 600 ML $ 6.00 PESOS
CERVEZA CORONA MEDIA $ 8.00 PESOS
CIGARROS MALVORO $19.00 PESOS
TEQUILA CAZADORES 1 L $ 185.00 PESOS
Me gustaría que cada que realizo la consulta el precio siempre este justificado alineado a la derecha para que el usuario visualice mejor la lista de los precios y por cuestiones de estética.
Eje:

COCA COLA DE 600 ML $ 6.00 PESOS
CERVEZA CORONA MEDIA $ 8.00 PESOS
CIGARROS MALVORO $19.00 PESOS
TEQUILA CAZADORES 1 L $ 185.00 PESOS
Además el listbox es perfecto debido a sus características y se adecua al sistema que estoy haciendo por eso no utilizo el memo porque no me permite seleccionar su contenido e ir haciendo todo un recorrido como el listbox en sus ítems.
Esto fue lo primero que se me ocurrió:

ListBox1.Items.Text:=' '+ListBox1.Items[0];
Pero lo que note fue que tendría que ir incrementando la posición
Cual será la solución???
Utilizo delphi 5 y 6…
Por adelantado 1000 gracias si alguien puede ayudarme!!!
Estoy a sus ordenes!!!

roman
19-02-2009, 06:39:15
Bueno, pero, habiendo controles más apropiados para mostrar datos tabulares como el ListView,

http://img23.imageshack.us/img23/9581/listviewmy0.png (http://imageshack.us)

¿para qué molestarse arreglando el listbox?

// Saludos

luisgutierrezb
19-02-2009, 15:25:50
tambien puedes utilizar columnas en el listbox, busca en aboutDelphi el tip, o tambien puedes dibujarlos tu mismo, usa la api de windows drawtext

krlox31416
22-02-2009, 03:19:44
El problema como tal es que el listbox se adecua perfecto a mi diseño...
aqui adjunto una imagen!!!
http://img23.imageshack.us/my.php?image=ventas.jpg

krlox31416
22-02-2009, 04:01:12
[quote=krlox31416;338959]El problema como tal es que el listbox se adecua perfecto a mi diseño...
aqui adjunto una imagen!!!
http://img165.imageshack.us/img165/2641/ventas.jpg


y como dices roman casi no he utilizadi el listview...
se parece al dbgrid... se que le moviste a las propiedades para que se vea de esa forma...

pero como decia el componente listbox se adecua perfecto a mi diseño...

y lo que comenta luis... voy a seguir checando las columnas y eso de la api...

si tengo problemas les aviso... para que me sigan orientando...

muchas gracias por sus ideas...

se que mi porblema es muy sencillo pero tengo tiempo de no estar programando... jejeje:)

este hilo seguira dando más porque mis dudas no terminan...

un saludo!!!

Delphius
22-02-2009, 06:44:49
Hola krlox31416,
Disculpa pero creo que el componente que eliges no es el más adecuado. ¿Donde está el "perfecto" si para conseguir una visualización apropiada te vez obligado a meter mano a más código?

Yo preferiría emplear antes del TListBox un TStringGrid en todo caso. O un TListView como menciona roman... o porqué no... el DBGrid que de forma tan especial y automática puede mostrar los valores numéricos alineados a la derecha;). Con el DBGrid basta con asociarle un DataSource que esté ligado al DataSet.Y Listo, no más código.

La verdad es que me cuesta decir que el ListBox sea el más adecuado. Me gustaría saber que uso, aparte de algo visual, pretendes darle. Si nos pudieras comentar más al respecto de porqué consideras que es el más indicado tal vez podríamos entender tu punto de vista y/o proponerte otras alternativas.

Como recomendación, emplea Querys en vez de Tables. Sobre todo si el sistema que estás diseñando está pensado en arquitectura C/S.

Saludos,

dec
22-02-2009, 11:16:01
Hola,

Quisiera decir que, si se estima necesario, el "TListView" que recomendaba Román puede no mostrar las "cabeceras de las columnas", de modo que, si no me equivoco, la "lista" quedaría muy similar (por no decir igual) que una "TListBox" cualquiera, pero, mostraría los datos "tabulados", tal como quieres.

krlox31416
23-02-2009, 21:00:53
simplemente no deseo poner celdas...
pero noto que con el listbox puedo hacer el recorrido con el teclado e ir viendo su contenido...

en mi caso ir viendo la lista de articulos que se hacen mediante una consulta...

hecha con mi tabla...

empleando modo de busqueda manual a a traves de un lector de código de barra...

lo que si no uso mucho son los querys como comenta delphius y lo que comenta dec es hora de ir viendo el listview... pero casi no lo llegue a utilizar ...

hasta hace poco junto con el shell

bueno pero y el cdigo que pasaria???

solo lo adapto al listview cada que realize mi busqueda???...

bueno pues dejen sigo checando...

y gracias por seguirme orientando...

lo voy a checar a mas tardar un par de días mas...

saludos!!!:)

krlox31416
24-02-2009, 19:34:33
un dbgrid no me funcionaria porque al ligarlo al datasource...

este me jalara todos los datos contenidos en mi tabla articulos...

ademas las celdas no se ven bien en el diseño de la ventana...

aqui las imagenes de como quedaria con un dbgrid...

http://img253.imageshack.us/img253/4120/ventanacaja4.jpg

y aca una imagen de como se veria con el listbox... pero faltaria alinear el precio...

http://img12.imageshack.us/img12/3315/ventanacaja3.jpg

no creen que se ve mejor si uso el listbox???...

ademas sigo sin poder adaptar el listview...

no se como poner el codigo...

:confused::confused::confused: