Listin Gambas2
Création d'un programme en Gambas2 : un répertoire téléphonique pas à pas
Origine : http://listingambas.blogspot.com/2011/06/modulo-filtro-buscar-y-filtrar-instr.htmlModule de filtre : Filtre de recherche et InStr
Pour ce faire nous allons utiliser le TextBoxRecherche où l'on va entrer les mots à chercher (jusqu'à 3) (complets ou non), séparés par des virgules. Exemple: "Sev, 954,43," por trouver tous les documents contenant le mot «Sev» comme « SEV illa »,« 951 954 953 »et« 942 485 43 ", indépendamment de l'ordre dans lequel ils apparaissent.
PUBLIC SUB TextBoxRecherche_KeyPress
()
IF key. Code
=
key.enter
OR
key. Code
=
key.Return
THEN
BoutonRecherche
.
SetFocus
ENDIF
Et le code BoutonRecherche, qui est celui contenant l'appel à la procédure de recherche du module filtre :
PUBLIC SUB BoutonRecherche_Click()
DIM c AS String
DIM resultat AS Integer
DIM patrons AS NEW String[]]
DIM numero_patrons AS Integer
numero_patrons = 0
patrons = Split(Upper$(TextBoxRecherche.text), ",")
numero_patrons = patrons.Count
IF numero_patrons = 0 THEN
patrons.resize(3)
patrons[0] = "*"
patrons[1] = " "
patrons[2] = " "
END IF
IF numero_patrons = 1 THEN
patrons.resize(3)
patrons[1] = " "
patrons[2] = " "
END IF
IF numero_patrons = 2 THEN
patrons.resize(3)
patrons[2] = " "
END IF
IF numero_patrons > 3 THEN
Message.Info("3 patrons de recherche maximum")
TextBoxRecherche.SetFocus
GOTO finfiltre
END IF
resultat = filtrer.Conceptfiltre(patrons[0], patrons[1], patrons[2])
IF resultat = 1 THEN
GridViewDonnees.Background = Color.cyan
ELSE
GridViewDonnees.Background = Color.White
END IF
finfiltre:
END

