Delphi - check en un elemento del Listview

 
Vista:

check en un elemento del Listview

Publicado por chaval (2 intervenciones) el 02/05/2003 06:28:06
buenas tardes a todos.
les hago una consulta para saber como puedo atrapar el evento que genera un Listview al marcar el check de un elemento, o algun truco para saberlo
gracias de antemano a todos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:check en un elemento del Listview

Publicado por Ernesto De Spirito (706 intervenciones) el 02/05/2003 23:22:27
El ListView genera un evento OnChange cuando se cambian los datos de un elemento del ListView. El parámetro Change te dice si se ha cambiado el texto, la imagen o el estado, y el parámetro Item te indica el elemento que produjo el cambio.

procedure TForm1.ListView1Change(Sender: TObject; Item: TListItem;
Change: TItemChange);
begin
if Change = ctState then
..........
end;

Ernesto De Spirito
http://www.latiumsoftware.com/es/index.php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:check en un elemento del Listview

Publicado por chaval (2 intervenciones) el 03/05/2003 20:52:58
Ernesto
hize como me lo indicaste en el evento Change y puse algo como,
if Change = ctState then MessageBox(0, 'prueba', '...', 0);
pero al parecer se ejecuta el evento al crearse el elemento, al destruirse, tambien al seleccionarlo y al marcar/ no marcar el checkbox.
estoy interesado solo en el marcar/no marcar el checkbox
gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:check en un elemento del Listview

Publicado por Ernesto De Spirito (706 intervenciones) el 03/05/2003 23:23:16
Me he puesto a probar el código, y he comprobado que efectivamente el evento Change no te servirá. Hay que buscarle otra solución.

¿Qué Delphi tienes? Porque el ListView que viene con el mío no tiene checkbox para los elementos, y los implemento mediante un ImageList asignado a la propiedad StateImages, el que tiene dos imágenes para los estados del checkbox (una con tilde y otra sin tilde), y realizo el cambio de estado por código en el evento OnMouseDown cuando se pulsa el botón izq. del ratón sobre el icono de estado. De esta forma, Al hacer el cambio de estado por código de esta manera entonces yo sé cuándo opera un cambio y puedo si quiero realizar un procesamiento con eso:

procedure TForm1.ListView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
ListItem: TListItem;
begin
if Button = mbLeft then
if htOnStateIcon in TListView(Sender).GetHitTestInfoAt(X, Y) then
begin
ListItem := TListView(Sender).GetItemAt(X, Y);
if ListItem <> nil then begin
ListItem.StateIndex := 1 - ListItem.StateIndex;
ShowMessage('Cambio de estado');
end;
end;
end;

Espero que te sea de utilidad.

Ernesto De Spirito
http://www.latiumsoftware.com/es/index.php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar