Aktualisierung eines XbpBrowse scheitert

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Aktualisierung eines XbpBrowse scheitert

Beitrag von Jan »

Hallo, gerade kämpfe ich mit einem merkwürdigen Problem: Ich habe einen ganz normalen XbpBrowse eingebaut. Den meisten Code habe ich einfach aus einem anderen, funktionierenden Browse rauskopiert.

Code: Alles auswählen

oBrowse := XbpBrowse():new(oDlgEan:drawingArea, , {10, 10}, {760, 400})                            // Browse für die Artikel
oBrowse:useVisualStyle := .F.                                                                      // Browse ohne Themes anzeigen, ist unter Windows 7 + 8 sehr unübersichtlich
oBrowse:vScrollObject:useVisualStyle := .T.                                                        // Aber die Scrollbar soll Themes haben, sieht besser aus
oBrowse:hScroll := .F.                                                                             // Horizontale Scrollbar ausschalten
oBrowse:skipBlock     := {|n| DbSkipper(n) }
oBrowse:goTopBlock    := {| | DbGoTop()    }
oBrowse:goBottomBlock := {| | DbGoBottom() }
oBrowse:phyPosBlock   := {| | Recno()      }

// Navigationscodeblöcke für den vertikalen Scrollbar
oBrowse:posBlock      := {| | DbPosition()    }
oBrowse:goPosBlock    := {|n| DbGoPosition(n) }
oBrowse:lastPosBlock  := {| | 100             }
oBrowse:firstPosBlock := {| | 0               }

oBrowse:cursorMode := XBPBRW_CURSOR_ROW                                                            // Zeilencursor anschalten
oBrowse:keyboard    := {|nKeyboard, uNIL, self| eanBrowse(nKeyBoard, oBrowse, oDlgEan, oSleText)}  // Tatstaturdrücke auswerten
oBrowse:create()

// Spalte für die Artikelnummer
oSpalte := XBPColumn():new(oDlgEan:drawingArea, , , , {{XBP_PP_COL_HA_CAPTION, "Artikelnr."}, ;    // Eine neue Spalte hinzufügen
                                                       {XBP_PP_COL_DA_ROWWIDTH, 100}})

oSpalte:dataLink := {|x| wala->bestnr}                                                             // Den Datalink auf das Feld stellen
oSpalte:create()                                                                                   // Das Objekt erstellen
oBrowse:addColumn(oSpalte)                                                                         // Die Spalte dem Browse hinzufügen

oSpalte := XBPColumn():new(oDlgEan:drawingArea, , , , {{XBP_PP_COL_HA_CAPTION, "Artikel"}, ;       // Eine neue Spalte hinzufügen
                                                       {XBP_PP_COL_DA_ROWWIDTH, 400}})

// Spalte für die Artikelbezeichnung
oSpalte:dataLink := {|x| AllTrim(wala->artikel)}                                                   // Den Datalink auf das Feld stellen
oSpalte:create()                                                                                   // Das Objekt erstellen
oBrowse:addColumn(oSpalte)                                                                         // Die Spalte dem Browse hinzufügen

oSpalte := XBPColumn():new(oDlgEan:drawingArea, , , , {{XBP_PP_COL_HA_CAPTION, "Titel"}, ;         // Eine neue Spalte hinzufügen
                                                       {XBP_PP_COL_DA_ROWWIDTH, 240}})

// Spalte für die Artikelbezeichnung
oSpalte:dataLink := {|x| AllTrim(wala->titel)}                                                     // Den Datalink auf das Feld stellen
oSpalte:create()                                                                                   // Das Objekt erstellen
oBrowse:addColumn(oSpalte)                                                                         // Die Spalte dem Browse hinzufügen
Da passiert jetzt folgendes:
Wenn ich mit den Cursortasten durchwandere, ändert die Satzanzeige sich nicht. Ich habe mir schon den RecNo() anzeigen lassen, der bleibt bei egal wie viel Scrollen immer oben stehen.
Gehe ich mit STRG + BildAb nach ganz unten, steht die Scrolleiste unten, wo sie hingehört. Ich kann aber dennoch weiter nach unten scrollen. Nachweislich (siehe Kommentar zum nächsten Code).

Ich habe dann mal die Zeile mit dem oBwose:keyboard eingebaut.

Code: Alles auswählen

FUNCTION eanBrowse(nKeyBoard, oBrowse, oDlgEan, oSLeText)

IF nKeyboard == xbeK_DOWN
   wala->(DbSkip())
   oBrowse:refreshCurrent()
ENDIF
RETURN NIL
Wenn ich jetzt mit der Cursor-Taste runterscrolle, sehe ich, wie die Zeilen korrekt aktualisiert werden. Ein BildAb zeigt mir den nächsten Bildschirm, jetzt mit dem zuletzt aktualisierten Artikel. Gehe ich an das Dateiende wie oben beschrieben, und scrolle weiter runter, sehe ich, wie dort weitere Datensätze erscheinen. Obwohl ich eigentlich ganz unten sein sollte.

Wichtig ist auch, das ich ein RefreshCurrent() einbaue. Ein refreshAll() zeigt mir wieder in jeder Zeile den gleichen Satz an.

Das ist kein Indexfehler. Ich habe schon ein wala->(OrdSetFocus(0)) eingesetzt, das Ergebnis ist das Gleiche.

Auch die Navigationscodeblöcke dürften das nicht sein. Die verwende ich so immer, und sind auch hier nur aus einem anderen Projektteil rüberkopiert worden.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2934
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Aktualisierung eines XbpBrowse scheitert

Beitrag von Wolfgang Ciriack »

Evtl. mit XBase 2.0 letztem Build kompiliert ? Da soll es ja so ein Verhalten geben.
Viele Grüße
Wolfgang
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Aktualisierung eines XbpBrowse scheitert

Beitrag von Jan »

Hallo Wolfgang,

nene, 1.9 SL1. Nie mit 2.0 in Kontakt gekommen.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Aktualisierung eines XbpBrowse scheitert

Beitrag von Jan »

So. Erstmal scheint eine Lösung gefunden zu sein. Ich habe jetzt vor die Erzeugung ein DbSlelectArea() auf die betreffende dbf gemacht. Danach geht das sauber.

Warum das aber so ist, bzw. warum das ohne den Select falsch läuft - keine Ahnung. Da ich den Alias immer voranstelle muß das doch eigentlich vollkommen egal sein.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2824
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Aktualisierung eines XbpBrowse scheitert

Beitrag von georg »

Hallo, Jan -


Du hast bei den Navigationsblöcken den Funktionen keinen Alias vorangestellt. Wenn KUNDE mittels SELECT ausgewählt ist, und Du ARTIKEL anzeigen willst, ohne ein SELECT auf ARTIKEL durchzuführen, werden zwar die Felder von ARTIKEL angezogen, die Navigationsblöcke beziehen sich aber auf KUNDE. Das könnte das etwas seltsame Verhalten erklären.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Antworten