Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problemas con el TreeView y el ListView (https://www.clubdelphi.com/foros/showthread.php?t=24191)

quake2420 11-08-2005 13:13:03

Problemas con el TreeView y el ListView
 
Hola amigos estoy implementando una especie de explorador de windows donde a la izquierda de la interfaz tengo un arbol de directorios(TTreeView) y en la derecha tengo una lista de iconos(TListView).
Mi problema es como puedo diferenciar a la hora de por ejemplo borrar una carpeta, que yo haya borrado esa carpeta desde el TListView o desde el TReeView. El codigo que tengo implementado es el siguiente:
Código:

procedure TMainForm.Deleteclick1(Sender: TObject);
begin
       
  if TListView.selected.selected then
                Deletecategory
  else
                Deletecategoryanim


dec 11-08-2005 13:29:25

Hola,

Si el método que escribiste lo comparten ambos componentes "TreeView" y "ListView" puedes diferenciar quién lo ejecutó mediante el parámetro "Sender" del mismo, o sea, comprobando el tipo de este. Esto sería una cosa así:

Código Delphi [-]
 procedure BorrarCarpeta(Sender: TObject);
  begin
    if (Sender is TTreeView) then
    begin
      // Lo que tengas pensado hacer
    end;
    if (Sender is TListView) then
    begin
      // ...
    end;
  end;

quake2420 11-08-2005 13:48:51

No me funciona
 
He puesto el codigo como tu me has dicho y no me funciona.
¿Puede ser por que el procedimiento Deleteclick sea un item de un objeto menu y por eso no me diferencia si yo donde estoy es en el treeview o en el listview
SAludos

dec 11-08-2005 14:49:33

Hola,

Cita:

Empezado por quake2420
¿Puede ser por que el procedimiento Deleteclick sea un item de un objeto menu y por eso no me diferencia si yo donde estoy es en el treeview o en el listview?

Justamente. Te será imposible averiguar que el "Sender" del método es un "TTreeView" o un "TListView" si al método se llega a través de un "TMenuItem"... ¿No puedes crear un método que pudiera utilizarse tanto en el "TListView", en el "TTreeView" y hasta en el "TMenuItem"? Lo digo un tanto a la ligera, pero, que sepas que no te funciona por lo dicho: compruébalo mirando que el "Sender" es un "TMenuItem", verás como en tu caso (ahora mismo) todo irá como se espera.

yusnerqui 11-08-2005 15:35:53

Hola
 
Regresando a la pregunta original, puedes comprobar el componente que tiene el foco en estos momentos a través de la propiedad Focused del mismo. Con esto al dar clic en el menuitem sabrás si estás posicionado en el TTreeView o en el TListView


Código Delphi [-]
 if TreeView1.Focused then
   BorraEnTreeView
 else if ListView1.Focused then
      BorraEnListView
    else
      ShowMessage('No hay nada seleccionado');

Espero te ayude

Saludos.

quake2420 11-08-2005 20:57:48

Me funciona!!!!
 
Gracias yusnerqui, como dices tú en tu ultima respuesta me funciona perfectamente.
Muchas gracias!!!!!!
Saludos


La franja horaria es GMT +2. Ahora son las 00:56:15.

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