| |
|
|
- Seite 1 - |
|
Jac de Lad | Hm, ich weiß, Roland macht jetzt Urlaub. Aber vielleicht weiß es ja trotzdem jemand:
Steckt ein Control hinter Grid und List (mittels Create) oder ist das ne Profaninterne Sache? Falls es ein Control ist: Gibt es eine schnelle Funktion (ich nehme mal an mittels sendmessage), mit der ich ermitteln kann, ob ein String vorkommt und wenn ja, wo?
Jac |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 25.08.2006 ▲ |
|
|
|
|
| |
|
- Seite 1 - |
|
Jac de Lad | Die Box ist bei mir leer... |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 26.08.2006 ▲ |
|
|
|
|
| Sorry, da hat das Einfügen mal wieder nicht geklappt: KompilierenMarkierenSeparierentext in Listview suchen
Dim Lv_findinfo#,20
Long Lv_findinfo#,0=$2
Let Suchtext$=SeSystemProfilePrivilege
Long Lv_findinfo#,4=@Addr(Suchtext$)
Let Gefunden&=@Sendmessage(Lv1_handle&,$100D,-1,Lv_findinfo#)LVM_FINDITEM Message
Dispose Lv_findinfo#
Markieren
Print Gefunden&
If Gefunden&<>-1
Dim Zeile#,Lvitem
Clear Zeile#
@Setfocus(Lv1_handle&)
Zeile#.Imask&=$8
Zeile#.Item&=Gefunden&
Zeile#.State&=$2
Zeile#.Statemask&=$2
@Sendmessage(Lv1_handle&,$102B,Gefunden&,Zeile#)Zeile markieren
Dispose Zeile#
Endif
|
|
|
| |
|
|
|
Jac de Lad | |
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 27.08.2006 ▲ |
|
|
|
|
Michael Wodrich | |
|
| Programmieren, das spannendste Detektivspiel der Welt. | 27.08.2006 ▲ |
|
|
|
| |
|
- Seite 2 - |
|
|
Jac de Lad | Naja, sucht das nun den ersten String, der mit dem Suchstring anfängt oder den String der dem Suchstring genau entspricht? Und wie verhält es sich mit mehrspaltigen Listviews? Werden alle Spalten durchsucht, oder wieder getrennt mit | oder nur die erste??? |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 27.08.2006 ▲ |
|
|
|
|
Uwe ''Pascal'' Niemeier | Hallo Jac!
Naja, sucht das nun den ersten String, der mit dem Suchstring anfängt oder den String der dem Suchstring genau entspricht? Und wie verhält es sich mit mehrspaltigen Listviews? Werden alle Spalten durchsucht, oder wieder getrennt mit | oder nur die erste???
Wird LVM_FINDITEM für Strings verwendet, bezieht es sich immer auf die erste Spalte des Lvs. Ob die gesuchte Zeile dem Suchbegriff genau entspricht oder nur damit beginnt hängt vom Wert in LVFINDINFO.Flags ab ( das ist der erste Long-Wert in der Find-Struktur) LVFI_STRING (=2) sucht nach genauer Übereinstimmung LVFI_STRING + LVFI_PARTIAL (=2+8 ) sucht nach Stringanfängen Alle weiteren Parameter sind für GridBoxen eigendlich uninteressant.
Texte in hinteren Spalten lassen sich meines Wissens nur finden, indem du das Lv zeilenweise ausliest und die Strings selbst vergleichst.
BTW: Dadurch, dass du bei Senden der Such-Message bestimmen kannst, ab wo gesucht wird, kannst du im Falle eines Treffers von dort an weitersuchen, um möglicherweise noch weitere Treffer zu finden.
BTW2: Das profane SelectString sucht laut Hilfe immer nach dem ersten Eintrag, der mit dem Suchwort beginnt; vielleicht ist da mal ein SelectStringExact fällig?
SeeYou Pascal |
|
|
| |
|
|
|
|
SelectStringExact Hehe dieses wiederum habe ich in meine lists.pcu integriert. |
|
|
| |
|
|
|
Jörg Sellmeyer | Seit Profan10 gibt es ja MoveHandleToList(h&). Dann MoveListToMem(h&,B#,Del$ und mit MemPos(B#,Such$,pos%) die Position herausfinden. Mit ein bischen rechnen kann man dann herausfinden wie oft das Zeilentrennzeichen vor der Fundstelle auftaucht und dann hat man die Zeile. Ist nur die Frage, ob man dann nicht auch einfach die Listbox Zeilenweise durchsuchen kann. . |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 28.08.2006 ▲ |
|
|
|
|
Frank Abbing | Listview.dlls SearchText() lässt eigentlich keine Wünsche mehr offen, ist leicht anwendbar und zudem extrem schnell in der Ausführung:
SearchText(H,SZ,EZ,SS,S,F,V)
Sucht einen Text innerhalb des Listviews.
H : Long - Handle eines mit CreateListview() erstellten Listview Controls SZ: Long - Index der Startzeile, ab der die Suche beginnt (nullbasierend). EZ: Long - Index der Endzeile, bei der die Suche endet (nullbasierend). SS: Long - Index der Startspalte, ab der die Suche beginnt (nullbasierend). S : Zeiger auf den Suchstring (Adresse eines Strings oder Bereichsvariable) F : Long - Flags V : Zeiger auf eine Variable oder 4 Byte großer Bereich, der den Index der ersten gefundenen Spalte, die den Suchtext enthält, empfängt (Long-Int) oder 0.
Rückgabe-Ergebnis: Long - Index der ersten gefundenen Zeile, die den Suchtext enthält, oder -1.
Eine konfortable Suchfunktion, um ein Wort oder Teilwort in einem Listview zu finden. SZ ist die Zeile, ab der die Suche startet, bei Zeile EZ endet die Suche schließlich. In SS kann die Spalte angegeben werden, ab der die Suche beginnt. SS ist außerdem zusammen mit F = 2 von Bedeutung. S muß ein Zeiger auf einen String sein, oder eine Bereichsvariable, in die der Suchstring zuvor geschrieben wurde. Der Suchstring S muß mit einem Nullbyte abgeschlossen sein (ist bei allen Strings ab Profan 7 der Fall). V muß ein 4 Byte großer Speicher sein, hierein schreibt SearchText() ein LongInt: Den Index der ersten gefundenen Spalte, die den Suchtext enthält. Ab Profan 7 kann so direkt in eine Variable geschrieben werden. Wenn für V beispielsweise Addr(spalte&) verwendet wird, so steht nachher in der Variablen spalte& die betreffende Spalte, in der der Suchtext als erstes gefunden wurde, oder -1, wenn der Suchtext nicht gefunden wurde. Verwenden sie für V eine Null, dann wird dieser Parameter ignoriert. In F können einige Flags angegeben werden. Hier eine Liste aller möglichen Flags ( kombinierbar durch OR Verknüpfung oder Addition).
0 = Groß-Klein-Schreibung nicht beachten (z.B. Frank=frANK) / jede Spalte durchsuchen / Suchtext überall erlaubt. 1 = Groß-Klein-Schreibung beachten (z.B. Frank<>frANK) 2 = Der Suchtext wird ausschließlich nur in Spalte SS gesucht (Textsuche für nur eine Spalte) 4 = Der Suchtext muß am Anfangs eines Worts stehen, damit er gefunden wird. 8 = Der Suchtext muß dem kompletten Itemtext entsprechen, und darf nicht nur ein Teilstück sein.
Auch Zahlen werden innerhalb des Listviews als Text gesucht / gefunden. Das Listview verwaltet alle Texte / Zahlen usw. ausschließlich als Texte. |
|
|
| |
|
|
|
Jac de Lad | @all: Danke!
@Frank: Oach, menno, ich weiß, dass deine DLL klasse ist! Wie gesagt, ich kaufe sie auch noch, versprochen, aber eben jetzt noch nicht, weil ich grad sehr wenig Geld habe.
Jac |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 28.08.2006 ▲ |
|
|
|
|
Frank Abbing | Weiss ich ja, Jac. Habs nur mal mit aufgeführt, weils zum Thema passt und zukünftige Leser dieses Threads Bescheid wissen sollten. |
|
|
| |
|
|
|
Jac de Lad | Ja, ist doch korrekt! |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 28.08.2006 ▲ |
|
|
|