German Frage an Filippo

newbie

Member
Licensed User
Longtime User
Hallo Filippo,

das mit den Spalten ausblenden hat geklappt,
aber ich verzweifle an folgenden Problemen:

angenommen die Tabelle (Grid) hat eine Größe um 15 Zeilen darzustellen,
ich habe aber bis zu 10.000 oder mehr Einträge

- wie kann ich die Tabelle dazu bewegen auf einen bestimmten Eintrag zu
scrollen
- wie kann ich diesen Eintrag womöglich noch irgendwie hervorheben
(RowIndikator oder farblich)
- wie kann ich z.B. einen Mengeneintrag ändern OHNE die gesamte Tabelle
sequenziell nach diesem Eintrag zu durchsuchen

Gibts da irgendwie eine Möglichkeit das hinzubekommen,
evtl. auch mit anderen libraries

Grüße Newbie
 
D

Deleted member 103

Guest
Hallo newbie,

ich habe für dich ein Beispiel gemacht, schau es dir an.

Da ist ein Button (Show Nr.) und ein NumUpDown mit dem du immer die eingestellte Zeile markieren und sichtbar machen kannst.


Ciao,
Filippo
 

newbie

Member
Licensed User
Longtime User
Hallo Filippo,

ich hatte es schon richtig gemacht, hab nur nach dem Update der Zeile den Focus wieder auf mein Eingabefeld gesetzt , dadurch wird das Highlight
wieder von der Zeile genommen.
Kann man da was machen, daß die Zeile hervorgehoben bleibt auch wenn
Listview den Focus verliert.

Grüße Newbie
 
D

Deleted member 103

Guest
Hallo newbie,
Kann man da was machen, daß die Zeile hervorgehoben bleibt auch wenn
Listview den Focus verliert.
leider ist da nichts zu machen.
Es ist aber so das die Zeile trotzdem markiert bleibt selbst wenn
Listview den Focus verliert.;)

Ciao,
Filippo
 

Paulsche

Well-Known Member
Licensed User
Longtime User
ListView Filter ?

Hallo Filippo,

gibt es inzwischen die Möglichkeit mit Listview einen Filter zu setzen, wie bei Table.filter ?

sonst wäre es für mich ein großer Aufwand von Table auf Listview umzuwechseln.
 

Paulsche

Well-Known Member
Licensed User
Longtime User
Hallo Paulsche,

hast du schon die neue Listview angeschaut? http://www.b4x.com/forum/additional-libraries/1749-listview-dll-without-sqlite-interface.html

Da sind viele neue Funktionen hinzugekommen, u.a. CommandString .Damit kannst du alle Filter setzten die du willst.;)


Ciao,
Filippo

Hi Filippo,

danke für die schnelle Antwort, hast du mir für diesen Befehl ein kurzes Beispiel wie ich die Tabelle filtern kann ? Finde in der Hilfe leider nichts dazu.

Danke im vorraus.
 
D

Deleted member 103

Guest
danke für die schnelle Antwort, hast du mir für diesen Befehl ein kurzes Beispiel wie ich die Tabelle filtern kann ? Finde in der Hilfe leider nichts dazu.
es sind ganz normale SQL-Commandos. Du findest in den Beispielen bestimmt etwas.
z.B.: SELECT * FROM Persons WHERE FirstName='Tove'
 

JOTHA

Well-Known Member
Licensed User
Longtime User
Hallo Filippo,

... es sind ganz normale SQL-Commandos. Du findest in den Beispielen bestimmt etwas.
z.B.: SELECT * FROM Persons WHERE FirstName='Tove'

Wenn ich die "ListView" ohne SQL nehme, kann ich dann auch wie in der Standard-Table einen Filter setzen?

Dieses Beispiel ...
B4X:
ListViewTabelleVMatGesamt.Filter  ("Vorgang LIKE '*bestellt*' ")
... funktioniert leider nicht.

Kannst Du hier mal ein Beispiel (für die ListView ohne SQL) posten?

Das wäre Super !
Im Voraus vielen Dank !
 

JOTHA

Well-Known Member
Licensed User
Longtime User
Hallo Filippo,

danke für deine Mühe!
... hier ist ein Beispiel wie man ein Filter einbauen kann.

