Comunidad Gambas-es
filtro como de pcmanfm-qt - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: Aplicaciones/Fragmentos de Código (https://gambas-es.org/forum-8.html)
+--- Tema: filtro como de pcmanfm-qt (/thread-1495.html)



filtro como de pcmanfm-qt - playmepe - 03-09-2023

Buenas noches/dias a todos, mi consulta es lo siguiente; alguien tiene idea de como hacer el filtro como de pcmanfm-qt que cuando vas escribiendo algo se va filtrando el nombre de los archivos. estoy pensando utilizar dirview, fileview y un combobox pero me gustaría sugerencias y ayuda del código.
Gracias de antemano.


RE: filtro como de pcmanfm-qt - vuott - 03-09-2023

Hay algo similar para el ComboBox:

https://gambas-es.org/showthread.php?tid=910


RE: filtro como de pcmanfm-qt - cogier - 03-09-2023

Espero que esto te ayude.
Ejecute este código en un nuevo programa gráfico.
El 'Filtro' usa el comando Instr así que no uses "*". Buscando bash encontrará .bash_history, .bash_logout y .bashrc

Código:
' Gambas class file

Splitter1 As Splitter
DirChooser1 As DirChooser
VBox1 As VBox
TextBoxFilter As TextBox
ScrollView1 As ScrollView
Panel1 As Panel
Textlabel1 As TextLabel
PictureBox1 As PictureBox

Public Sub DirChooser1_Change()
  
  Dim sDir As String[] = Dir(DirChooser1.SelectedPath, "*", gb.File)
  Dim iLoop As Integer
  Dim oObj As Object
  
  For Each oObj In ScrollView1.Children
    oObj.Delete
  Next
  
  If Trim(TextBoxFilter.Text) <> "" Then
    For iLoop = sDir.max To 0 Step -1
      If InStr(UCase(sDir[iLoop]), UCase(TextBoxFilter.Text)) = 0 Then sDir.Delete(iLoop, 1)
    Next
  End If
  
  For iLoop = 0 To sDir.Max
    With Panel1 = New Panel(ScrollView1)
      .Width = 150
      .Height = 100
      .Arrangement = Arrange.Vertical
    End With
    With PictureBox1 = New PictureBox(Panel1)
      .Width = 100
      .Height = 60
      .Expand = True
      .Mode = PictureBox.Contain
      .Alignment = Align.Center
      .Picture = Picture["icon:/32/file"]
    End With
    With Textlabel1 = New TextLabel(Panel1)
      .Height = 20
      .Width = 100
      .AutoResize = True
      .Text = sDir[iLoop]
      .Alignment = Align.Center
      .Wrap = True
      .Padding = 5
    End With
  Next
  
End

Public Sub TextBoxFilter_Change()
  
  DirChooser1_Change()
  
End

Public Sub Form_Open()
  
  With Me
    .Width = 1000
    .Height = 675
    .Arrangement = Arrange.Vertical
    .Padding = 5
  End With
  
  With Splitter1 = New Splitter(Me)
    .Expand = True
    .Spacing = True
    .Arrangement = Arrange.Horizontal
  End With
  
  DirChooser1 = New DirChooser(Splitter1) As "DirChooser1"
  DirChooser1.Expand = True
  
  VBox1 = New VBox(Splitter1)
  VBox1.Expand = True
  
  With TextBoxFilter = New TextBox(VBox1) As "TextBoxFilter"
    .Height = 25
    .Width = 20
    .Placeholder = "Enter filter here"
  End With
  
  With Panel1 = New Panel(VBox1)
    .Height = 7
    .Width = 20
  End With
  
  With ScrollView1 = New ScrollView(VBox1)
    .Expand = True
    .Arrangement = Arrange.Row
  End With
  
  Splitter1.Layout = [20, 80]
  DirChooser1_Change
  TextBoxFilter.SetFocus  
  
End



RE: filtro como de pcmanfm-qt - playmepe - 04-09-2023

Perfecto cogier, es exactamente lo que busco, gracias muy agradecido