Seite 1 von 2

Balken von links nach rechts in einem Browse

Verfasst: Do, 24. Jun 2021 17:31
von sammler0002
Moin Ihr lieben,

mal eine Frage an die GUI Profis unter Euch.

Ich würde gerne so etwas in der Art in Xbase darstellen:
1.jpg
1.jpg (286.86 KiB) 7083 mal betrachtet
(Das Bild ist aus einer Anleitung https://crent.de/downloads/c-rent_kurzb ... 3_2009.pdf. Soll keine Werbung sein, wollte nur eine Quelle angeben)

Es geht nicht um die Pfeile oder Kreise, sondern schlicht um die Balken in dem Browse. In diesem Fall sind das Buchungen, die dargestellt werden.

Wie kann ich sowas darstellen? Ich kann zwar in einem Browse einzelne Zellen färben, aber das will ich ja eigentlich nicht. Ich möchte den Balken ja durchgehend haben...

Ich hoffe Ihr versteht was ich meine.

Re: Balken von links nach rechts in einem Browse

Verfasst: Do, 24. Jun 2021 18:14
von Tom
In einer einfachen Variante (wir machen so etwas auch auf ziemlich tricksige Art) also so in etwa? Das macht man mit Ownerdrawing. Oder wir machen das. Dieses Browse enthält nur vier Spalten. Header und Inhalt der Kalenderspalte sind komplett mit Ownerdrawing gezeichnet. Der Trick besteht darin, wie man die Daten für die CustomDrawCell aufbereitet, aber mit Objekten geht das recht lässig. Und der Rest ist ein bisschen GRA.
belegungsplan.png
belegungsplan.png (97.63 KiB) 7075 mal betrachtet

Re: Balken von links nach rechts in einem Browse

Verfasst: Do, 24. Jun 2021 18:16
von Tom
Man kann natürlich auch mit HTML hantieren. Also XbpHtmlDialog verwenden, und darin dann einfache HTML-Tabellen oder cooles Zeug aus irgendeinem der vielen, vielen Frameworks, die es gibt.

Re: Balken von links nach rechts in einem Browse

Verfasst: Do, 24. Jun 2021 18:21
von Tom
Ach so, wir werten dann beim Klicken in diese Spalte auch aus, wohin genau geklickt wurde, um die Daten entsprechen zu bearbeiten, und es gibt auch Funktionalitäten zum Verlängern und Verkürzen der Inhalte mit der Maus.

Re: Balken von links nach rechts in einem Browse

Verfasst: Fr, 25. Jun 2021 8:06
von sammler0002
Das ist ja genau das, was ich gesucht habe. Ownerdrawing ... das werde ich mir dann wohl mal anschauen. Danke Dir Tom.

Re: Balken von links nach rechts in einem Browse

Verfasst: Fr, 25. Jun 2021 8:24
von Jan
Tom hat da vor Jahren mal auf einer Jahreshauptversammlung in Altwarmbüchen eine Session zu Ownerdrawing in einem Browse zu gegeben. Mit Code in verschiedenen Ausbaustufen. Das könnte eventuell hilfreich sein für den Einstieg.

Jan

Re: Balken von links nach rechts in einem Browse

Verfasst: Fr, 25. Jun 2021 8:32
von sammler0002
Danke für den Hinweis Jan. Leider bin ich kein Vereinsmitglied, daher habe ich da keinen Zugriff #-o

Re: Balken von links nach rechts in einem Browse

Verfasst: Fr, 25. Jun 2021 8:45
von Martin Altmann
Moin Philipp,
sammler0002 hat geschrieben: Fr, 25. Jun 2021 8:32Leider bin ich kein Vereinsmitglied
das kannst Du ja ändern ;-)

Viele Grüße,
Martin

Re: Balken von links nach rechts in einem Browse

Verfasst: Fr, 25. Jun 2021 8:46
von Jan
Philipp,

an der Vereinsmitgliedschaft kann man ja was ändern :-D Antrag ist schnell ausgefüllt, und kostet nicht viel im Jahr. Und macht sich auch schnell bezahlt, auch finanziell.

Und der Code ist so alt, vielleicht läßt Tom sich ja erweichen und rückt den an Dich raus.

Jan

Re: Balken von links nach rechts in einem Browse

