German Welche Tabellen-Lösung nehmen?

Discussion in 'German Forum' started by JOTHA, Apr 28, 2019.

  1. JOTHA

    JOTHA Well-Known Member Licensed User

    Hallo Community,

    ich möchte eine Anwesenheitsliste (für ca. 8 - 20 Personen) in einer App anzeigen lassen, deshalb soll eine horizontal scrollbare und durch Anklicken aus einem Auswahlmenü befüllbare Tabelle generiert werden.

    1) die Tabelle soll in A1 den Monat anzeigen. Beispiel: 04.19 (Apr) = April 2019. Der Monat soll vorher über ein Menü ausgewählt werden.

    2) als 1. Header sollen von B1 bis AF1 die passenden Wochentage (von Mo - So) zum Datum befüllt werden.

    3) als 2. Header soll von B2 bis max. AF2 das passende Datum befüllt werden, wobei der Januar eben 31 Tage hat und der Februar manchmal nur 28 oder 29 Tage (Schaltjahr) hat. Die Tabelle soll dann automatisch "abgeschnitten" werden.

    4) ab A3 sollen dann in der Spalte A die Personen automatisch eingetragen werden (und dann nicht mehr anklickbar sein), die Daten kommen aus einer SQL oder wahlweise einer Textdatei. Die Tabelle soll dann ebenfalls automatisch unten "abgeschnitten" werden.

    Tabelle Anwesenheitsliste - 1.jpg

    5) die Datenfelder ab B3 bis AF ... sollen anklickbar sein, damit man aus einem weiteren Auswahlmenü bestimmte Buchstaben eintragen kann, z.B. x = anwesend ... oder K = krank, u.s.w. ... Samstag und Sonntag sollen standardmäßig nicht anklickbar sein und deshalb anders eingefärbt sein.

    6) nach dem Anklicken der Auwahl sollen die Felder noch eingefärbt werden, d.h. Textfarbe und -hintergrund sollen automatisch geändert werden.

    Tabelle Anwesenheitsliste - 2.png

    Siehe Bilder ... und jetzt frage ich mich, mit welcher Tabellen-Lösung ich am besten beginne?
    * Wer hat Erfahrungen mit horizontal scrollbaren und befüllbaren Tabellen?

    Mir geht es nicht um eine komplette Lösung (das bekomme ich schon hin), sondern um die Information, mit welchen Tools ich das alles realisieren kann.

    Über eine kleine Anschubhilfe würde ich mich sehr freuen ... ;-)
     
  2. DonManfred

    DonManfred Expert Licensed User

    This is the english part of the forum. Please write english here.

    Edit:
    Erel hat den Thread ins deutsche forum verschoben.
     
    Last edited: Apr 28, 2019
  3. JOTHA

    JOTHA Well-Known Member Licensed User

    Sorry :( ... and thank you!
     
  4. DonManfred

    DonManfred Expert Licensed User

    Das wird so nicht passen ohne weiteres.
    Ein paar anmerkungen:

    - Du sollte vermutlich besser das ganze "Wöchentlich" anzeigen. Da reicht eine Bildschirmbreite nämlich aus um alle Daten anzuzeigen. Du könntest dann ein vertikal scrollbare liste anzeigen. Auch wenn es 40 personen wären.

    Wenn es aber unbedingt Horizontal scrollbar sein muss:

    Du kannst ein xCustomListview verwenden und es so einstellen, dass es Horizontal scrollbar ist. Dann dürfen die rows im gesammten natürlich nicht mehr als platz auf dem Bildschirm ist. Könnte bei 20 Teilnehmerns evtl. schon klapp werden (schätze ich), wenn man die Spalten dann evtl. auch noch anklicken will.

    Ich denke, dass du mit xCustomListview aber wohl die besten chancen hast, das umzusetzen, was dir da vorschwebt. Es ist Horizontal nutzbar und Du bist hier recht ungebunden. Du musst dir halt für die einzelnen Zeilen einsprechende Layouts bauen.
     
    JOTHA likes this.
  5. klaus

    klaus Expert Licensed User

    Ich hatte so etwas vor etlichen Jahern in VB6 für PC gemacht.
    Ich hatte Alles grafisch gemacht.

    Für Deinen Fall kenne ich keine Tabellen Library die das direkt machen kann.

    Du kannst entweder xCustomListView oder ScrollView2D nehmen.
    ScrollView2D hat den Vorteil dass es in beide Richtungen scrollbar ist.
    Jedes mal wenn Du einen neuen Monat auswählst musst Du die Tabelle entweder neu aufbauen oder zu mindest die nötigen oder unnötigen Views anzeigen oder nicht.

    Ich würde es mit einer ScrollView2D machen.
     
  6. JOTHA

    JOTHA Well-Known Member Licensed User

    Hallo DonManfred und klaus,
    vielenDank für eure Antworten!

    @DonManfred ... an eine xCustomListView habe ich auch zuerst gedacht, da ich sehr wahrscheinlich nur horizontal scrollen muss.

    Bei einer wöchentlichen Darstellung müsste ich jedesmal die Teilnehmerliste für jede Woche neu erstellen und das nimmt ja vom Bildschirm auch wieder eine Menge Platz weg, außerdem wird es dann schon etwas unübersichtlicher.

    Soweit ich weiß, könnte ich ja in einer xCustomListView auch noch mehrere horizontalScrollView einbauen, oder?

    @klaus: die ScrollView2D ist eine sehr interessante Variante, wenn ich noch Platz nach unten brauchen würde. Diese kann ich sicher noch in einem anderen Bereich brauchen.

    Meine eigentliche Frage zielte aber in Richtung "Tabellen.Lib", damit meine ich, ob es eine Art von Tabelle gibt die sich anhand der Daten automatisch aufbaut und ich nicht jedes Kästchen extra zeichnen muss ... Aber so etwas gibt es anscheinend leider nicht?
     
  7. klaus

    klaus Expert Licensed User

    Das hatte ich verstanden.
    Und meine Antwort: Für Deinen Fall kenne ich keine Tabellen Library die das direkt machen kann.
     
    Last edited: Apr 28, 2019
  8. mw71

    mw71 Active Member Licensed User

    JOTHA likes this.
  9. klaus

    klaus Expert Licensed User

    JOTHA likes this.
  10. JOTHA

    JOTHA Well-Known Member Licensed User

    Hallo mw71 und klaus,

    mit B4XTable habe ich schon herumexperimentiert, da stört mich auch, dass man diese durchblättern muss. Ausserdem brauche ich in dieser Tabelle keine Suchfunktion und soweit ich das mitbekommen habe, lässt sich die "Überschrift" mit der Blätter- und Suchfunktion auch nicht ausblenden oder anders umgestalten. Das würde mir also nur Platz wegnehmen.

    Mit der Class FlexibleTable habe ich jetzt auch schon 3 Stunden herumgespielt ... bis ich jetzt die Antwort von klaus gelesen habe.

    Ich werde jetzt einfach mal 31 Labels (x Teilnehmer-Anzahl + 2 x für Header) auf ein Panel in einer HorizontalScrollView legen ... damit müsste sich alles realisieren lassen.
     
  11. klaus

    klaus Expert Licensed User

    Ich würde ScrollView2D nehmen, da hast Du das senkrechte scrollen gleich mit.
    ScrollView2D hat auch ein internes Panel wie ScrollView oder HorizontalScrollView.
    Der Aufbau in ScrollView2D ist der Gleiche wie in HorizontalScrollView.
    Den Aufbau würde ich im Programm erstellen mit verschiedenen For / Next Loops.
     
    JOTHA likes this.
  12. JOTHA

    JOTHA Well-Known Member Licensed User

    OK klaus (Du hast mich überzeugt :)), ich probiere das mit der ScrollView2D mal aus!
     
  13. klaus

    klaus Expert Licensed User

    Ist das was Du suchst?
    Ich habe ein bisschen mit Deinem Problem gespielt.
    Ich habe nicht Alles getestet.

    upload_2019-4-29_21-26-13.png
     

    Attached Files:

    JOTHA and DonManfred like this.
  14. JOTHA

    JOTHA Well-Known Member Licensed User

    Hallo klaus,

    vielen lieben Dank für deine Mühe! ... das war aber nicht nur mal ein bischen "gespielt" ... und sieht ja schon hammermässig aus!
    Leider kommt aber bei mir ein Fehler, anbei siehe LOG:
    ... und noch eine Frage dazu: In #SupportedOrientations ist "landscape" eingetragen. Würde das sicher auch in "portrait" klappen?
     
  15. klaus

    klaus Expert Licensed User

    Welche Androidversion benutzt Du? Ich habe 9.01.2
    Welche ScrollView2D Version hast Du? Ich habe 1.30
    portrait funktioniert auch., Du kannst ohne weiteres 'unspecified' eingeben.
    Ich habe landscape eingegeben weil die Tabelle meistens breiter als höher ist.
     
    JOTHA likes this.
  16. JOTHA

    JOTHA Well-Known Member Licensed User

    Android Version 7.1.1
    ScrollView2D Version 1.10

    ... dann werde ich jetzt gleich mal die ScrollView2D Version aktualisieren ;).

    --> nach der Aktualisierung auf Version 1.30 funktioniert es!

    Vielen Dank klaus!!! :)
     
    Last edited: Apr 30, 2019
  17. klaus

    klaus Expert Licensed User

    Ich hab noch ein bisschen weiter gespielt.
    Die erste Version zeigt dass man so was relativ leicht selbst machen kann.
    Die Tabelle musste bei jeder Änderung neu erstellt werden.
    Die zweite, beiliegende, Version ist etwas besser erstellt, haupsächlich für Datenverwaltung.
    Solange die Anzahl der Personen gleich bleibt brauch man die Tabelle nicht mehr neu zu erstellen.
    Alle Labels sind leicht ansprechbar mit bekannten Namen einzeln oder Arrays.
    Die Jahr nd Monat Anzeige ist ausserhalb der ScrollView und immer sichtbar.
    Die Tage oben, bleiben immer sichtbar und scrollen nur waagrecht mit der ScrollView.

    upload_2019-4-30_16-21-6.png
     

    Attached Files:

    so27 and JOTHA like this.
  18. JOTHA

    JOTHA Well-Known Member Licensed User

    Hey klaus,

    du bist spitze!
    Ich habe auch an der Tabelle weitergetüftelt (siehe ZIP) ...
    ... als ich das Datum über einen Spinner ausgewählt habe war das so, dass die Tabelle quasi neu erstellt werden musste.
    ... genau das wollte ich auch noch programmieren ... jetzt kann ich mir das anschauen, wie Du es gemacht hast. SUPER!
    Vielen Dank nochmals!
     

    Attached Files:

  19. JOTHA

    JOTHA Well-Known Member Licensed User

    Geht das mit dem Fixieren auch für die erste Spalte (so wie bei Excel)?
    Dann würde ich die Teilnehmer-Spalte mit Textumbruch schmaler machen, und dafür aber die Höhe und Breite der Spalten erhöhen.

    P.S.: Mit DateMonth = DateTime.Date(DateTime.Now) startet die Tabelle immer zum aktuellen Datum.

    Momentan tüftle ich an der Teilnehmer-Liste.
    Du hast Dir die Mühe gemacht, das man die Teilnehmer anklicken kann, aber das sollte keine Option sein, denn die Teilnehmer sich fest "gebucht" und sollen aus einer SQL ausgelesen werden. Nach dem Auslesen würde ich diese dann mit Row.Count durchzählen um die Gesamtanzahl der Zeilen zu generieren.
     
    Last edited: Apr 30, 2019
  20. klaus

    klaus Expert Licensed User

    Ja, aber mit dem gleichen Nachteil wie mit den beiden ober Zeilen mit den Tagen, die scrollen nur wenn man die ScrollView scrollt.
    Ich hatte mal versucht zwei ScrollViews zu synchronisieren, das hat aber nie richtig geklappt.
    Daran hatte ich auch gedacht, hatte es aber vergessen einzubauen.
    Habe ich nur als Anregung eingebaut, um zu zeigen wie man es macht.

    Für das fixieren der ersten Spalte, ich hatte auch daran gedacht, aber das fehlen des Scrolling hatte mich davon abgehalten.
    Willst Du versuchen das selbst einzubauen, auf dem gleichen Prinzip wie die oberen Zeilen?
    Oder möchtest Du dass ich es mache?
    Wenn ja, dann müssen wir uns mit den Projekten synchronisieren.
     
    DonManfred likes this.
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice