XbpBrowse reagiert nicht mehr

Hier können die Unterschiede, Fehler und Probleme zwischen den Versionen bzw. bei der Migration besprochen werden

Moderator: Moderatoren

Antworten
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

XbpBrowse reagiert nicht mehr

Beitrag von georg »

Hallo,


eines meiner Projekte bearbeitet Rezepte für eine Kantine. Bei einem Rezept wird die Struktur ("Rezeptbaum") zur Bearbeitung in ein Array geladen und mittels XbpBrowse() angezeigt. Klickt der Anwender auf eine Zeile, wird diese in Bearbeitungselemente unterhalb des Browse übernommen, dort kann sie verändert (oder gelöscht) werden und überschreibt dann das entsprechende Array-Element.

Das Ganze läuft in einem Thread ab, und was codemässig unter 1.95 einwandfrei lief, "bockt" unter der 2.0. Der ganze Browse-Bereich mit Daten reagiert nicht. Der Browse wird wie üblich erzeugt:

Code: Alles auswählen

	oBro := XbpBrowse():new(oGB, oGB, aPosIn, aSizeIn)
	oBro:tabStop := .T.
	oBro:skipBlock       := {|nSkip, oBro| DoArraySkip(nSkip)}
	oBro:GoBottomBlock   := {|| nArRecno := Len(aData)}
	oBro:GoTopBlock      := {|| nArRecno := 1}
	oBro:PosBlock        := {|| nArRecno}
	oBro:PhyPosBlock     := {|| Len(aData)}
	oBro:LastPosBlock    := {|| Len(aData)}
	oBro:FirstPosBlock   := {|| 1}
	oBro:CursorMode      := XBPBRW_CURSOR_ROW
	oBro:itemMarked      := {|aPos, uNIL, self| EditSetData(aEntries, .F., cRezept)}
	oBro:useVisualStyle  := .F.
	oBro:create()
Ich kann (im Browse) klicken, wohin ich will, der Event :itemMarked wird nicht ausgelöst, zumindest wird die Funktion EditSetData() nicht aufgerufen. Der Event-Loop ist plain vanilla, d.h. ohne Besonderheiten. Aktuell stehe ich da vor einem Rätsel.

Der Programmcode wurde komplett neu compiliert und gelinkt.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: XbpBrowse reagiert nicht mehr

Beitrag von georg »

Nachtrag: ich habe mal

Code: Alles auswählen

oBro:itemSelected      := {|aPos, uNIL, self| EditSetData(aEntries, .F., cRezept)}
zusätzlich definiert, und nun kann ich - mittels Doppelklick - die betreffende Browse-Zeile zum Editieren heranziehen. Warum geht das mit :itemMarked nicht?
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: XbpBrowse reagiert nicht mehr

Beitrag von AUGE_OHR »

hi,

ein o:itemMarked sagt lediglich das die linke Taste im Browse gedrückt wurde ... aber damit ist der Satz nicht "selektiert".
nun gibt es bei XbpBrowse() kein o:markMode und damit ist o:itemMarked im Prinzip überflüssig.
gruss by OHR
Jimmy
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: XbpBrowse reagiert nicht mehr

Beitrag von Jan »

Jimmy,

das bezweifle ich massiv. Ich selber habe Programme geschrieben, die den :itemMarked nutzen um z. B. Zusatzinfos zum gerade markierten Satz an anderer Stelle anzuzeigen, oder einen zweiten Browse zu synchronisieren.

Jan
Zuletzt geändert von Jan am Fr, 21. Sep 2018 6:48, insgesamt 1-mal geändert.
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: XbpBrowse reagiert nicht mehr

Beitrag von Jan »

Georg,

mich wundert, daß das früher funktioniert hat und heute nicht mehr. Alaska hatte in der 2.0-Beta viel daran geschraubt die Kompatibilität von XbpBrowse zu den Vorversionen herzustellen - am Anfang war das eine Katastrophe.

Was ist, wenn Du das statt dessen über den :stableBlock machst? Hab ich stellenweise jedenfalls so geregelt.

Jan
Zuletzt geändert von Jan am Fr, 21. Sep 2018 6:48, insgesamt 1-mal geändert.
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: XbpBrowse reagiert nicht mehr

Beitrag von Tom »

Wenn man ein Browse mit anderen Controls synchronisieren will, ist ItemMarked alles andere als überflüssig. Für mich ist es essentiell.
Herzlich,
Tom
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: XbpBrowse reagiert nicht mehr

