Autor | Thema: Listbox durchsuchen | | Datum:23.05.01 21:13 
(privat@daniel-hecken.de) | |
Ich habe ein Liste mit dem Befehl addstring erzeugt.
Die Liste wird / darf nicht auf den Bildschirm erscheinen.
Nun muß ich jedoch diese Liste nach einen beliebigen Wort suchen.
Mit welchen Befehl geht das.
|
| | Datum:24.05.01 00:05 
(mail@msgroup.de) | |
Hi.
Setzt doch eine Listbox auf eine Form, versteck sie und speicher die Daten darin!
Hier ein BSP, um die Einträge zu finden. Falls du das komplette VWP-Demo brauchst, einfach sagen. Getestet auf PRF7, sollte mit Änderungen aber selbst auf ner 4.5er arbeiten. Sind dann zwar extreme Änderungen, aber der Weg ist derselbe.
Vielleicht sollten die Leute bei Fragen Ihre PRF-Version angeben!?
Viele Grüße
--
Maik Strohfeldt, MS Group Software
http://www.msgroup.de/
--
$P+
SetErrorLevel 0
'VWP2-AutoIncludes und -Header
Def GetSysColor(1) !"USER32","GetSysColor"
Def SetWindowLong(3) !"USER32","SetWindowLongA"
Def GetWindowLong(2) !"USER32", "GetWindowLongA"
'Ende der VWP2-AutoIncludes und -Header
Declare _Ende_HWND%
Declare _font&
Declare ListBox&
Declare suche&
Declare Text1&
Declare Button1&
Declare Text2&
Declare Found&
Proc Button1Click
Declare Suchname#, Gefunden&, Start&
Dim Suchname#,add(len(gettext$(suche&)),1)
String Suchname#,0=gettext$(suche&)
Sendmessage(Found&,$0184,0,0)
Gefunden&=0
start&=-1
while neq(gefunden&,-1)
Gefunden&=sendmessage(listbox&,399,start&,Suchname#)
if neq(gefunden&,-1)
addstring(found&,getstring$(listbox&,gefunden&))
if equ(gefunden&,getcount(listbox&)-1)
gefunden&=-1
else
start&=gefunden&
endif
endif
wend
Dispose Suchname#
EndProc
SetTrueColor 1
WindowStyle 574
WindowTitle "Listbox-Einträge suchen..."
Window Add(%maxx,200),120-501,166
CLS GetSysColor(15)
UseFont "MS Sans Serif",13,0,0,0,0
SetDialogFont 1
Let ListBox&=CreateListBox(%HWND,"",0,0,0,0)
ClearList
AddString "Visual Window Pro 2"
AddString "PROFAN²-Writer 4000"
AddString "PROFAN²-PAD 3"
MoveListToList(ListBox&)
ClearList
SetWindowLong(ListBox&,-20,Or(GetWindowLong(ListBox&,-20),$200))
SetWindowPos ListBox&=8,8-160,120
Let suche&=CreateEdit(%HWND,"profan",176,80,121,21)
Let Text1&=CreateText(%HWND,"Suche:",176,64,38,13)
Let Button1&=CreateButton(%HWND,"Suchen!",176,104,121,25)
Let Text2&=CreateText(%HWND,"Gefunden:",304,8,54,13)
Let Found&=CreateListBox(%HWND,"",0,0,0,0)
ClearList
MoveListToList(Found&)
ClearList
SetWindowLong(Found&,-20,Or(GetWindowLong(Found&,-20),$200))
SetWindowPos Found&=304,24-184,104
SetWindowPos %HWND=sub(div(%maxx,2),250),sub(div(%maxy,2),83)-501,166
WhileNot _Ende_HWND%
WaitInput
If Equ(%key,2)
Let _Ende_HWND%=1
ElseIf GetFocus(ListBox&)
'Ereignisbehandlung
ElseIf GetFocus(suche&)
'Ereignisbehandlung
ElseIf GetFocus(Text1&)
'Ereignisbehandlung
ElseIf GetFocus(Button1&)
Button1Click
ElseIf GetFocus(Text2&)
'Ereignisbehandlung
ElseIf GetFocus(Found&)
'Ereignisbehandlung
EndIf
Wend
End
'Projektinformationen:
'Titel: Listbox-Einträge suchen
'Autor: Maik Strohfeldt, MS Group Software
'Verwendete Profan²-Version: 7.0
'Verwendete VWP2-BasisVersion: 2.25-SP
'
'Source by MSG VisualWindow Professional 2
'Copyright © 1998-2001 by MS Group Software.
'http://www.msgroup.de
|
| | Datum:24.05.01 12:41 
(privat@daniel-hecken.de) | |
Zur Information:
Ich verwende Profan 7e plus PRFellow Bezahlversion ( gibt es eigendlich einen Unterschied zwischen der Bezahl und der Freewarefunktion ? ).
Das Problem ist, das die Quellliste nicht angzeigt werden darf.
bis dann
daniel
|
| | Datum:24.05.01 13:22 
(mail@msgroup.de) | |
Hallo!
> Ich verwende Profan 7e plus PRFellow
> Bezahlversion ( gibt es eigendlich einen
> Unterschied zwischen der Bezahl und der
> Freewarefunktion ? ).
Da gibt es keinen Unterschied. Die Entwicklung wurde ja eingestellt.
> Das Problem ist, das die Quellliste nicht
> angzeigt werden darf.
Dann versteck sie doch:
-> ShowWindow(ListBox&,0)
Viele Grüße,
--
Maik Strohfeldt, MS Group Software
PRFSUITE
|
| | Datum:24.05.01 13:23 
(privat@daniel-hecken.de) | |
Danke,
Ich haben seinen Code leicht verändert übernommen.
bis zu nächsten Frage ....
|
| | Datum: 24.05.01 14:54 
(b.kuenzel@chello.at) | |
Hallo Daniel,
ich glaube ich habe es in ganz einfacher Form
Def ImageListBoxSort(0) Create("SortedListBox",%HWnd,"",0,0,0,0)
Def ImageListBoxUnSort(0) Create("ListBox",%HWnd,"",0,0,0,0)
Beispiel:
LBHnd&=ImageListBoxUnSort()
mit diesen Funktionen kannst Du eine unsichtbare ListBox entweder sortiert oder unsortiert erzeugen
Funktionen zum auslesen:
Def lb_FindStringExact(3) SendMessage(%(1),$01A2,%(2),&(3))
Def lb_FindString(3) SendMessage(%(1),$018F,%(2),&(3))
'Es wird der Eintrag ermittelt, der mit dem Suchstring beginnt.
'Par1: Handle der Listbox
'Par2: Integer = Index des Eintrages vor dem die Suche beginnt;
' Soll sie am Anfang beginnen, muß er -1 sein.
'Par3: Bereich = Suchstring
'Rückgabewert: <0 = Fehler (nicht gefunden)
' >=0 = Index des gesuchten Eintrages (erster Eintrag = 0)
MFG
Bernhard
|
|
|