Deutsch
Forum

Suche Message für Grid/List (LVM_FINDITEM)

 
- 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:
KompilierenMarkierenSeparieren
text 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

 
26.08.2006  
 




Jac
de
Lad
Danke!
 
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

KompilierenMarkierenSeparieren
Print SelectString(hGrid&, -1, Hugo)
 
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
 
28.08.2006  
 




SelectStringExact

Hehe dieses wiederum habe ich in meine lists.pcu  integriert.
 
28.08.2006  
 




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.
 
28.08.2006  
 




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.
 
28.08.2006  
 




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  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

5.852 Betrachtungen

Unbenanntvor 0 min.
Walter04.05.2024
RudiB.26.10.2021
rquindt01.05.2018
iF04.02.2016
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie