Startseite › Foren › Deutsches LiveCode-Forum › Datagrid mit Scroller
- Dieses Thema hat 5 Antworten und 2 Teilnehmer, und wurde zuletzt aktualisiert vor 5 Jahren, 10 Monaten von
Klaus Major.
-
AutorBeiträge
-
-
Mai 13, 2019 um 23:18 Uhr #14812
Hallo zusammen,
ich bräuchte beim Scrollen des Datagrid Eure Hilfe:
Hintergrund:
Ich habe auf der Hauptseite ein DG, beim Klick auf einer Zeile (Ortsnamen) erscheinen die Daten zum jeweiligen Ort.
Mit dem Zurückgehen auf die Hauptseite erscheint wieder das DG. Das DG soll nicht wieder neu aufgebaut werden, sondern die Zeile angezeigt werden, die vorher ausgewählt wurde.Unter IDE funktioniert das auch, unter Android mit dem u.a. Scroller leider nicht.
Ich habe den Scroller aus dem Forum benutzt (https://www.livecode-blog.de/forums/topic/scroller-fuer-datagrid-erstellen/),Beim Zurückgehen auf die Hauptseite, wird das DG neu aufgebaut, d.h. es wird mit der ersten Zeile wieder angezeigt.
Ich verstehe den Ablauf des Scrollers nicht 🙁Meine Frage:
Wo muss ich was im Scroller ändern, dass das DG nicht immer am Anfang angezeigt wird.Danke für jede Hilfe.
Gruß
Joachimder Scroller:
——————————————————————–
on openCard
scroller_create
end openCardon closeCard
scroller_delete
end closeCardon scroller_create
local tScrollerRect, tContentRect
set the vScroll of grp „listA“ to 0
##Only create a scroller on a mobile device
if the environment is not „mobile“ then exit scroller_create
##Set the area of the scroller
put the rect of group „dgRouten“ into tScrollerRect
##Set the area of the content to be scrolled
put 0,0,(the dgFormattedWidth of group „dgRouten“),(the dgFormattedHeight of group „dgRouten“) into tContentRect
##Create the scroller control
mobileControlCreate „scroller“, „listScroll“
put the result into sScrollerID
##Set the properties of the scroller
mobileControlSet „listScroll“, „rect“,tScrollerRect
mobileControlSet „listScroll“, „contentRect“,tContentRect
mobileControlSet „listScroll“, „visible“,true
mobileControlSet „listScroll“, „scrollingEnabled“,true
mobileControlSet „listScroll“, „vIndicator“,true
mobileControlSet „listScroll“, „vscroll“, 0
end scroller_createon scroller_delete
if the environment is not „mobile“ then exit scroller_delete
mobileControlDelete sScrollerID
end scroller_deleteon scrollerDidScroll pHScroll, pVScroll
set the DGvScroll of group „dgRouten“ to pVScroll
set the DGSelectedLine of group „dgRouten“ to empty
end scrollerDidScrollon mouseRelease
set the dgHilitedLines of group „dgRouten“ to empty
end mouseRelease
——————————————————————– -
Mai 14, 2019 um 10:20 Uhr #14814
Hallo Joachim,
bitte, bitte, bitte, benutzt die CODE tags (der Button, auf dem „code“ steht über dem Eingabefeld) nachdem ihr ein Skript hier eingefügt habt. Dann bleibt die Formatierung (Einrückung!) erhalten und man kann das auch LESEN!
Schlecht:
on openCard
scroller_create
machdies
machjenes
unddasauchnoch
end openCardon closeCard
scroller_delete
end closeCardGut:
on openCard scroller_create machdies machjenes unddasauchnoch end openCard on closeCard scroller_delete end closeCard
OK, kannst Du Dir den SCROLL des Scrollers und des Datagrids beim verlassen der Karte merken und beim erneuten Besuch der Karte wiederherstellen? Vielleicht in einer LOKALEN Variable der Karte, die leer ist, wenn die App startet? 😎
Ich denke ihr macht euch das alles zu schwer, denkt an Analogien im richtigen Leben. Da würdet ihr das alles ohne groß nachzudenken machen.
Beispiel (OK, Analogien zu Computerproblemen sind immer etwas schräg ins echte Leben übertragen):
Du besitzt ein Zimmer mit einem Fenster mit Rolläden und vermietest es.
Immer, wenn jemand das Zimmer betritt, sind die Rolläden hochgezogen. (DAS ist schräg! 😀 )
Dein Mieter möchte die Rolläden aber immer so weit unten haben, wenn er das Zimmer wieder betritt, wie er sie heruntergezogen hatte vor dem verlassen des Zimmers.
Was machst Du, wenn er das Zimmer verlässt? Zollstock ist vorhanden!
Und was machst Du, nachdem er das Zimmer wieder betreten hat, um seinen Wunsch zu erfüllen?
Bedenke, die Rolläden sind dann immer ganz oben.Ich hoffe, das verschafft Dir einen kleinen „Ach so, logisch!“ Moment! 🙂
Falls nicht, oder falls Dir meine Andeutungen zu schwammig sind, bitte wieder nachfragen.Gruß
Klaus
-
Mai 19, 2019 um 20:40 Uhr #14945
Hallo Klaus,
die Formatierung mit „code“ werde ich zukünftig beachten.
Gruß
Joachim -
Mai 19, 2019 um 20:54 Uhr #14949
Hast Du es denn nun hinbekommen mit dem Scroller oder waren meine Andeutungen einfach zu vage?
-
Mai 19, 2019 um 21:57 Uhr #14951
Hallo Klaus,
ich glaube zu verstehen, was du meintest, habe es bisher nochnicht geschafft. Die Idee, den Zustand zu merken (Zeilennummer) hat den Scroller aber nicht beeindruckt.
Wahrscheinlich habe ich das ganze Konstrukt noch nicht verstanden.Als Alternative könnte auch das Scrollen mit dem Scrollbalken funktionieren, mit dem Scroller wäre es eben etwas „schöner“. In der IDE funktioniert es und der Scroller ist nur in Android aktiv.
Gruß
Joachim -
Mai 19, 2019 um 22:18 Uhr #14953
OK, hier das geänderte Skrtipt, siehe meine Kommentare.
Bitte mal testen, ich kann das mangels Handy etc. nicht.## Wichtig!!! local sScrollerID ## In diesen Variablen merken wir uns den Scroll des NATIVEN Scrollers ## und vorsichtshalber auch den Scroll des Datagrids. local letzterscroll_scroller local letzterscroll_datagrid on openCard scroller_create end openCard on closeCard scroller_delete end closeCard on scroller_create local tScrollerRect, tContentRect set the vScroll of grp "listA" to 0 ##Only create a scroller on a mobile device if the environment is not "mobile" then exit scroller_create ##Set the area of the scroller put the rect of group "dgRouten" into tScrollerRect ##Set the area of the content to be scrolled put 0,0,(the dgFormattedWidth of group "dgRouten"),(the dgFormattedHeight of group "dgRouten") into tContentRect ##Create the scroller control mobileControlCreate "scroller", "listScroll" put the result into sScrollerID ##Set the properties of the scroller mobileControlSet "listScroll", "rect",tScrollerRect mobileControlSet "listScroll", "contentRect",tContentRect mobileControlSet "listScroll", "visible",true mobileControlSet "listScroll", "scrollingEnabled",true mobileControlSet "listScroll", "vIndicator",true ## Lokale Variablen sind erst einmal leer, wenn die App startet. ## Daher können wir Folgendes machen: if letzterscroll_scroller = EMPTY then put 0 into letzterscroll_scroller ## Wenn diese Variable leer ist, ist die andere es auch! put 0 into letzterscroll_datagrid end if ## Hier dann die Wiederherstellung des nativen Scrollers mobileControlSet "listScroll", "vscroll", letzterscroll_scroller ## Und des Datagrids. Ob das wirklich nötig ist, kann ich nicht sagen, ## musst Du mal ausprobieren, indem Du diese Zeile mal aukommentierst set the dgVScroll of grp "dgRouten" to letzterscroll_datagrid end scroller_create on scroller_delete if the environment is not "mobile" then exit scroller_delete ## DAS meinte ich eigentlich damit, was Du Dir merken solltest ## und wieder herstellen solltest: put mobileControlGet(sScrollerID, "vScroll") into letzterscroll_scroller ## Zur Sicherheit auch mal merken, siehe unten... put the dgVScroll of grp "dgRouten" into letzterscroll_datagrid ## Jetzt löschen mobileControlDelete sScrollerID end scroller_delete on scrollerDidScroll pHScroll, pVScroll set the DGvScroll of group "dgRouten" to pVScroll set the DGSelectedLine of group "dgRouten" to empty end scrollerDidScroll on mouseRelease set the dgHilitedLines of group "dgRouten" to empty end mouseRelease
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.