Comunidad Gambas-es
DirChooser eventos de su FileView interno - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: General (https://gambas-es.org/forum-4.html)
+--- Tema: DirChooser eventos de su FileView interno (/thread-1648.html)



DirChooser eventos de su FileView interno - Shell - 29-03-2024

Buenas!.

Para el manipulador de eventos del fileview interno se debe declarar un observador, ¿ no ?.
Por ejemplo, me gustaría abrir uno de los archivos que muestra su fileview.

Lo hice de esta forma:

Código:
Private vigilante As Observer

Public Sub Form_Open()

  vigilante = New Observer(DirChooser1.FileView) As "VigiloFileview"

  DirChooser1.ShowFile = True
  DirChooser1.FileView.View = FileView.Detailed

End

Public Sub VigiloFileview_Click()

  Desktop.Open(DirChooser1.SelectedPath &/ DirChooser1.FileView.Current)

End

Lo pregunto por si existe otra forma directamente con el DirChooser.

Saludos


RE: DirChooser eventos de su FileView interno - Shordi - 30-03-2024

La única es crear una variable tipo fileview e igualarla.

Código:
private fviu as fileview as "miFileview"

fviu = Dirchooser1.fileview
A partir de ahí tienes tu fileview al alcance con la posibilidad de manipular sus variables y eventos.

Es una mejora sobre todo estética y de claridad ahorrando esa ristra de la jerarquía separada por puntos.

Saludos


RE: DirChooser eventos de su FileView interno - Shell - 31-03-2024

(30-03-2024, 21:43)Shordi escribió: private fviu as fileview as "miFileview"

Eso parece que no va a funcionar. Sad
Gambas no te admite dos "as" seguidas. 

Tu puede declarar el tipo. Pero para crear el control hay que decirle su
contenedor y ¿ cuál es el contenedor de fviu ?. 

Cuando creas el manipulador de sus eventos, necesita tener
un contenedor.

Ahora bien "Si" puedes hacer esto:

Código:
Private vigilante As Observer
Private fviu As FileView

Public Sub Form_Open()

  vigilante = New Observer(DirChooser1.FileView) As "VigiloFileview"

  fviu = DirChooser1.FileView

  DirChooser1.ShowFile = True
  fviu.View = FileView.Detailed

End

Public Sub VigiloFileview_Click()

  Desktop.Open(DirChooser1.SelectedPath &/ fviu.Current)

End

Lo que se ha ganado es reducir la ristras de puntos.

¿ No estuviste una vez comentando que por medio del contenedor padre lo que se haga, su manipulador de eventos, podía afectar a sus
hijos ?. Algo parecido comentaste.

Saludos


RE: DirChooser eventos de su FileView interno - Shordi - 31-03-2024

Cita:Eso parece que no va a funcionar. Sad
Gambas no te admite dos "as" seguidas. 
 Tienes razón. (Nota Mental: No teclear código con los pulgares y sin las gafas cuando estés cagando.)

Prueba así:
Código:
Private fviu As FileView
Private vigilante As Observer

Public Sub Form_Open()

    fviu = DirChooser1.FileView
    vigilante = New Observer(fviu) As "FViu"
    DirChooser1.ShowFile = True
    fviu.View = FileView.Detailed

End

Public Sub Fviu_Click()

    Desktop.Open(fviu.Path)

End

Ya me cuentas

Cita:¿ No estuviste una vez comentando que por medio del contenedor padre lo que se haga, su manipulador de eventos, podía afectar a sus
hijos ?. Algo parecido comentaste.

Creo que te refieres a la propiedad Proxy que tienen los controles.
Cuando un contenedor, como DirChooser, contiene otros controles, como FileView, se puede establecer, por ejemplo en el evento _new(), que

[code]

Siendo Me el Dirchooser

Con eso el control padre responde a los eventos de teclado y ratón del control hijo.

Pero nunca lo he probado con controles ya creados, sólo en los propios.

Saludos


RE: DirChooser eventos de su FileView interno - Shell - 31-03-2024

(31-03-2024, 18:02)Shordi escribió: Tienes razón. (Nota Mental: No teclear código con los pulgares y sin las gafas cuando estés cagando.)

Big Grin Big Grin

El código funciona perfectamente. Se parecen, pero es más breve.
Lo que no sea la experiencia con los controles.

Veré lo de la propiedad proxy para ver como va.

Saludos