PDA

Ver la Versión Completa : listado con varios datos usando TListBox o TDBGrid


mrmanuel
17-05-2003, 19:01:59
Hola a todos.

Tengo que hacer un listado de texto normal y corriente, pero q tiene varios valores en una misma linea.

Ejem:

Cabecera1 Cabecer2 cabecer3
-----------------------------------------

nombre1 apel1_1 apel1_2 (Lista)
nombre2 apel2_1 apel2_2
..
..
nombreN apelN_1 apelN_2



En dicho listado, hay unas cabeceras puestan con un (Label normal) y separando los datos le he metidio una linea divisoria (En plan cutre)

En un principio funciona bien, pero cuando cambio de un Pc a otro, con distinto sistema operativo (Win_Me, Win XP), el listado se me descontrola, en el sentido de que los datos no aparecen justo debajo de las cabeceras, tal y como tenian que aparecer. Y los datos se montan en la linea divisoria (anteriormente mencionada).


Mi pregunta es. ¿como puedo hacer el listado, sin que se me salga del hueco divisorio q le doy?

Los datos no estan en ninguna tabla, por lo q no he podio usar no DBGrid directamente.

El tipo de letra que uso, es la Arial normal, disponible en los dos equipos.

Ruben_Cu
17-05-2003, 20:00:11
Hola mrmanuel, ¿porque no pruebas mostrarlos en un ListView?
Creo que con esa componente podrías lograrlo, revisa la ayuda con relación a ella recuerdo que tiene ejemplos de como usarla.
Saludos

__cadetill
17-05-2003, 20:42:31
Hola

Si coges la idea de Rube_cu, solo decirte que en mi web tienes una demo de como funciona dicho componente (la web en la firma)

mrmanuel
22-05-2003, 01:33:50
Hola

no consigo echarlo a andar

consigo sacar un dato en una columna, pero no se como meter otro dato en las siguientes columnas

Para meter el dato en la 1ª columna de la lista hago lo siguiente:

"Form.Lista_TListView.Items.Add.Caption:= Dato"

y lo q obtengo es:

Columna 1 Columna 2 Coumnal 3
--------------------------------------------------------
DAto1
Dato2
Dato3


¿como puedo meter datos en las siguientes columnas?

Ruben_Cu
22-05-2003, 01:58:12
Hola mrmanuel, te decía que en la ayuda habían ejemplos aqui te envio una copiado de ella, los objetos están creados en tiempo de ejecución y los textos cargados a partir de un arreglo de cadenas, pienso que puedes adecuarlo a tu caso. En cualquier caso si sigues con problemas regresa por acá. procedure TForm1.FormCreate(Sender: TObject);

const
Names: array[0..5, 0..1] of string = (
('Rubble', 'Barney'),
('Michael', 'Johnson'),
('Bunny', 'Bugs'),
('Silver', 'HiHo'),
('Simpson', 'Bart'),
('Squirrel', 'Rocky')
);

var
I: Integer;
NewColumn: TListColumn;
ListItem: TListItem;
ListView: TListView;
begin
ListView := TListView.Create(Self);
with ListView do
begin
Parent := Self;
Align := alClient;

ViewStyle := vsReport;

NewColumn := Columns.Add;
NewColumn.Caption := 'Last';
NewColumn := Columns.Add;
NewColumn.Caption := 'First';

for I := Low(Names) to High(Names) do
begin
ListItem := Items.Add;
ListItem.Caption := Names[I][0];
ListItem.SubItems.Add(Names[I][1]);
end;
end;

end;
Saludos

mrmanuel
22-05-2003, 03:20:47
muchas gracias, me ha funcionado lo que queria hacer.


pero ahora tengo un problema, necesito sacar el valor seleccionado (uno de los que he cargado anteriormente) al pulsar sobre ella con el ratón


con una lista norma lo hago de la siguiente manera:

I:= F_Vis_Test_Exist.Lista.ItemIndex; //Indice activo de la lista
Linea:= F_Vis_Test_Exist.Lista.Items.Strings[I];


pero en este tipo de lista no funciona el invento

Ruben_Cu
22-05-2003, 04:18:59
Hola , en este caso la filosofía cambia un poco, si quieres extraer los valores pasado al ListView hay que considerar que esto difiere del ListBox, en este caso debes extraer cada uno de las cadenas pasadas al ListView una forma de colocarlas por ejemplo en un edit, sería;
procedure TForm1.ListView1SelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
begin
edit1.Text:=item.Caption+' '+item.SubItems[0];
end;

En caso de tener mas subitems los agregarías incrementando su índice.
Espero te complemente esta aclaración y suerte
Saludos