Das nächste Entwicklertreffen findet Anfang Mai in Münster statt - weitere Infos bzw. zur Anmeldung!

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
Foren-Administrator
Foren-Administrator
Beiträge: 2255
Registriert: Fr, 08. Feb 2008 21:29

XbpBrowse reagiert nicht mehr

Beitrag von georg » Do, 20. Sep 2018 20:54

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
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.

georg
Foren-Administrator
Foren-Administrator
Beiträge: 2255
Registriert: Fr, 08. Feb 2008 21:29

Re: XbpBrowse reagiert nicht mehr

Beitrag von georg » Do, 20. Sep 2018 21:01

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
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11545
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: XbpBrowse reagiert nicht mehr

Beitrag von AUGE_OHR » Do, 20. Sep 2018 22:29

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: 13159
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: XbpBrowse reagiert nicht mehr

Beitrag von Jan » Fr, 21. Sep 2018 5:34

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: 13159
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: XbpBrowse reagiert nicht mehr

Beitrag von Jan » Fr, 21. Sep 2018 5:37

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: 7355
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: XbpBrowse reagiert nicht mehr

Beitrag von Tom » Fr, 21. Sep 2018 6:46

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
Foren-Administrator
Foren-Administrator
Beiträge: 2255
Registriert: Fr, 08. Feb 2008 21:29

Re: XbpBrowse reagiert nicht mehr

Beitrag von georg » Fr, 21. Sep 2018 7:54

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
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.

Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 13159
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: XbpBrowse reagiert nicht mehr

Beitrag von Jan » Fr, 21. Sep 2018 8:03

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: 2437
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Kontaktdaten:

Re: XbpBrowse reagiert nicht mehr

Beitrag von Wolfgang Ciriack » Fr, 21. Sep 2018 8:09

Vielleicht mal den ::navigationMode auf XBPBRW_NAVIGATION_1XCOMPATIBLE setzen ?
Viele Grüße
Wolfgang

georg
Foren-Administrator
Foren-Administrator
Beiträge: 2255
Registriert: Fr, 08. Feb 2008 21:29

Re: XbpBrowse reagiert nicht mehr

Beitrag von georg » Fr, 21. Sep 2018 8:56

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
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.

Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1561
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern

Re: XbpBrowse reagiert nicht mehr

Beitrag von Werner_Bayern » Fr, 21. Sep 2018 15:29

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 euch

Werner

georg
Foren-Administrator
Foren-Administrator
Beiträge: 2255
Registriert: Fr, 08. Feb 2008 21:29

Re: XbpBrowse reagiert nicht mehr

Beitrag von georg » Fr, 21. Sep 2018 16:53

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
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11545
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: XbpBrowse reagiert nicht mehr

Beitrag von AUGE_OHR » Fr, 21. Sep 2018 18:55

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