Allgemeine Fragen zur PROFAN Programmierung
Views (Heute): 249696 (11132)
  Suchen
 Zurück zur Übersicht
 AutorThema: Listbox durchsuchen
Daniel Hecken
Datum:23.05.01 21:13 Antwortenals Email verschicken (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.




Maik Strohfeldt
Datum:24.05.01 00:05 Antwortenals Email verschicken (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


Daniel Hecken
Datum:24.05.01 12:41 Antwortenals Email verschicken (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


Maik Strohfeldt
Datum:24.05.01 13:22 Antwortenals Email verschicken (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


Daniel
Datum:24.05.01 13:23 Antwortenals Email verschicken (privat@daniel-hecken.de) 


Danke,

Ich haben seinen Code leicht verändert übernommen.

bis zu nächsten Frage ....


Bernhard Künzel
Datum: 24.05.01 14:54 Antwortenals Email verschicken (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



 Zurück zur Übersicht