| |
|
|
- Seite 1 - |
|
| Hallo,
die Funktion GetItemText funktioniert bei mir nicht, wenn ich das LV nicht auf dem Hauptfenster (%hWnd) erstelle. KompilierenMarkierenSeparieren -> KompilierenMarkierenSeparieren ->
Ich habe das gleiche Problem mit v1.6 und v1.7.
Woran kann das liegen? - Mache ich was falsch?
Danke für Eure Mithilfe Thomas |
|
|
| |
|
|
|
| |
|
- Seite 1 - |
|
Michael Wodrich | [quote:cc5b333cb1=Gast] @Michael: Wie bschrieben ist GB2& eine GroupBox, erstellt mit Create(Groupbox,%hWnd,Text,0.0.100,100)[/quote:cc5b333cb1] Das Problem ist ja einfach, daß wir Deinen Code nicht sehen können. So ist natürlich eine Hilfe nicht möglich. Hier hast Du z.B. einfach einen Tippfehler (Punkte statt Kommata) gemacht. Wie das im echten Code aussieht - na ja...
Da wirst Du dann wohl mal debuggen müssen. Einfach für jedes Element, das beteiligt ist eine Datenausgabe schreiben. Ist das gelieferte Handle wirklich ungleich null usw. Auf diese Art mußt Du Dich dann an den Fehler herantasten. Evtl. statt der Code-Einfügungen auch den richtigen Debugger benutzen - dazu ist er ja da...
Schöne Grüße Michael Wodrich |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 14.10.2005 ▲ |
|
|
|
|
Frank Abbing | So, Gast Thomas.
Jetzt konnte ichs testen. GetItemText() funktioniert einwandfrei auch mit Dialogfenstern! Du machst also irgendwo einen anderen Fehler, wahrscheinlich den Syntaxfehler, wie ihn Michael ja schon beschrieben hatte.
Poste bitte nächstes Mal immer einen kompletten Minimalsource, der das Problem aufweist, das du melden möchtest. Ansonsten ist eine Fehlersuche einfach nicht nachvollziehbar. |
|
|
| |
|
|
|
| Ok, OK.
einen Syntaxfehler kann ich definitiv ausschließen, denn wenn ich GB2& gegen %hWnd tausche, funktionierts! Außerdem werden Syntaxfehler gemeldet, aber hier habe ich ein kurzes Listing vorbereitet: KompilierenMarkierenSeparierendeclare GB1&,GB2&,GB3&,GB4&,LV1&,LV2&,lvdll&
declare ende&,btn&,txt1&,txt2&
declare LVmarked&,LineMarked&,IsMarked&
declare LV_Mem#,LVItemText$
dim LV_Mem#,256
CLS
ListView DLL & Funktionen bereitstellen
lvdll& = UseDLL("Listview.dll")
$I LV_FUNCTION.INC
InitMessages(%HWnd)
InitMessages(GB2&)
Bildschirmmaske aufbauen
GB1& = Create("Groupbox",%hWnd," Groupbox #1 - Handle des LV auf %hWnd ", 10, 10,300,180)
GB2& = Create("Groupbox",%hWnd," Groupbox #2 - Handle des LV auf GB2& " , 10,210,300,180)
GB3& = Create("Groupbox",%hWnd,"" ,310,140,160, 50)
GB4& = Create("Groupbox",%hWnd,"" ,310,340,160, 50)
txt1& = Create("TEXT" ,GB3& ,"..." , 10, 12,140, 30)
txt2& = Create("TEXT" ,GB4& ,"..." , 10, 12,140, 30)
btn& = Create("Button" ,%hWnd,"DATEN WERDEN EINGELESEN..." , 10,400,620, 30)
ende& = Create("Button" ,%hWnd,"Beenden" ,530, 10,100,380)
EnableWindow btn& ,0
EnableWindow ende&,0
LV erstellen
dieses LV wird auf dem Hauptfenster erstellt
LV1& = CreateListView(%hWnd,%HInstance,RGB(0,0,0),RGB(0,127,127),-1,$25)
InsertColumn LV1&," " ,40,0
InsertColumn LV1&,"LS- Nr." ,90,0
InsertColumn LV1&,"Art.-Nr.",90,0
und dieses auf der Groupbox, die auf dem Hauptfenster erstellt wurde
LV2& = CreateListView(GB2&,%HInstance,RGB(0,0,0),RGB(127,127,127),-1,$25)
InsertColumn LV2&," " ,40,0
InsertColumn LV2&,"LS- Nr." ,90,0
InsertColumn LV2&,"Art.-Nr.",90,0
Einlesen der DB
LS_NR und ART_NR sind alphanumerisch (C,10)
dbOPEN(#1,"LS")
dbUse(#1)
Einlesen
WhileNot %dbEOF
dbGo(&Loop -1)
SetItem LV1&,"",Trim$(dbGet$("LS_NR")),Trim$(dbGet$("ART_NR")),Str$(&LOOP +1)
SetItem LV2&,"",Trim$(dbGet$("LS_NR")),Trim$(dbGet$("ART_NR")),Str$(&LOOP +1)
WEnd
dbClose(#1)
Anzeigen der LVs
ShowListView(LV1&,20,30,252,150)
ShowListView(LV2&,10,20,252,150)
Beginn des Auslesens
SetText btn&,"Zum Auslesen markieren, dann hier klicken..."
EnableWindow ende&,1
EnableWindow btn& ,1
While 1
CLEAR LV_Mem#,LVmarked&,LineMarked&,IsMarked&,LVItemText$
WaitInput
If %GetFocus = ende&
Beenden
break
endif
If %GetFocus = btn&
Wurde in einem LV markiert?
GetChecked(Addr(LVmarked&),Addr(LineMarked&),Addr(IsMarked&))
If IsMarked&
GetItemText(LVmarked&,LV_Mem#,2,LineMarked&)
LVItemText$ = String$(LV_Mem#,0)
If LVmarked& = LV1&
SetText txt1&,LVItemText$
SetText txt2&,"..."
Else
SetText txt1&,"..."
SetText txt2&,LVItemText$
EndIf
SetCheckboxState(LVmarked&,LineMarked&,0)
EndIf
EndIf
WEnd
Handling abschalten
CloseMessages(GB2&)
CloseMessages(%HWnd)
Speicher aufräumen
Dispose clv1#
Dispose clv2#
Dispose clvall#
Dispose lvitem#
DLL entladen
FreeDLL lvdll&
das wars!
END
Hier kann ich zwar in GB2 die Markierung setzen / löschen, aber ausgewertet wird sie nicht...
mfG Thomas
P.S. Auf Wunsch schicke ich die DB als ZIP zu. |
|
|
| |
|
|
|
| |
|
| |
|
|
| |
|
- Seite 2 - |
|
|
| Bitte bearbeite Dein obiges Posting und setze die Tags.
Und wie kann ich mein Posting bearbeiten? Oder soll ich es neu enstellen ( mit Tags)?
mfG Thomas |
|
|
| |
|
|
|
Michael Wodrich | [quote:208ea1fd54=Gast]Und wie kann ich mein Posting bearbeiten?[/quote:208ea1fd54] Du findest vor dem Ende jedes Postings - also über der gestrichelten Linie unten - auf der rechten Seite folgendes:
Editieren, Zitieren
Mit Editieren kannst Du jedes selbst erstellte Posting nachträglich noch einmal bearbeiten.
Mit Zitieren kannst Du ein fremdes Posting zitieren. Das sollte natürlich nur benutzt werden, wenn Du einen ganz bestimmten Teil zitieren möchtest.
Bei Zitieren gilt: je kürzer, desto besser - lösche alles unwichtige aus dem QUOTE-Tag heraus - aber: Zitate bitte nicht verfälschen.
Schöne Grüße Michael Wodrich
PS: Bei den Grafiken über dem Editfeld kannst Du mit # das CODE-Tag (für die Programmcodes) öffnen und schliessen und mit der Sprechblase daneben das QUOTE-Tag (also die Zitate). |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 16.10.2005 ▲ |
|
|
|
|
Michael Wodrich | Zu Deinem Code:
Ist Dir nicht aufgefallen, daß Du GB2& - noch leer (= 0) - mit InitMessages benutzt und erst später das Handle hineinpackst?
Du siehst: manchmal hilft es, etwas auführlichere Schnipsel zu posten...
[quote:a04aee18a3]Da wirst Du dann wohl mal debuggen müssen. Einfach für jedes Element, das beteiligt ist eine Datenausgabe schreiben. Ist das gelieferte Handle wirklich ungleich null usw. Auf diese Art mußt Du Dich dann an den Fehler herantasten.[/quote:a04aee18a3] ...und dieser Tipp von weiter oben zeigt Dir, daß diese Fehlerart wohl etwas häufiger vorkommt als man es sich wünscht.
Schöne Grüße Michael Wodrich |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 16.10.2005 ▲ |
|
|
|
|
| [quote:e6f458e01b=Michael Wodrich][quote:e6f458e01b=Gast]Und wie kann ich mein Posting bearbeiten?[/quote:e6f458e01b] Du findest vor dem Ende jedes Postings - also über der gestrichelten Linie unten - auf der rechten Seite folgendes:
Editieren, Zitieren[/quote:e6f458e01b]Funktioniert das auch für Gäste |
|
|
| |
|
|
|
| Ja, hier Hauptseite » DLLs » Listview.dll Forum funktioniert das auch für Gäste solange diese noch für die Community als der Poster erkennbar sind.
Salve.
Nachtrag: Ich hab es abgestellt da mir eine Überprüfung anhand der IP zu unsicher erscheint. |
|
|
| |
|
|
|
Frank Abbing | Genau. Du kannst InitMessages() für ein Fenster natürlich erst aufrufen, wenn dieses bereits erstellt wurde... |
|
|
| |
|
|
|
| Danke!
Nunja, das komplette Programm besteht z.Zt. aus 25 Unterprogrammen mit ca. 18800 Zeilen - da kann man sone Kleinigkeit mal übersehen...
Vielen Dank - auch für Eure Geduld!
Thomas |
|
|
| |
|
|
|
| Haben wir doch gern gemacht.
Thomas registriere Dich doch einfach - dann hast Du hier auch mehr möglichkeiten - z.B. Dateiuploads an Beiträge hängen - oder Beiträge editieren etc.
Dann siehst Du auch immer wenns was Neues gibt.
Salve. |
|
|
| |
|
|