PUBLIC SUB
ToolButtonAnnulerFiltre_Click ()
TextBoxRecherche.
text
=
""
BoutonRecherche_Click
END
Nous
pouvons également utiliser la propriété "ToolTip" pour indiquer
à l'utilisateur l'action effectuée par la touche (quand on a passe sur
le bouton un message en jaune s'affiche) Dans l''IDE de Gambas, nous cherchons la propriété ToolTip du bouton ToolButtonAnnulerFiltre et y écrivons "Annuler filtre". D'autre part, dans module filtre, nous allons créer deux sous-programmes qui auront la responsabilité de trouver des concordances réelles et de remplir gridViewDonnées

PUBLIC FUNCTION ConceptFiltre(patron AS String,
OPTIONAL patron1 AS String, OPTIONAL
patron2 AS String) AS Integer
DIM lignes AS String
fmain.GridViewDonnees.Rows.count = 0
nombre = 0 'compteur de fichiers valides (non supprimés)
IF patron = "*" OR patron = "" THEN
'tracer toutes les données
titre.remplir()
RETURN 0
ENDIF
IF patron1 = "" THEN patron1 = " "
IF patron2 = "" THEN patron2 = " "
FOR a = 0 TO var.id.Count - 1
lignes = ""
lignes &= var.id[a]
lignes &= var.dni[a]
lignes &= var.nom[a]]
lignes &= var.prenoms[a]
lignes &= var.entreprise[a]
lignes &= var.poste[a]
lignes &= var.tel_entreprise[a]
lignes &= var.tel_perso[a]
lignes &= var.fax[a]
lignes &= var.mobile_entreprise[a]
lignes &= var.mobile_perso[a]
lignes &= var.page[a]
lignes &= var.photo[a]
lignes &= var.adresse[a]
lignes &= var.commentaires[a]
lignes &= var.date_donnees[a]
lignes &=var.mail[a]
lignes = Upper$(lignes)
valider = estdans(llignes, patron) AND estdans(lignes, patron21) AND estdans(lignes, patron2)
.GridViewDonnees.Rows.height = 25
.GridViewDonnees[numero - 1, 0].Picture = Picture[var.photo[a]]
ELSE
.GridViewDonnees[nombre - 1, 0].Alignment = 1
.GridViewDonnees.Rows.height = 100
.GridViewDonnees[nombre - 1, 0].Picture = Picture[miniatures.faire(var.photo[a], "96x96")]
ENDIF
DIM lignes AS String
DIM a AS Integer
DIM nombre AS Integer
DIM valider AS Boolean
fmain.GridViewDonnees.Rows.count = 0
nombre = 0 'compteur de fichiers valides (non supprimés)
IF patron = "*" OR patron = "" THEN
'tracer toutes les données
titre.remplir()
RETURN 0
ENDIF
IF patron1 = "" THEN patron1 = " "
IF patron2 = "" THEN patron2 = " "
FOR a = 0 TO var.id.Count - 1
lignes = ""
lignes &= var.id[a]
lignes &= var.dni[a]
lignes &= var.nom[a]]
lignes &= var.prenoms[a]
lignes &= var.entreprise[a]
lignes &= var.poste[a]
lignes &= var.tel_entreprise[a]
lignes &= var.tel_perso[a]
lignes &= var.fax[a]
lignes &= var.mobile_entreprise[a]
lignes &= var.mobile_perso[a]
lignes &= var.page[a]
lignes &= var.photo[a]
lignes &= var.adresse[a]
lignes &= var.commentaires[a]
lignes &= var.date_donnees[a]
lignes &=var.mail[a]
lignes = Upper$(lignes)
valider = estdans(llignes, patron) AND estdans(lignes, patron21) AND estdans(lignes, patron2)
IF valider THEN
nombre += 1
FMain.GridViewDonnees.Rows.COUNT = nombre
WITH FMain
IF FMain.CheckBoxmini.Value = FALSE THEN .GridViewDonnees.Rows.height = 25
.GridViewDonnees[numero - 1, 0].Picture = Picture[var.photo[a]]
ELSE
.GridViewDonnees[nombre - 1, 0].Alignment = 1
.GridViewDonnees.Rows.height = 100
.GridViewDonnees[nombre - 1, 0].Picture = Picture[miniatures.faire(var.photo[a], "96x96")]
ENDIF
.GridViewDonnees[nombre
- 1, 0].Picture = Picture[var.photo[a]]
.GridViewDonnees[nombre
- 1, 1].text = var.nom[a]
.GridViewDonnees[nombre
- 1, 2].text = var.prénoms[a]
.GridViewDonnees[nombre
- 1, 3].text = var.dni[a]
.GridViewDonnees[nombre
- 1, 4].text = var.entreprise[a]
.GridViewDonnees[nombre
- 1, 5].text = var.poste[a]
.GridViewDonnees[nombre
- 1, 6].text = var.tel_entreprise[a]
.GridViewDonnees[nombre
- 1, 7].text = var.mobilel_entreprise[a]
.GridViewDonnees[nombre
- 1, 8].text = var.tel_perso[a]
.GridViewDonnees[nombre
- 1, 9].text = var.mobile_perso[a]
.GridViewDonnees[nombre
- 1, 10].text = var.fax[a]
.GridViewDonnees[nombre
- 1, 11].text = var.mail[a]
.GridViewDonnees[nombre
- 1, 12].text = var.page[a]
.GridViewDonnees[nombre
- 1, 13].text = var.adresse[a]
.GridViewDonnees[nombre
- 1, 14].text = var.commentaires[a]
.GridViewDonnees[nombre
- 1, 15].text = var.date_donnees[a]
.GridViewDonnees[nombre
- 1, 16].text = var.id[a]
END WITH ENDIF
Finnext:
NEXT
IF numero > 0
THEN
' ON A TROUVE UN DOUBLON
RETURN 1
ELSE
RETURN 0
ENDIF
END '-----------------------------------------------------
'
fonction estdans
'-----------------------------------------------------
SUB estdans(phrase
AS String,
patron
AS String) AS Boolean
IF
patron = " " THEN
RETURN
1
ELSE
RETURN InStr(phrase,
patron)
ENDIF
END
La fonction estdans(),
grâce
à l'instruction InSr renvoie si la phrase contient le
patron (true ou false)