Verfasst: Fr, 25. Jun 2021 10:21
von Tom
Hatte ich in dem Code von damals auch rumgemalt? Ich meine, das wäre nur was mit Mehrzeiligkeit, Icons und Farben gewesen. Diese Geschichte hier ist ein bisschen komplizierter, aber genau genommen braucht man nur ein paar Boxen, Funktionen wie GraCaptionStr() und so weiter. Entscheidend ist eigentlich eher, wie man die Daten fürs Malen aufbereitet, denn CustomDrawCell() läuft im UI-Thread und sieht z.B. keine Workareas. Deshalb ist es sinnvoll, Objekte zu browsen, die möglichst viele Informationen an die Zeichenfunktionen liefern und dort einfach mit GetCell() abgerufen werden können (aInfo[XBP_DRAWINFO_AREA]:GetCell(aInfo[XBP_DRAWINFO_ITEM])). Man kann natürlich auch einfach alle Datenfelder in ein Array packen und mit Var2Char umwandeln - und dann in der Zeichenmethode wieder zurück.
Der Rest ist kreativer Umgang mit dem Zeichenbereich (also dem Rechteck innerhalb der Zelle, das man nutzen darf), und Hantieren mit GraBox, GraCaptionStr, GraGradient und ein paar anderen Funktionen. Im oben sichtbaren und, wie gesagt, recht simplen (und auch schon etwas betagten) Beispiel enthält das Zellenobjekt die Zeiträume (Überlagerungen werden auch dargestellt) und viele weitere Informationen. Daraus wird dann errechnet, wo die Boxen hinmüssen und was in ihnen angezeigt werden soll.

Aber die Beispiele von der Con damals können gerne an Philipp weitergegeben werden (ich weiß nicht, wo ich sie noch habe). Das waren aber wirklich nur Basics.

Re: Balken von links nach rechts in einem Browse

Verfasst: Fr, 25. Jun 2021 10:45
von sammler0002
Danke fürs Freigeben Tom.

Und Danke an Jan für die Unterstützung und den Code.

Ich werde mal mein Glück damit versuchen.

Re: Balken von links nach rechts in einem Browse

Verfasst: Fr, 25. Jun 2021 12:55
von ramses
Jan hat geschrieben: Fr, 25. Jun 2021 8:46 .... Und macht sich auch schnell bezahlt, auch finanziell.
Hallo Jan

das interessiert mich nun aber: Wie macht sich eine "Vereinsmitgliedschaft" bezahlt und bringt finanziellen Nutzen????

Re: Balken von links nach rechts in einem Browse

Verfasst: Fr, 25. Jun 2021 13:01
von Martin Altmann
Moin Carlo,
das wurde nun schon so oft kommuniziert - darum verweise ich einfach auf die Webseite des Vereins: https://xbaseentwickler.de/index.php/vo ... liedschaft

Viele Grüße,
Martin

Re: Balken von links nach rechts in einem Browse

Verfasst: Fr, 25. Jun 2021 13:28
von ramses
Danke Martin.

es klang so dass ich schon dachte es ergäbe im Alltag finanzielle Vorteile .....

Re: Balken von links nach rechts in einem Browse

Verfasst: Fr, 25. Jun 2021 13:30
von Tom
Im Alltag gibt es emotionale und soziale Vorteile. 8)
Und kognitive.

Re: Balken von links nach rechts in einem Browse

Verfasst: Fr, 25. Jun 2021 13:37
von Jan
Carlo,

warum stellst Du diese Frage so entsetzt und provokativ? Das geht doch auch einfacher und netter.

Martin hat ja schon den Link auf die Vereinsseite gepostet, die auf Vergünstigungen bei diversen Lieferanten hinweist. Meine Teilnahme an den jährlichen Forentreffen (halt bis auf letztes Jahr, wo ein böser Bazillus uns einen Strich durch die Rechnung gemacht hat) ist auch vergünstigt als Vereinsmitglied. Das sind die materiellen Vorteile für mich. Die durchaus monetär mehr wert sind als mein Jahresbeitrag im Verein.

Dazu kommen die Vorteile, das ich Zugang zu Forenbereichen habe, die für Vereinsmitglieder reserviert sind. Das ich die Filme und Unterlagen der Forentreffen sofort zur Nachbearbeitung zur Verfügung habe - was durchaus einen finanziellen Vorteil bedeuten kann.

