In einer separaten prf.-Datei habe ich dieses herrliche Teil laufen. Jetzt verzweifle ich daran, wie ich es in einer anderen prf-Datei einbaue (Proc?).
Im Moment bekomme ich nur die Fehlermeldungen, kann include-Datei nicht finden.
Gibt es einen hiilfreichen Hinweis für mich?
Vielen Dank
Peter
Wie baue ich listview ein?
-
-
-
Da musst du uns schon ein lauffähiges Minimalbeispiel liefern.
-
Mal so ins Blaue getippt.
Im Verzeichnis DEINER nnn.prf müssen die:
$I Listview_Funktionen.inc
lvdll&=usedll("Listview.dll")
liegen oder mit Pfadangaben ($I C:\nnn\nnn\Listview_Funktionen.inc) in deine nnn.prf eingetragen sein. -
Ja, auch meine Vermutung. :hut:
-
So klappt das bei mir:
Zitat
DECLARE pfad$
DECLARE LVDLL&
pfad$=GETDIR$("@")
LVDLL&=UseDLL(pfad$+"\\LISTVIEW.DLL")
$I Listview_Funktione.incNatürlich müssen dann die Listview.dll und die Listview_Funktionen.inc auch im angebenen Pfad sein
Schau mal in der Hilfe unter GETDIR$ nach... -
-
Frank
Jau - "großer Meister"
Declarieren wirst du aber auch vorher oder ?
...und den Pfad hab ich drin stehen, weil ich die Listview meist in einen Unterordner stelle und da braucht man eine "Ortsabgabe"Sonst ist ja bei meinem Code auch nichts anders oder ?
-
Deklarieren muss sein, ja.
Ne, ist kaum anders dein Code. Wollte ja nur sagen, dass GetDir$ nicht unbedingt nötig ist. -
...oder sollte ich die womöglich selber verursachen?!
Mit viel Geduld ist es mir (Anfänger) gelungen, dieses wundervolle listview ans Laufen zu bringen.
Hab die Beispieldatei aus dem Listview-Verzeichnis solange abgeändert, bis sie genau meinen Wünschen als Datenbankbetrachter entsprach, und dann in meinem eigenen Quellcode in eine PROC kopiert. In meinem Programm kann ich über ein Menue den Listview-Datenbankbetrachter starten und er startet auch brav.
Das Menu besteht aus 6 Button (Button 1, 2 ..... 6), verzweigt genau nach Auswahl in die jeweilige Proc und nach Endproc erscheint wieder das Menu.
Nicht so bei Listview.
1. Problem: Wenn der Mauszeiger über die Stelle fährt, wo die durch das listview verdeckten - also unsichtbaren - Button liegen, schwupps, erscheinen alle 6 Button - so wie der Mauszeiger über deren imaginären Platz fährt, an der Fensteroberfläche. Und ..
2. Problem: ab dann reagiert das Programm nicht mehr auf irgendwelche Mausklicks oder Tasteneingaben, nur auf das X oben rechts im Fenster.Ich hab mich lange nicht getraut habe, das zu posten. Aber lösen würde ich das Problem gerne.
Kann man aus meiner Schilderung schließen, ob eine wichtiger Befehl fehlt?Im voraus vielen Dank.
Peter
-
Vielleicht hilft dir ein Beispiel weiter:
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<code>
Declare bereich#,listview&,lvdll&,text$,bytes&,x&,y&,z&
$I Listview_Funktionen.inc
lvdll&=usedll("Listview.dll")PROC DIALOG
DLG&=CREATE("DIALOG",%HWND,"Dialogfenster",100,80,603,413)
BUTTON1% =@CREATE("BUTTON",DLG&,"Drück mich",0024,0312,0070,0030)
BUTTON2% =@CREATE("BUTTON",DLG&,"schliessen",0096,0312,0070,0030)'~~~~~~~~~~ hier kommt dein Listview hin: CreateListView(dlg&,.. wir sind im DIALOG DLG&
'~~~~~~~~~~~und nicht wie im Solobeispiel CreateListView(%hWnd,... im Hauptfenster !!!!!!listview&=CreateListView(dlg&,%hinstance,0,RGB(0,0,255),-1,$31)
InsertColumn listview&,"Nummer",50,0
InsertColumn listview&,"Name",120,0
InsertColumn listview&,"Font",80,0
InsertColumn listview&,"Höhe",40,0
InsertColumn listview&,"Fett",40,0ShowListView(listview&,20,2,450,220)
WHILE 1
WAITINPUT
If EQU(%KEY,2)
BREAK
ELSEIF GETFOCUS(BUTTON2%) 'BUTTON
BREAK
ElseIF GETFOCUS(BUTTON1%) 'BUTTON
print ""
print "DANKE FÜRS KLICKEN"
print "SAGT DER DIALOG ;)"
ENDIF
ENDWHILE
EraseListview(listview&) 'Listviewstrukturen entfernen
DestroyWindow(listview&) 'Profan Befehl, um Fensterobjekte zu zerstören
destroywindow(DLG&)
ENDPROCSETTRUECOLOR 1
DECLARE ENDE%
DECLARE DLG&,DIALOGDA%
DECLARE BUTTON1%
DECLARE BUTTON2%
DECLARE BUTTON3%
DECLARE BUTTON4%
WINDOW 0,0-500,500
WINDOWTITLE "Hauptfenster"
USEFONT "MS Sans Serif",13,0,0,0,0
SETDIALOGFONT 1
BUTTON3% =@CREATE("BUTTON",%HWND,"DIALOG mit Tabelle öffnen",0224,0012,0200,0030)
BUTTON4% =@CREATE("BUTTON",%HWND,"Hauptfenster schliessen",0224,0062,0200,0030)
WHILENOT ENDE%
WAITINPUT
If EQU(%KEY,2)
LET ENDE%= 1ELSEIF getfocus(BUTTON3%)
DIALOGELSEIF getfocus(BUTTON4%)
LET ENDE%= 1
ENDIF
WEND
freedll lvdll&
END
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</code>Gruß Thomas
-
Zitat
1. Problem: Wenn der Mauszeiger über die Stelle fährt, wo die durch das listview verdeckten - also unsichtbaren - Button liegen, schwupps, erscheinen alle 6 Button - so wie der Mauszeiger über deren imaginären Platz fährt, an der Fensteroberfläche
Das hört sich nach einem Darstellungsfehler an. Wenn beides, Buttons und Listview auf dem Hauptfenster (%HWND) liegen, sieht es nur im ersten Moment so aus, als wenn die Buttons versteckt wären. Sie sind noch aktiv und sobald die Maus dem Platz erreicht, werden sie VOR der Listview angezeigt. Jetzt kommen sich beide Sachen in die Quere. - Entweder die Buttons so plazieren, dass sie keine Kollision mit der Listview haben oder (und das ist die aufwendigere Möglichkeit), nach jedem Mausklick den Button mit EnableWindow button&,0 deaktivieren. Dann musst du aber nach Schließen der Listview wieder mit EnableWindow Button&,1 den Button wieder aktiv schalten
Im anhängenden Bildchen siehst du, was ich meine: Alle Buttons (und es sind einige) sind so angeordnet, dass die zwei Listview sie nicht "belästigen" -
[Blockierte Grafik: http://www.postimage.org/aVFewCi.jpg] -
Wenn du möchtest, dass die Buttons Teil des Listviews werden, musst du das Listview-Handle als Parent-Handle angeben, nicht das des Hauptfensters.
Am besten, du postest deinen Code hier mit allen dazugehörigen benötigten Dateien. Nur so kann man dir helfen, alles andere sind Mutmassungen. -
Genau !
Mach mal 'ne ZIP-Datei aus allem, was dazu gehört und dann stell die mal hier hin[offtopic]
Frank
War der Wiedererkennungswert hoch bei dem Bildchen in meinem letzten Posting ?
(hab den Fehler in "2windows4you" gefunden! - kann dir aber nicht sagen, was es war.
Du würdest einen Lachkrampf bekommen )
Die ...SE-Version wird besser werden !
[/offtopic]
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!