Aber mit diesem Code ...
B4X:
     If txtFilter.Text<>"" Then
      If StrIndexOf(LvArray(0) & LvArray(1) & LvArray(2) & LvArray(3) , txtFilter.Text,0)>=0 Then
          lv.AddRow(LvArray())
      End If
   Else
       lv.AddRow(LvArray())
   End If
  Next
... scheint etwas nicht zu stimmen, jedenfalls filtert der was er will und nicht was ich will.

Schade, das in deiner Listview.DLL kein Filter drin ist.

Ich finde deine Listview sehr gut, vor allem daß man vorne die Check-Boxen hat, das man die Werte rechtsbündig ausrichten kann und natürlich die Sortierfunktion in der Tabelle.

Jetzt fehlt eigentlich nur noch eine gute Filterfunktion ... ;)
 
D

Deleted member 103

Guest
Hallo JOTHA,

also die Filter-Funktion MUSS funktionieren!

Du musst nur wissen welche Column du filtern willst. In den varablen "LvArray(0)" bis "LvArray(3)" sind die Werte enthalten.
Suchst du in dem 1.Column so muss die Filter-Funktion so definiert werden:
B4X:
If txtFilter.Text<>"" Then
   If StrIndexOf(LvArray(0), txtFilter.Text,0)>=0 Then
            lv.AddRow(LvArray())
   End If
Else
   lv.AddRow(LvArray())
End If
 

JOTHA

Well-Known Member
Licensed User
Longtime User
Hallo Filippo,

... also die Filter-Funktion MUSS funktionieren!
... das tut Sie auch. Dank deiner Hilfe komme ich der Sache schon näher.
B4X:
If txtFilter.Text<>"" Then
   If StrIndexOf(LvArray(2), txtFilter.Text, 0)>=0 Then
            lv.AddRow(LvArray())
   End If
    Else
   lv.AddRow(LvArray())
    End If
... damit suche ich jetzt in der 3. Spalte (column).
Allerdings finde ich nur die exakt eingegebenen Begriffe, dabei kommt sogar auch auf die Groß- und Kleinschreibung an.

Ich habe mit "Wildcards" (* und %) herumexperimentiert, leider habe ich nicht herausfinden können, wie man Wildcards einbaut. Somit ist man immer gezwungen, den exakten Begriff einzugeben.

Gibt es da auch eine Lösung?
 
Last edited:
D

Deleted member 103

Guest
Hallo JOTHA,

Ich habe mit "Wildcards" (* und %) herumexperimentiert, leider habe ich nicht herausfinden können, wie man Wildcards einbaut. Somit ist man immer gezwungen, den exakten Begriff einzugeben.

Gibt es da auch eine Lösung?
Leider nicht.:(

Aber such mal in Forum, vielleicht hat jemand dafür eine Lösung.
 

JOTHA

Well-Known Member
Licensed User
Longtime User
Hallo Filippo,

danke für deine Antwort und deine Mühe.
... Leider nicht.:(
wirklich schade, denn dann wäre deine ListView die absolut perfekte Lösung!

In der Standard-Tabelle geht z.B: im Textfeld folgendes:
"*"&Text.Text&"*"

... übertragen auf den oberen Code müsste dann
B4X:
If StrIndexOf(LvArray(2), "*"&txtFilter.Text&"*", 0)>=0 Then
...funktionieren. Tut es aber nicht!

Kennt jemand eine Lösung?

:confused:
 

specci48

Well-Known Member
Licensed User
Longtime User
Kennt jemand eine Lösung?
Selbst in den ControlsExDesktop und ControlsExDevice Dll's von Agraham ist bei der ListView die Filter-Option nicht enthalten. Scheint also nicht standardmäßig verfügbar zu sein.

Eine unschöne Lösung wäre mit zwei ListView's zu arbeiten. Einer "internen", die immer sämtliche Einträge enthält, und einer "externen", welche an der Oberfläche die jeweils gewünschten (gefilterten) Einträge anzeigt.

Der Nachteil:
Bearbeitet man Einträge in der "externen", d.h. der angezeigten ListView, so muss man im Hintergrund auch immer in der "internen" ListView den passenden Eintrag aktualisieren.


Gruß
specci48
 
Top