Grundsätzlich muß ich aber sagen das ich nicht wegen der Finanzen im Verein bin. Sondern weil ich das für richtig und gut halte. Der Verein unterhält das Forum, was Geld kostet. Da möchte ich zur Kostendeckung beitragen. Und der Verein ist eine feste Größe im Umgang mit Alaska und anderen Lieferanten, wie z. B. Combit. Das würden wir als Einzelkämpfer alles nie auf die Reihe bekommen haben.

Wie Martin schrieb - diese Thematik haben wir hier schon mehrfach und ellenlang durchgekaut.

Jan

Re: Balken von links nach rechts in einem Browse

Verfasst: Fr, 25. Jun 2021 14:00
von Werner_Bayern
sammler0002 hat geschrieben: Do, 24. Jun 2021 17:31 Es geht nicht um die Pfeile oder Kreise, sondern schlicht um die Balken in dem Browse. In diesem Fall sind das Buchungen, die dargestellt werden.

Wie kann ich sowas darstellen? Ich kann zwar in einem Browse einzelne Zellen färben, aber das will ich ja eigentlich nicht. Ich möchte den Balken ja durchgehend haben...
Servus,

ich behaupte, das geht ohne Ownerdrawing, bzw. Eigenprogrammierung. Du kannst doch überall die entsprechenden Parameter mitgeben für Vorder- und Hintergrundfarbe. Wir nutzen z. B. das XbpColoredQuickBrowse, haben es etwas aufgebohrt - ist sehr einfach - und da kannst dann auch sowas machen:
test.PNG
test.PNG (21.88 KiB) 7003 mal betrachtet

Re: Balken von links nach rechts in einem Browse

Verfasst: Fr, 25. Jun 2021 14:07
von Jan
Die Idee von Werner nutze ich ebenfalls intensiv. Wobei ich nicht grundsätzlich die komplette Reihe farbig markiere, sondern oftmals nur bestimmte Felder darin, um auf den Inhalt explizit hinzuweisen.

Wie Werner schrieb ist das recht einfach, ist nur etwas Schreibkram, die ganzen Regeln zu hinterlegen.

Sieht halt nur manchmal nicht ganz so gefällig aus wie das Beispiel von Tom oben.

Jan

Re: Balken von links nach rechts in einem Browse

Verfasst: Fr, 25. Jun 2021 15:44
von Tom
Natürlich kann man einzelne Zellen färben, dann braucht man halt 31 (oder 30 oder 29 oder 28) Zellen für einen Monat oder 365 oder 366 für ein Jahr - wir brauchen immer nur eine, und wir können eine Woche, einen Monat, ein Quartal oder ein Jahr in dieser einen Zelle zeigen, ohne zu wechseln. Aber wir legen hier auch noch mehrere Bereiche übereinander und nebeneinander (Wechsel innerhalb eines Tages!), und wir sind volldynamisch und sehr flexibel. Davon abgesehen: Wie schaffst Du es bei diesem Modell, lieber Werner, wenn Du für den Zeitraum vom 10. bis zum 15. anzeigen willst, dass Werner Meier reserviert hat, während es vom 17. bis zum 31. Thomas Müller ist? ;)

Re: Balken von links nach rechts in einem Browse

Verfasst: Fr, 25. Jun 2021 15:52
von Werner_Bayern
Servus Tom,

gar nicht 8)

Die Aufgabenstellung war ja - siehe Zitat in meinem 1. Post hier.

Klar bist Du mit Ownerdrawing Dein eigener Herr. Ich wollte nur darauf hinweisen, dass es evtl. 2 einfachere, schnellere (im Sinne von Programmieraufwand) Wege gibt.

Re: Balken von links nach rechts in einem Browse

Verfasst: Fr, 25. Jun 2021 16:19
von Tom
Servus, Werner.