Beitrag von georg »

Guten Morgen,


danke erst einmal für das Feedback.

@Jan - wie genau meinst Du das "statt dessen über den :stableBlock machst?" Nach meinem Verständnis reden wir über die Verarbeitung eines Events, und das wird im Event-Loop verarbeitet, während ich das Ausführen des :stableBlock an anderen Stellen habe.

Ich habe das Ganze noch einmal unter der 1.9 (auf einem anderen Rechner) compiliert, und es läuft.

Interessant ist, dass beim ersten Aufruf (also beim :forceStable()) das xbeBRW_ItemMarked als oXbp das XbpBrowse()-Objekt erhält. Dagegen wird danach jeder Klick auf eine Zeile mit einem Objekt der Klasse XbpCellGroup() in den EventLoop geschickt. Dieses Verhalten ist sowohl unter 1.9 als auch unter 2.0 identisch.

Nicht identisch ist das Folgeverhalten, dass nämlich :itemMarked nicht in die Funktion EditSetData() weitergeleitet wird.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: XbpBrowse reagiert nicht mehr

Beitrag von Jan »

Georg,

an einer Stelle in meinen Projekten habe ich die Anzeige von Detaildaten zu dem aktuell markierten Browse-Satz per :stableBlock statt :itemMarked geregelt. Ich habe keine Ahnung mehr warum. Aber das funktioniert halt. Bei mir geht es ausschließlich um die Anzeige von zusätzlichen Daten in XbpStatic. In anderen Fällen kann das per :stableBlock Probleme bereiten. War auch nur so ein Gedanke gewesen als alternative Herangehensweise. Denn ansich muß das auch mit :itemMarked klappen. Hatte ja auch Tom bestätigt.

Ich frage mich immer noch wo da der Unterschied zwischen 1.9 und 2.0 liegen könnte. Es gibt da welche im XbpBrowse, aber meines Wissens nicht in diesem Bereich.

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: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: XbpBrowse reagiert nicht mehr

Beitrag von Wolfgang Ciriack »

Vielleicht mal den ::navigationMode auf XBPBRW_NAVIGATION_1XCOMPATIBLE setzen ?
Viele Grüße
Wolfgang
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: XbpBrowse reagiert nicht mehr

Beitrag von georg »

Hallo,


@Jan: danke für die Info. Klingt interessant, aber ich versuche erst einmal, ohne grossen "Umbau" das unter 2.0 ans Laufen zu bekommen.

@Wolfgang: kein schlechter Hinweis, das hat funktioniert. Es hat aber einen kleinen Nebeneffekt, das XbpBrowse() "flackert" jetzt, sieht also so aus, als würde es permanent neu aufgebaut. Ich muss da noch mal etwas tiefer in die Steuerung einsteigen.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: XbpBrowse reagiert nicht mehr

Beitrag von Werner_Bayern »

Servus Georg,

bei der 2.0er musst nach einer Satzzeigerbewegung ausserhalb des Browses ein

Code: Alles auswählen

oBrowse:rowPhyPos := recno()
einfügen. Hat jetzt aber wohl nicht unbedingt mit Deinem Problem zu tun?

Code: Alles auswählen

forceStable()
hat sich in der 2.0er auch geändert. Dort gibt die Methode self zurück, unter 1.9 war es .t. oder .f.
es grüßt

Werner

<when the music is over, turn off the lights!>
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: XbpBrowse reagiert nicht mehr

Beitrag von georg »

Hallo, Werner -


den Rückgabewert von forceStable() habe ich schon recht früh zu Beginn der Umstellung gemerkt, der war recht lautstark :roll:

Die Änderung von rowPhyPos schaue ich mir mal an. Die Probleme betreffen alle nur Browses, die Arrays anzeigen, also Daten gehen ohne Probleme.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: XbpBrowse reagiert nicht mehr

Beitrag von AUGE_OHR »

Jan hat geschrieben: Fr, 21. Sep 2018 8:03 ... zu dem aktuell markierten Browse-Satz per :stableBlock statt :itemMarked geregelt.
genau das ist was ich sagte :!:

erst wenn ein Browse "stable" ist "darf" ich den Callback Slot o:itemSelected aktiveren :!:
gruss by OHR
Jimmy
Antworten

Zurück zu „Unterschiede Version 1.9 <-> 2.0“