Foro | | | | | ¡Hola,
el Función GetItemText no trabajo para mí, si yo el LV no en el Ventana principal (%hWnd) erstelle. KompilierenMarcaSeparación -> KompilierenMarcaSeparación ->
Yo habe el gleiche Problema con v1.6 y v1.7.
Woran puede mentira? - Mache Yo qué falso?
Gracias para Eure Mithilfe Thomas |
| | | | |
| | Frank Abbing | Hi,
desafortunadamente kann Yo actualmente no testen - hatte Systemzusammenbruch y kompletten Datenverlust. Tal vez kann alguien Anderes el veces probieren. |
| | | | |
| | | Hola Thomas - könntest Usted una Minimalbeispiel puesto - entonces puede ser lo mejor nachvollziehen...
Gracias! |
| | | | |
| | | KompilierenMarcaSeparaciónLV2 erstellen
lvAuftrag& = CreateListView(%hWnd,%HInstance,GetSysColor(23),GetSysColor(24),-1,$21)
InsertColumn lvAuftrag&,"Beschreibung",0,0
InsertColumn lvAuftrag&,"Art.-Nr." ,0,0
.
.
.
InsertColumn lvAuftrag&,"Bestellmenge",0,2
.
* Daten einlesen, dann LV anzeigen
ShowListview(lvAuftrag&,Width(%hWnd) /100 *4,Height(%hWnd) /100 *34,Width(_GB2%) /100 *94,Height(_GB2%) /100 *80)
* bestimmte Sätze markieren
* markierte Sätze auslesen, z.B. zum Drucken, Speichern usw.
GetItemText(lvAuftrag&,_lvLineMem#,1,_jj%)
_prArtNr$ = Trim$(String$(_lvLineMem#,0))
Die Variable _prArtNr$ enthält den korrekten Eintrag
Werden die Befehle jetzt auf GB2& (Handle einer GroupBox) umgeschrieben:
LV2 erstellen
lvAuftrag& = CreateListView(GB2&,%HInstance,GetSysColor(23),GetSysColor(24),-1,$21)
InsertColumn lvAuftrag&,"Beschreibung",0,0
InsertColumn lvAuftrag&,"Art.-Nr." ,0,0
.
InsertColumn lvAuftrag&,"Bestellmenge",0,2
.
* Daten einlesen, dann LV anzeigen
ShowListview(lvAuftrag&,Width(GB2&) /100 *4,Height(GB2&) /100 *34,Width(GB2&) /100 *94,Height(GB2&) /100 *80)
* bestimmte Sätze markieren
* markierte Sätze auslesen, z.B. zum Drucken, Speichern usw.
GetItemText(lvAuftrag&,_lvLineMem#,1,_jj%)
_prArtNr$ = Trim$(String$(_lvLineMem#,0)< )
restos el Variable _prArtNr$ leer (Inhalt: , Len(_prArtNr$) = 0)
Das verstehe Yo no!
Thomas
P.S. _jj% es una reine Zählvariable, 0 ~ GetLines(LV) -1
P.P.S.: en Code-Tag erweitert de Michael Wodrich |
| | | | |
| | | Apéndice: Das Listview se en beiden Fällen korrekt gefüllt con SetItem lvAuftrag&,cItemData_0$,...,cItemData_n$ El Anzeige des Listviews es en beiden Fallen korrekt.
Aber RaiseLine() funktioniert auch sólo, si como Handle %hWnd angegeben se. Auch una Wechsel des MessageHandllings encima InitMessage(GB2&) klappt no como esperado...
Gracias |
| | | | |
| | Michael Wodrich | como se porque GB2& initialisiert.. (dieser Codeteil fehlt hier).
Besser es siempre una kleines lauffähiges Codeteil, auch si fehlerhaft.
...y Codes Por favor, möglichst en Code-Tags conjunto, como erkennt uno mehr... (gerade en längeren Codes wichtig)
Schöne Grüße Michael Wodrich |
| | | Programmieren, das spannendste Detektivspiel der Welt. | 13.10.2005 ▲ |
| |
| | Frank Abbing | Hi,
Yo denke, él vergisst simplemente sólo el Dialogfenster a initieren.
[quote:f145ca6078]InitMessages(F)
Initiert el Subclassing para todos verwendeten Listviews en el Ventana F.
F : Largo - Handle la ventana, en el una Listview erstellt wurde, z.B.(%HWND).
Erst por esta Función se el automatische Sortierung y el Abfrage angeklickter oder markierter Items posible. InitMessages() darf no para cada Listview verwendet voluntad, muß aber para cada Ventana aufgerufen voluntad, en el mindestens una Listview verwendet se. Mehrfachaufrufe para una y dasselbe Ventana son no gestattet y führen a Fehlern! InitMessages() zapft todos Messages para una Ventana de, bevor ellos dorthin gelangen. Bestimmte Messages voluntad entonces para propio Zwecke mißbraucht oder verändert. Am besten es, zuerst todos Listviews aufzubauen y Texto a füllen, y para Schluss para cada Ventana, en el se (mindestens) una Listview befindet, InitMessages() auszuführen. Beendet se el Función con CloseMessages(), al besten, kurz bevor el Listview.dll otra vez entladen se.
InitMessages(%HWND) InitMessages(DIALOGFENSTER%). [/quote:f145ca6078] |
| | | | |
| | | Erst veces Gracias para Eure Respuesta.
@Franco: Como ya geschrieben, hilft el Einschalten des MessageHandling nix...
@Michael: Como bschrieben es GB2& una GroupBox, erstellt con Crear(Groupbox,%hWnd,Texto,0.0.100,100)
Gruss Thomas |
| | | | |
| | Michael Wodrich | [quote:cc5b333cb1=Gast] @Michael: Como bschrieben es GB2& una GroupBox, erstellt con Crear(Groupbox,%hWnd,Texto,0.0.100,100)[/quote:cc5b333cb1] Das Problema es sí simplemente, daß wir Su código no sehen puede. So es natürlich una Ayuda no posible. Hier hast Usted z.B. simplemente una Tippfehler (Punkte en lugar de Kommata) gemacht. Como el en el echten Code aussieht - na sí...
Como wirst Usted entonces wohl veces debuggen necesario. Einfach para cada Element, el beteiligt es una Datenausgabe escribir. Ist el gelieferte Handle wirklich ungleich null usw. Auf esta Art mußt Usted Usted entonces a el Fehler herantasten. Evtl. en lugar de el Code-Einfügungen auch el richtigen Debugger benutzen - dazu es él sí como...
Schöne Grüße Michael Wodrich |
| | | Programmieren, das spannendste Detektivspiel der Welt. | 14.10.2005 ▲ |
| |
| | Frank Abbing | So, Invitado Thomas.
Jetzt podría ego testen. GetItemText() funktioniert einwandfrei auch con Dialogfenstern! Usted machst also irgendwo una otro Fehler, wahrscheinlich el Syntaxfehler, como ihn Michael sí ya beschrieben hatte.
Poste Por favor, nächstes Tiempo siempre una kompletten Minimalsource, de los Problema aufweist, el du informe möchtest. Ansonsten es una Fehlersuche simplemente no nachvollziehbar. |
| | | | |
| | | Ok, OK.
una Syntaxfehler kann Yo definitiv ausschließen, porque si yo GB2& gegen %hWnd tausche, funktionierts! Außerdem voluntad Syntaxfehler gemeldet, aber hier Yo una kurzes Listing vorbereitet: KompilierenMarcaSeparacióndeclare 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&
el wars!
FIN
Hier kann Yo zwar en GB2 el Markierung conjunto / löschen, aber ausgewertet se ellos no...
mfG Thomas
P.S. Auf Wunsch schicke Yo el DB como ZIP a. |
| | | | |
| | | | | | | |
|
RespuestaThemeninformationenDieses Thema ha 4 subscriber: |