Wir nutzen den Ein-Zellen-Weg ja auch, vor allem dann, wenn es sich täglich ändernde Daten gibt, etwa bei Dienstplanung. Allerdings wird dann auch ganz schön in den einzelnen Zellen herumgekritzelt, so dass etwa an einem Tag mehrere Schichten, zugleich die Soll- und die Istzeiten, und viele zusätzliche Eigenschaften wie Icons für Rufbereitschaft oder Geburtstage usw. angezeigt werden können. Wenn man für einen Tag eine Spalte hat, sind die Daten eindeutiger, während wir in dem Fall, dass wir eine Spalte für ein ganzes Jahr nutzen, andere Bearbeitungsmechanismen anbieten müssen. Aber Philipp wollte ja Zeitstrahlen mit Beschriftungen anzeigen. Das geht m.E. nur mit Ownerdrawing - oder mit HTML. Das ist ja sowieso die Zukunft, habe ich mir sagen lassen. 8)

Re: Balken von links nach rechts in einem Browse

Verfasst: Fr, 25. Jun 2021 16:40
von Jan
Tom hat geschrieben: Fr, 25. Jun 2021 15:44Natürlich kann man einzelne Zellen färben, dann braucht man halt 31 (oder 30 oder 29 oder 28) Zellen für einen Monat oder 365 oder 366 für ein Jahr
Tom,

und genau das ist durchaus ein Problem. Nicht nur der Verwaltung der vielen Spalten im Code. Sondern auch der Performance. Jede zusätzliche Spalte kostet Zeit im Aufbau und Refreshen. Selbst wenn man man nur einen Monat anzeigen möchte, dazu kommen dann ja noch Spalten für weitere erforderliche Daten wie Name o. ä., dann kann das schon mal gehörig in die Knie gehen.

Von daher ist Dein Ansatz sicher auch aus diesem Grund vorteilhaft.

Jan

Re: Balken von links nach rechts in einem Browse

Verfasst: Fr, 25. Jun 2021 17:01
von ramses
Jan hat geschrieben: Fr, 25. Jun 2021 13:37 Carlo,
warum stellst Du diese Frage so entsetzt und provokativ? Das geht doch auch einfacher und netter.
Hallo Jan


es sollte weder entsetzt noch provokativ und auch nicht unnett wirken.

Wenn du es so aufgefasst hast entschuldige bitte.

Re: Balken von links nach rechts in einem Browse

Verfasst: Fr, 25. Jun 2021 22:36
von AUGE_OHR
hi,
Balken in dem Browse.
brauch man ein Browse ... :?:

man braucht sicherlich ein X,Y "Gitter" für die "Balken" aber kein Browse / GRID
ich habe es nun so mit meine Outook Kalendar Clone so gemacht
DDLabel.jpg
DDLabel.jpg (221.51 KiB) 6985 mal betrachtet
Ok ich arbeite von "oben" nach "unten" aber das selbe geht auch "links" nach "rechts"
das ist bei mir das "blättern" im Kalender für "vor" bzw "zurück" mit dem Maus-Rad

warum :

angenommen man hat einen kurzen und einen (sehr) langen Balken
a.) 1:1 Darstellung mit Scrollbar
b.) längster Balken = 100 %

zu a.) langen "scrollen" wenn man einen kurzen Balken ansteuern will
zu b.) kurze Balken schlecht zu "sehen" ( und zu "treffen" auf dem Touch Screen )

bei der b.) Lösung kann man einen Zoom verwenden !

ich "male" nun meine "Balken" in das "Gitter" für die passenden Daten
das Ganze ist eine Static ( WC_STATIC ) was ich per Ownerdraw "male"

der vertikale Scrollbar des "Gitter" reagiert auch auf das Maus-Rad
mit Control + Mausrad, welches dem "wischen" entspricht, wird "umgeblättert"

---

nun habe ich es mit harbour gemacht den mein Xbase++ Code war dafür "ungeeignet"
die XbpBrowse() CLASS gibt es "so" nicht unter harbour ... aber WC_STATIC = XbpStatic

das "malen" mit Ownerdraw => XbpStartic:Draw ist nun das selbe wie das von Tom erwähnte CustomDraw()
es ist aber IHMO einfacher mit einem XbpStatic() als mit XbpBrowse() weil man da "mehr" hat

Re: Balken von links nach rechts in einem Browse

Verfasst: Sa, 26. Jun 2021 9:16
von Tom
So etwas habe ich auch gebaut, auf einem Static, frei skalierbar, mit Mehrfachmarkierung und -verschiebung, D&D in alle Richtungen, Schriftartenwechsel auf einem Label, Icons, Hintergrundgrid und vielem mehr. War aber ein ziemlicher Schuh.