Foro | | | | GDL | Hallo Frank,
ich habe schon einige Versuche mit der Sharewarever. gemacht und möchte nach dem Lizenzgewinn die Listview auch in meinem Modellbahnproggi nutzen. Und hier habe ich ein Reaktionsproblem mit normalen Windowsbutton ab mittelgrossen Datenmengen im Listview. ca 100kb.
Das heisst, wenn ich im Listview eine Auswahl tätigte, reagieren die anderen Fenstercontrols danach mit einer einmaligen Verzögerung.Je grösser die Datenmenge im Listview desto länger die Verzögerung.
Ich habe nichts besonderes wie eine einfache Hauptschleife ein paar Controls und 4 Listboxen.Das waitinput kann ich nicht weglassen, da im späterem Hauptmodul andere Funktionen sonst nicht gehen.
Probier bitte einfach bei dir ne Anwendung aus und lade dabei deine Flughäfendatei ein. Diese verursacht bei mir 17 bis 20 sec. Reaktionszeit .Innerhalb des Listviews wird sofort reagiert.(Anderen Datensatz,Linksklick,Rechtsklick)
Servus Georg |
| | | | |
| | | Hey Georg! Büdde mit kleinem Source.
Ich hab mir hier mal einen Textblock geschrieben den ich einfach toll finde:
[tb]minimalbeispiel[/tb] |
| | | | |
| | GDL | Finde ich auch toll.Nur brauche ich immer Zusatzdateien um das Problem real darstellen zu können.Ich bin halt ein Einzelgänger in Sachen proggen. Hoffe das dies geht.Ansonsten bekomme ich es so leicht nicht hin. KompilierenMarkierenSeparierendeclare astart$,ende%,lvdll&,image#,string#,bereich#,hdll&,font1&,font&,name$,num%
declare anzahl&,x&,listview&,listview1&,listview2&,listview3&,bemerkung$,decoder$
declare ausgang$,rahmen1&,rahmen2&,text&[100],bt&
Def GetSysColor(1) !USER32, GetSysColor
usermessages 16
SetTrueColor 1
astart$=$ProgDir
case left$(astart$,14)=C:ProgrammeX:astart$=C:\Steuerung\
case left$(astart$,14)=C:PROGRAMMEX:astart$=C:\Steuerung\
chdir astart$
mkdir daten
chdir astart$+daten
window 0,0-%maxx,%maxy
cls getsyscolor (15)
Dim bereich#,320
$I Listview_Funktionen.inc
lvdll&=usedll(Listview.dll)
$I SKCONTROL.INC
let hdll& = UseDll(SKControl.dll) Farb DLL laden
SKCtrl_InitDll()
dim string#,255
dim image#,255
font1&=@Create(Font,Courier,17,0,1,0,0)
font&=@Create(Font,Courier,8,0,1,0,0)
=================================================================
proc vorbereiten
chdir astart$+daten\
ifnot findfirst$(komponenten.str)=komponenten.str
assign #1,komponenten.str
rewrite #1
print #1,feld1;C;2;0
print #1,feld2;C;20;0
print #1,feld3;C;4;0
print #1,decoder;C;4;0
print #1,ausgang;C;1;0
close #1
dbcreate komponenten.str > b.dbf
dbcreate komponenten.str > k.dbf
dbcreate komponenten.str > w.dbf
dbcreate komponenten.str > m.dbf
dbcreate komponenten.str > s.dbf
name$=w.dbf
clearlist wbox&
erzeugen
name$=s.dbf
clearlist sbox&
erzeugen
name$=m.dbf
clearlist mbox&
erzeugen
name$=b.dbf
clearlist bbox&
erzeugen
else
name$=w.dbf
einlesen
name$=s.dbf
einlesen
name$=m.dbf
einlesen
name$=b.dbf
einlesen
endif
endproc
==============================================================================
proc erzeugen
num%=1
anzahl&=dbopen(#1,name$)
dbuse(#1)
whilenot num% > 999
dbappendblank()
dbput(feld1,xx)
dbput(feld2,....................)
dbput(decoder,0000)
dbput(ausgang,0)
dbputrec(0)
inc num%
wend
dbclose(#1)
endproc
===============================================
proc bildschirm
x&=MixRGBs(GetSysColor(15),RGB(193,65,3))
listview&=CreateListView(%hwnd,%hinstance,0,x&,-1,$31)
ShowListview(listview&,10,150,440,200)
setfont listview&,font&
InsertColumn listview&,lfd.Nr.,80,0
InsertColumn listview&,Bezeichnung,180,0
InsertColumn listview&,Decoder,80,0
InsertColumn listview&,Ausgang,80,0
x&=MixRGBs(GetSysColor(15),RGB(193,65,93))
listview1&=CreateListView(%hwnd,%hinstance,0,x&,-1,$31)
ShowListview(listview1&,470,150,440,200)
setfont listview1&,font&
InsertColumn listview1&,lfd.Nr.,80,0
InsertColumn listview1&,Bezeichnung,180,0
InsertColumn listview1&,Decoder,80,0
InsertColumn listview1&,Ausgang,80,0
x&=MixRGBs(GetSysColor(15),RGB(0,202,0))
listview2&=CreateListView(%hwnd,%hinstance,0,x&,-1,$31)
ShowListview(listview2&,10,450,440,200)
setfont listview2&,font&
InsertColumn listview2&,lfd.Nr.,80,0
InsertColumn listview2&,Bezeichnung,180,0
InsertColumn listview2&,Decoder,80,0
InsertColumn listview2&,Ausgang,80,0
x&=MixRGBs(GetSysColor(15),RGB(0,0,224))
listview3&=CreateListView(%hwnd,%hinstance,0,x&,-1,$31)
ShowListview(listview3&,470,450,440,200)
setfont listview3&,font&
InsertColumn listview3&,lfd.Nr.,80,0
InsertColumn listview3&,Bezeichnung,180,0
InsertColumn listview3&,Decoder,80,0
InsertColumn listview3&,Ausgang,80,0
declare bemerkungedit&,decoderedit&,adresseedit&
bt&=create(button,%hwnd,w,10,100,50,20)
endproc
========================================================
proc einlesen
num%=1
anzahl&=dbopen(#1,name$)
dbuse(#1)
whilenot num% > anzahl&
dbgo(num%)
bemerkung$=dbget$(feld2)
decoder$=dbget$(decoder)
ausgang$=dbget$(ausgang)
case left$(name$,1)=w:SetItem listview&,right$(00+str$(num%),3),bemerkung$,decoder$,ausgang$
case left$(name$,1)=s:SetItem listview1&,right$(00+str$(num%),3),bemerkung$,decoder$,ausgang$
case left$(name$,1)=m:SetItem listview2&,right$(00+str$(num%),3),bemerkung$,decoder$,ausgang$
case left$(name$,1)=b:SetItem listview3&,right$(00+str$(num%),3),bemerkung$,decoder$,ausgang$
inc num%
wend
dbclose(#1)
endproc
==================================================================
proc aufraeumen
dispose string#
dispose image#
dispose bereich#
deleteobject font&
deleteobject font1&
SKCtrl_DeInitDll() Farb DLL löschen
FreeDll hdll&
FreeDll lvdll&
endproc
==========================================================================
bildschirm
vorbereiten
whilenot ende%
waitinput
if %umessage = 16
ende%=1
aufraeumen
elseif clicked(bt&)
beep
endif
wend
Dies werden nur 17k File. Im Hauptmodul sinds dann 4MB mit 255 Spalten. Verzögerungszeit hier sind ca 2 sec.
Servus Georg |
| | | | |
| | Frank Abbing | Hallo Georg,
Hab mein Demo Vier.prf mal getestet (beinhaltet Flughafendatei) und kann keine Verzögerungen erkennen. Wie du weisst, nutzt die Listview.dll nur die originalen SysListview32- Controls. Die komplette Verwaltung wird also von Windows übernommen, da funkt die Listview-Dll nicht dazwischen. Ich vermutet, du bekommst die Probleme mit älteren Computer, die wahrscheinlich auch zu wenig RAM besitzen. Windows wird wahrscheinlich bei seiner Verwaltung Daten auslagern müssen und ein alter Prozessor arbeitet auch entsprechend langsamer. Daher werde ich an deinem Problem nichts ändern können, du solltest es mal mit etwas mehr Speicher probieren. Kannst du denn bestättigen, dass mein Demo Vier.prf bei dir langsam reagiert? |
| | | | |
| | GDL | Hallo Frank,
ich habe in vier.prf noch button&=create(button,dialog&,T,650,230,20,20) eingefügt und frage den in der Hauptschleife ab.
Geht auf jeden Rechner einwandfrei. Werde jetzt mal mit den Spalten hantieren. Vielleichts liegts an deren Anzahl. Oder ich übersehe irgendwas Wichtiges und komme einfach nicht darauf.
Servus Georg
Jetzt bekomme auch ich schöne aufgelockerte Oberflächen hin. |
| | | | |
| | Michael Wodrich | Bekommt da jedes der 4 Listviews 255 Spalten? |
| | | Programmieren, das spannendste Detektivspiel der Welt. | 02.03.2007 ▲ |
| |
| | GDL | | | | | |
|
AnswerThemeninformationenDieses Thema hat 4 subscriber: |