Français
Forum

GetItemText funktioniert pas

 
Salut,

qui Funktion GetItemText funktioniert chez Je ne, si je cela LV pas sur dem Hauptfenster (%hWnd) erstelle.
KompilierenMarqueSéparation ->
KompilierenMarqueSéparation
LV2& = CreateListView(Dialog&,%hInstance,GetSysColor(23),GetSysColor(24),-1,$31)
>
->

j'ai cela gleiche Problem avec v1.6 et v1.7.

Woran peux cela liegen? - fais je quoi faux?

merci pour Eure Mithilfe
Thomas
 
12.10.2005  
 




Frank
Abbing
Hi,

malheureusement peux je momentan pas testen - hatte Systemzusammenbruch et kompletten Datenverlust. peut-être peux quelqu'un Anderes cela la fois essayer.
 
12.10.2005  
 



allô Thomas - könntest Du un Minimalbeispiel posten - ensuite peux on es besser nachvollziehen...

merci!
 
12.10.2005  
 




KompilierenMarqueSéparation
LV2 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)<
)

bleibt qui Variable _prArtNr$ vide (le contenu: , Len(_prArtNr$) = 0)

cela verstehe je pas!

Thomas

P.S. _jj% ist une reine Zählvariable, 0 ~ GetLines(LV) -1

P.P.S.: um Code-journée erweitert de Michael Wodrich
 
13.10.2005  
 



Nachtrag:
cela Listview wird dans beiden Fällen korrekt pleine avec
SetItem lvAuftrag&,cItemData_0$,...,cItemData_n$
qui Anzeige des Listviews erfolgt dans beiden tomber korrekt.

mais RaiseLine() funktioniert aussi seulement, si comme Handle %hWnd angegeben wird.
aussi pour einem change des MessageHandllings sur InitMessage(GB2&) klappt es pas comment erwartet...

merci
 
13.10.2005  
 




Michael
Wodrich
comment wird car GB2& initialisiert.. (cette Codeteil fehlt ici).

Besser ist toujours un kleines lauffähiges Codeteil, aussi si incorrect.

...et Codes s'il te plaît possible dans Code-Tags mettons, là erkennt on plus...
(justement chez längeren Codes important)

belle Grüße
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
13.10.2005  
 




Frank
Abbing
Hi,

je denke, il vergisst simple seulement cela Dialogfenster trop initieren.

[quote-part:f145ca6078]InitMessages(F)

Initiert cela Subclassing pour alle verwendeten Listviews im la fenêtre F.

F : Long - Handle des Fensters, dans dem un Listview erstellt wurde, z.B.(%HWND).

seulement par cet Funktion wird qui automatische Sortierung et qui Abfrage angeklickter ou bien markierter Items possible.
InitMessages() darf pas pour chaque Listview verwendet volonté, doit mais pour chaque la fenêtre aufgerufen volonté, dans dem mindestens un Listview verwendet wird.
Mehrfachaufrufe pour un et même chose la fenêtre sommes pas gestattet et mener trop Fehlern!
InitMessages() zapft alle Messages pour un la fenêtre ab, bevor vous dorthin gelangen. Bestimmte Messages volonté ensuite pour eigene Zwecke abus ou bien modifié.
Am besten ist es, d'abord alle Listviews aufzubauen et Text trop füllen, et zum Schluss pour chaque la fenêtre, dans dem sich (mindestens) un Listview est, InitMessages() auszuführen.
finissez wird qui Funktion avec CloseMessages(), am besten, kurz bevor qui Listview.dll wieder entladen wird.

InitMessages(%HWND)
InitMessages(DIALOGFENSTER%). [/quote-part:f145ca6078]
 
13.10.2005  
 



seulement la fois merci pour Eure répondre.

@Frank: comment bereits geschrieben, hilft cela Einschalten des MessageHandling nix...

@Michael: comment bschrieben ist GB2& une GroupBox, erstellt avec Créer(Groupbox,%hWnd,Text,0.0.100,100)

Gruss
Thomas
 
14.10.2005  
 




Michael
Wodrich
[quote-part:cc5b333cb1=Gast]
@Michael: comment bschrieben ist GB2& une GroupBox, erstellt avec Créer(Groupbox,%hWnd,Text,0.0.100,100)[/quote-part:cc5b333cb1]
cela Problem ist oui simple, qui wir Deinen Code pas voyons peut. So ist naturellement une Aider pas possible. ici la hâte Du z.B. simple une Faute de frappe (Punkte statt Kommata) gemacht.
comment cela im echten Code aussieht - eh bien...

là wirst Du ensuite wohl la fois debuggen doit. simple pour chaque Element, cela beteiligt ist une Datenausgabe écrivons. Ist cela gelieferte Handle wirklich ungleich zéro usw.
sur cet Art dois Du toi ensuite à den faute herantasten. Evtl. statt qui Code-Einfügungen aussi den richtigen Debugger benutzen - en supplément ist il oui là...

belle Grüße
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
14.10.2005  
 




Frank
Abbing
So, Invité Thomas.

maintenant konnte ego testen. GetItemText() funktioniert einwandfrei aussi avec Dialogfenstern!
tu fais alors irgendwo une anderen faute, wahrscheinlich den Syntaxfehler, comment ihn Michael oui déjà beschrieben hatte.

Poste s'il te plaît nächstes la fois toujours une kompletten Minimalsource, qui cela Problem aufweist, cela du annoncer vouloir. Ansonsten ist une Fehlersuche simple pas nachvollziehbar.
 
15.10.2005  
 



Ok, OK.

une Syntaxfehler peux je définitif ausschließen, car si je GB2& vers %hWnd tausche, funktionierts! Aussi volonté Syntaxfehler gemeldet, mais ici habe je un kurzes Listing vorbereitet:
KompilierenMarqueSéparation
declare 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&
cela wars!
FIN

ici peux je zwar dans GB2 qui Markierung mettons / effacer, mais ausgewertet wird vous pas...

mfG
Thomas

P.S. sur Wunsch schicke je qui DB comme ZIP trop.
 
16.10.2005  
 



@Thomas: mon Wunsch wäre cela qui Leuz ici dans qui Community cela vorgesehene
KompilierenMarqueSéparation Tags.

Salve.
 
16.10.2005  
 




répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

2.441 Views

Untitledvor 0 min.
Peter Max Müller09.06.2015
Jörg Sellmeyer15.03.2012

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie