myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Gemeinschaft » .NET-Komponenten und C#-Snippets » TimeChart
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

TimeChart

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
JAck30lena JAck30lena ist männlich
myCSharp.de-Team

avatar-2653.jpg


Dabei seit: 01.10.2006
Beiträge: 11.397
Entwicklungsumgebung: Visual Studio 05/08/10 Prof.


JAck30lena ist offline

TimeChart

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Beschreibung:

ein grid, das zeitbasierte anzeigen ermöglich. also sowas wie "etwas-start-ende"

verwendungsbeispiel und screenshot folgen.

erstmal die 3 relevanten klassen um mit dem timechart arbeiten zu können.

1. TimeChart:

das ist das eigendliche control. es besitzt einige zusätzliche properties und methoden, die alle dokumentiert sind. ich denke die namen sind sprechend. wichtig ist, das die liste von timechartlabel die eigendlichen anzeigeinformationen enthält.

2. TimechartLabel

in dieser klasse steht alles, was das grid braucht, um eine row anzeigen zu können. um auch mehrere zeitintervalle (z.b. 01:00 - 02:00 und 03:00 - 18:00) zu ermöglichen, habe ich ihm eine liste von startendtimepairs gegeben.
wichtig: hier findet (noch) keinerlei validation statt. überschniedungen solltet ihr also vermeiden, genauso wie endzeit vor der startzeit. die sourcen liegen bei also könnt ihr das auch nachträglich einfügen.

3. StartEndTimePair

hier wird nur eine startzeit und eine endzeit ohne jegliche validation abgelegt. momentan ist es ncoh eine klasse. ich überlege ob ich das später nicht ienfach in einen struct umbaue.

Schlagwörter: TimeChart, Custom Chart

JAck30lena hat dieses Bild (verkleinerte Version) angehängt:
TimeChartDesign.jpg
Volle Bildgröße

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von JAck30lena am 17.09.2008 13:19.

08.09.2008 17:39 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
JAck30lena JAck30lena ist männlich
myCSharp.de-Team

avatar-2653.jpg


Dabei seit: 01.10.2006
Beiträge: 11.397
Entwicklungsumgebung: Visual Studio 05/08/10 Prof.

Themenstarter Thema begonnen von JAck30lena

JAck30lena ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

verwendung und screenshot:

innerhalb eines form-constructors:

C#-Code:
            TimeChart t = new TimeChart();
            t.BackgroundCornerColor = Color.LightBlue;
            t.BackgroundCenterColor = Color.White;

            List<StartEndTimePair> startEndPairList = new List<StartEndTimePair>();
            //02:00 - 14:20
            DateTime startTime = DateTime.Today.AddHours(2);
            DateTime endTime = DateTime.Today.AddHours(14).AddMinutes(20);
            startEndPairList.Add(new StartEndTimePair(startTime, endTime));
            //16:50 - 20:20
            startTime = DateTime.Today.AddHours(16).AddMinutes(50);
            endTime = DateTime.Today.AddHours(20).AddMinutes(20);
            startEndPairList.Add(new StartEndTimePair(startTime, endTime));

            TimeChartLabel chartLabel = new TimeChartLabel (Color.DimGray,Color.DeepSkyBlue, "tester 1", startEndPairList);
            t.TimechartLabels.Add(chartLabel);

            t.Dock = DockStyle.Fill;
            this.Controls.Add(t);

ein beispiel, wobei die erste row dem oberen code entspricht:

JAck30lena hat dieses Bild (verkleinerte Version) angehängt:
app.jpg
Volle Bildgröße

08.09.2008 17:41 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
JAck30lena JAck30lena ist männlich
myCSharp.de-Team

avatar-2653.jpg


Dabei seit: 01.10.2006
Beiträge: 11.397
Entwicklungsumgebung: Visual Studio 05/08/10 Prof.

Themenstarter Thema begonnen von JAck30lena

JAck30lena ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

und nun der source inklusive demoprojekt:
wünsche und kritik höre ich mir gerne an.


Dateianhang:
unknown Chart_V5.zip (284 KB, 1.387 mal heruntergeladen)

Dieser Beitrag wurde 10 mal editiert, zum letzten Mal von JAck30lena am 08.10.2008 09:27.

08.09.2008 17:41 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
JAck30lena JAck30lena ist männlich
myCSharp.de-Team

avatar-2653.jpg


Dabei seit: 01.10.2006
Beiträge: 11.397
Entwicklungsumgebung: Visual Studio 05/08/10 Prof.

Themenstarter Thema begonnen von JAck30lena

JAck30lena ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

so, neue version.

neu ist:

1. selektieren ist nun möglich.
2. hottracking ist möglich (per default ist es momentan an)
3. tooltips sind eingebaut (rowspezifischer text)
4. das resizen der rowheader ist nun auch möglich
5. das grid zeichnet sich nun nicht mehr über die ganze höhe, sondern ist nin abhängig vom dateninhalt


zusätzlich geplant ist:
1. jede menge events
2. ein paar zusätzliche konfigurationsoptionen

und hier noch ein screenshot des neuen grids:

edit: ach ja der mousezeiger ist hier leider nicht mit drauf aber er ist innerhalb des selektierten bereiches (hottracking) ^^

JAck30lena hat dieses Bild (verkleinerte Version) angehängt:
app2.jpg
Volle Bildgröße

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von JAck30lena am 10.09.2008 12:16.

10.09.2008 12:15 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Neals Neals ist männlich
myCSharp.de-Mitglied

Dabei seit: 03.04.2008
Beiträge: 203
Entwicklungsumgebung: VS 2008 Pro
Herkunft: Nordseeküste


Neals ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Würdest nochmal den aktuellen Code posten? Danke dir ;-)
10.09.2008 19:21 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
JAck30lena JAck30lena ist männlich
myCSharp.de-Team

avatar-2653.jpg


Dabei seit: 01.10.2006
Beiträge: 11.397
Entwicklungsumgebung: Visual Studio 05/08/10 Prof.

Themenstarter Thema begonnen von JAck30lena

JAck30lena ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

für das posten ist er ein wenig zu groß aber ich habe code und demoprojekt als zip 2 beiträge weiter oben bereits hochgeladen. (deswegen jetzt _V2)
10.09.2008 21:01 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
BerndFfm BerndFfm ist männlich
myCSharp.de-Team

avatar-3299.jpg


Dabei seit: 20.01.2006
Beiträge: 3.593
Entwicklungsumgebung: Visual Studio 2015
Herkunft: Frankfurt a.M.


BerndFfm ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo JackLena,

das sieht Klasse aus !

Kann ich vielleicht gebrauchen ;-)

Grüße Bernd
10.09.2008 21:07 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
JAck30lena JAck30lena ist männlich
myCSharp.de-Team

avatar-2653.jpg


Dabei seit: 01.10.2006
Beiträge: 11.397
Entwicklungsumgebung: Visual Studio 05/08/10 Prof.

Themenstarter Thema begonnen von JAck30lena

JAck30lena ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo BerndFfm

danke für dein positives feedback.

gruß Jack.
10.09.2008 21:15 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
chrische5 chrische5 ist männlich
myCSharp.de-Mitglied

Dabei seit: 02.07.2007
Beiträge: 489
Entwicklungsumgebung: Visual Studio 2005
Herkunft: Europa


chrische5 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo

Das sieht sehr gut aus. Kann man das dargestellte Zeitinterval einstellen?

chrische
10.09.2008 23:47 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
JAck30lena JAck30lena ist männlich
myCSharp.de-Team

avatar-2653.jpg


Dabei seit: 01.10.2006
Beiträge: 11.397
Entwicklungsumgebung: Visual Studio 05/08/10 Prof.

Themenstarter Thema begonnen von JAck30lena

JAck30lena ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

noch nicht ^^

da das nun mehrere gefragt haben, werde ich mir hierzu was überlegen.
11.09.2008 09:05 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
chrische5 chrische5 ist männlich
myCSharp.de-Mitglied

Dabei seit: 02.07.2007
Beiträge: 489
Entwicklungsumgebung: Visual Studio 2005
Herkunft: Europa


chrische5 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo

Na das hört sich doch super an...

chrische
11.09.2008 10:39 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
JAck30lena JAck30lena ist männlich
myCSharp.de-Team

avatar-2653.jpg


Dabei seit: 01.10.2006
Beiträge: 11.397
Entwicklungsumgebung: Visual Studio 05/08/10 Prof.

Themenstarter Thema begonnen von JAck30lena

JAck30lena ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

neuer tag, neue version.

version 3 ist es nun mittlerweile und ich habe sie weiter oben bereits hochgeladen.
(sourcen inklusive demoprojekt)

neu ist:
1. man kann startzeit des grids verstellen (also das das grid bei z.b. 01:30 uhr anfängt)
2. man kann die endzeit einstellen (analog zu punkt 1)
3. man kann das intervall verstellen
4. jede menge events (selectedindexchanged und viele propertyänderungen, insgesamt sind es 22 stk)
5. ein paar neue methoden um punkt 1 bis 3 setzten zu könne (warum? siehe unten)
6. die zeit und die linie, wo sich der cursor befindet wird nun hervorgehoben (siehe screenshot), da ich gemerkt habe, das bei einem kleineren intervall, die zeiten recht eng aufeinander rücken können und das wird dann zu unübersichtlich. (hervorheben ist optional aber per default an)
7. jede menge neue properties (z.b. die intervallabstände und die bereits genannten geschichten.
8. wenn eine zeit vom grid nciht erfasst wird (z.b. startzeit sollte 2:00 uhr sein aber grid fängt bei 5:00 uhr an) dann wird das gesondert angezeigt. (siehe screenshot)
9. designersupport ist nun gegeben
10. einiges an xml-documentation nachgeholt

was noch fehlt:
1. wenn sich die timelabelcollection ändert, muss man noch manuell ein refresh anstoßen. ich habe vor da eine observable collection einzusetzen und so nur ein invalidate auf die betroffenen bereiche auszusprechen.
2. eine umstellung von den benötigen klassen "Timechartlabel" und "Startendttimepair" auf nur ein benötigtes implementiertes interface, damit man auch eigene klassen dafür hernehmen kann.


edit: ich sehe gerade, das cih vergaß den grund für das indirekte setzen der intervalzeit und start und endzeit zu erläutern. also:

das ganze funktioniert nur, wenn ((startzeit - endzeit) modulo intervall == 0) ergibt
soll heißen das die anzahl der intervalle zwischen start und ende eine gerade zahl ergeben muss. z.b. geht das nicht: start 01:00 ende: 02:00 intervall 00:45

daher habe ich changemethoden in allen variationen und trychange-methoden in allen variationen implementiert.
zu guter letzt ein screenshot des neuen TimeCharts:

JAck30lena hat dieses Bild (verkleinerte Version) angehängt:
app3.jpg
Volle Bildgröße

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von JAck30lena am 11.09.2008 20:04.

11.09.2008 16:54 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
trib trib ist männlich
myCSharp.de-Mitglied

Dabei seit: 22.04.2008
Beiträge: 668
Entwicklungsumgebung: C#


trib ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi JAck30lena,

super Control was du da zusammengebaut hast!
Ich bin gerade dabei es für mich etwas anzupassen...

Was mir noch irgendwie fehlt, wäre verschiedene Tage untereinander anzuzeigen.
Momentan wird ja nur angezeigt, was in den 24Std des heutigen Tages liegt.

Ich denke, das dein Sinn in dem Programm darin liegt Überschneidungen eines Tages zu betrachten. Interessant wäre meiner Meinung nach auch ein Vergleich mehrere Tage.

Ansonsten habe ich bis jetzt keinerlei Fehler oder Bugs feststellen können!
Es läuft äußerst performant, auch mit etlichen Einträgen.

Dank dir,
TriB
15.09.2008 16:43 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
JAck30lena JAck30lena ist männlich
myCSharp.de-Team

avatar-2653.jpg


Dabei seit: 01.10.2006
Beiträge: 11.397
Entwicklungsumgebung: Visual Studio 05/08/10 Prof.

Themenstarter Thema begonnen von JAck30lena

JAck30lena ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo trib,

danke für dein feedback.

Zitat:
Was mir noch irgendwie fehlt, wäre verschiedene Tage untereinander anzuzeigen.
Momentan wird ja nur angezeigt, was in den 24Std des heutigen Tages liegt.

das stelle cih mir ein wenig komplex vor. da wäre ein usercontrol mit mehreren timecharts und ein wenig zusätzlichen code schneller zu implementieren.

Zitat:
Ansonsten habe ich bis jetzt keinerlei Fehler oder Bugs feststellen können!

freut mich das nur ich bis jetzt bugs gefunden habe ^^
ci hwürde dir aber empfehlen nicht das control selbst zu verändern, sondern wenn möglich nur zu erben und dann das geerbte anzupassen, da ich parallel zu dir an dem control arbeite und ein update meinerseits dann inkompatibel zu deiner veränderung wäre. (wie gesagt -> wenn möglich)

hierzu habe ich auch die wichtigsten methoden virtual gemacht.

momentan z.b. arbeite cih daran, das änderungen in der anzeigecollection sofort auf der anzeige selbst zu sehen sind und nicht erst ein manuelles refresh benötigen.
hierbei kommen auch ein paar neue events (item add usw.) zum control hinzu.

Zitat:
Es läuft äußerst performant, auch mit etlichen Einträgen.

das ist mir persönlich sehr wichtig. ich ahb da allerdings noch einen fehler. wenn du z.b. an die 1000 einträge hast, werden immer alle einträge durchsucht, um die anzuzeigenden einträge zu finden. das werde cih in den nächsten versionen ebenfalls umstellen (evtl eine sorted-binding-list oder ein sorted-obeservable-collection)
15.09.2008 16:58 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
JAck30lena JAck30lena ist männlich
myCSharp.de-Team

avatar-2653.jpg


Dabei seit: 01.10.2006
Beiträge: 11.397
Entwicklungsumgebung: Visual Studio 05/08/10 Prof.

Themenstarter Thema begonnen von JAck30lena

JAck30lena ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Zusammen,

wieder habe ich eine neue version gemacht und das wird vorerst die letzte sein.

ich habe hier ein paar bugs behebt und ein paar wesentliche umstellungen vorgenommen.

1. bei der zeitanzeige war ein rowindex-bug. dieser trat beim scrollen auf -> gefixt
2. bei der anzeige von zeitspannen, die über mehrere tage gehen gab es einen bug -> gefixt
3. das versprochene usercontrol ist fertig. (siehe screenshot)
4. ein paar neue events sind hinzugekommen (itam added usw...)
5. die liste der Timelabels (rows) wurde auf BindingList geändert, damit sich änderungen innerhalb der lsite ohne manuelles refres auch sofort auf der oberfläche zeigen.
6. das holen der anzeigeinformationen ist nun ein wenig perfomanter
7. designersupport ist nun auf einem akzeptablen niveau (star, ende und intervallzeit muss man leider noch immer im code selbst setzen, der rest geht über desiger genausogut)
8. das eventfiring wurde nun optimiert und auch in entsprechende methoden ausgelagert, die zudem auch noch virtual sind.


somit ist das control an sich von meiner seite aus fertig. wenn jemand noch einen wunsch hat, dann immer her damit. ggf. werde ich ihn umsetzen.

die datei habe ich weiter oben wieder geupdated (TimeChart_V4.zip)

viel spaß mit dem teil. mir hat es auf jeden fall spaß gemacht es zu schreiben.


ps: wen es interessiert, ich habe in etwa 15 stunden arbeit hereingesteckt. (die zeitangabe ist inklusive der sackgassen, in die ich geraten bin)

edit: bild vergessen^^

JAck30lena hat dieses Bild (verkleinerte Version) angehängt:
app4.jpg
Volle Bildgröße

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von JAck30lena am 16.09.2008 11:21.

16.09.2008 11:20 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Matrix-NTN Matrix-NTN ist männlich
myCSharp.de-Mitglied

Dabei seit: 11.03.2005
Beiträge: 267
Entwicklungsumgebung: VS2010
Herkunft: Sigmaringen


Matrix-NTN ist offline Füge Matrix-NTN Deiner Kontaktliste hinzu

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi,

also erstmals dickes Lob... für 15 Stunden finde ich das eine gelungene Komponente...

Ich hätte aber noch einen Verbesserungsvorschlag:
Wenn es möglich wäre, dass man in einer Zeile mehre Zeiten angeben kann und diese unterschiedlich betittlen kann.
Also so ala Terminkalender

Montag: 10-11 Tuwas 14-15 Was anderes
Dienstag: 9-10 Nochwasanderes usw...

Dazu wäre es auch noch toll, wenn in dem Zeitbalken (sofern er lang genug ist) ein teil des Textes visualisiert wird. So das bei Montag im ersten Zeitbalken "Tuwas" und im zweiten "Was anderes" steht.

Sowas wäre hier echt nicht schlecht.
Wäre echt super wenn du das einbauen würdest.

Ansonsten weiter so...

Grüße
Matrix
16.09.2008 11:36 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
JAck30lena JAck30lena ist männlich
myCSharp.de-Team

avatar-2653.jpg


Dabei seit: 01.10.2006
Beiträge: 11.397
Entwicklungsumgebung: Visual Studio 05/08/10 Prof.

Themenstarter Thema begonnen von JAck30lena

JAck30lena ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Matrix-NTN,

danke für dein feedback.

Zitat:
Wenn es möglich wäre, dass man in einer Zeile mehre Zeiten angeben kann

wenn du dir die erste zeile vom screenshot ansiehst, dann siehst du, das das bereits geht.

Zitat:
und diese unterschiedlich betittlen kann

das habe ich für meine zwecke nciht eingebaut. hierfür besteht aber die möglichkeit vom TimeChart zu erben, die methode "DrawChartInformation" zu überschreiben und nachdem man die basismethode aufgerufen hat, noch einen text darüber zu zeichnen. das alles lässt sich in wenigen zeilen erledigen. den größten teil kann man sich sogar direkt aus dem Timechart aus der oben genannten methode kopieren (also die berechnung, wo genau gezeichnet wird)

wenn man sich ncoh anschaut, wie die labels in "DrawLabels" mithilfe des textrenderers gezeichnet werde, dann hat man sogar mit dem zu kleinen platz keine probleme mehr.
16.09.2008 11:53 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
trib trib ist männlich
myCSharp.de-Mitglied

Dabei seit: 22.04.2008
Beiträge: 668
Entwicklungsumgebung: C#


trib ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Juhu!

Echt sehr gelungen dein "Upgrade".
Habe die dll gestern Abend ausgetauscht und sie funktionierte weiterhin perfekt.
Nur hatte ich mich gewundert wo der Kalender abgeblieben ist Augenzwinkern
Hat auch echt einen Moment gedauert zu verstehen wo er sich versteckt.

Gibt es da eigentlich eine sinnvolle Möglichkeit, beides in einem Projekt zu benutzen?
Also, das ich in meinem Programm sage: Mit oder ohne Kalender starten.

Dann müsste ich ja das TimeChartControl oder TimeChart laden, bzw. darauf verweisen.
2 gleiche Funktionen mit unterschiedlichem Control zu erstellen erscheint mir sehr stümperhaft...

Vielleicht hast du neben deinem wunderbaren Control noch einen kleinen Ansatz für mich smile

Gruß,
TriB
17.09.2008 09:50 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
JAck30lena JAck30lena ist männlich
myCSharp.de-Team

avatar-2653.jpg


Dabei seit: 01.10.2006
Beiträge: 11.397
Entwicklungsumgebung: Visual Studio 05/08/10 Prof.

Themenstarter Thema begonnen von JAck30lena

JAck30lena ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo trib,

Das TimeChartControl (also das mit dem kalender) ist nur ein usercontrol um eine möglichkeit zu demonstrieren.
Ich habe dort das scrolling mit der verticalScrollBar des frameworks implementiert, sowie den MonthCalendar hinzugefügt. ein paar wenige zeilen code hingeschreiben und die funktion als solches war vollständig.

Natürlich kann man es so verwenden (wenn man möchte) oder aber man kann in seinem projekt ein eigenes usercontrol erstellen und dort das einfache TimeChart verwenden und evtl ein paar codeschnipsel aus dem TimeChartControl klauen.

Ich hätte ihn so implementieren können, das der kalender ausblendbar ist, jedoch wäre dann der wunsch gekommen, das er oberhalb oder unterhalb sein soll, oder das er frei versetzbar sein soll... all das hat an sich nichts mit dem TimeChart als solches zu tun und eine implementierung in dieser richtung, um alle möglichen bedürfnisse abdecken zu können erachte ich nciht als sinnvoll.

wenn du den kalender optional haben möchtest, dann kannst du entweder vom TimechartControl erben und eine entsprechende funktionalität einbauen, oder aber einfach den code vom TimeChartControl kopieren und die anpassung direkt im code umsetzen.

die lizensbedingungen im übrigen erlauben dir alles mit dem code anzustellen, was du möchtest. nur solltest du im hinblick auf evtl zukünftige upgrades eher erben oder code kopieren anstatt direkt zu ändern.

Gruß Jack
17.09.2008 10:53 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
JAck30lena JAck30lena ist männlich
myCSharp.de-Team

avatar-2653.jpg


Dabei seit: 01.10.2006
Beiträge: 11.397
Entwicklungsumgebung: Visual Studio 05/08/10 Prof.

Themenstarter Thema begonnen von JAck30lena

JAck30lena ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ich habe das klassendesign neu erstellt und hier als bild hochgeladen. (erster beitrag).

es ist ein bischen groß aber man kann sich so recht schnell einen überblick über das control und dessen möglichkeiten verschaffen.
17.09.2008 13:21 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
trib trib ist männlich
myCSharp.de-Mitglied

Dabei seit: 22.04.2008
Beiträge: 668
Entwicklungsumgebung: C#


trib ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi JAck30lena,

ich bin nun doch auf einen Bug gestoßen.
Und zwar killt die Scrollbar den MousOver-Effekt.
Scrollt man etwas herunter, werden die nicht mehr sichtbaren Zeilen markiert und nicht die, auf denen man steht...

Leider ist die Maus nicht zu erkennen. Aber anhand des Tooltips kann man sehen, das ich eigentlich mit dem Cursor 3 Balken weiter unten bin.

trib hat dieses Bild (verkleinerte Version) angehängt:
TimeChart.jpg
Volle Bildgröße

18.09.2008 16:28 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
JAck30lena JAck30lena ist männlich
myCSharp.de-Team

avatar-2653.jpg


Dabei seit: 01.10.2006
Beiträge: 11.397
Entwicklungsumgebung: Visual Studio 05/08/10 Prof.

Themenstarter Thema begonnen von JAck30lena

JAck30lena ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo trib,


oha, danke für den hinweis. also noch ein indexbug.
als hotfix kannst du die methode ersetzen:

C#-Code:
        public int GetLabelIndexFromPoint(Point clientPoint)
        {

            int result = -1;
            if (clientPoint.Y < HeaderHeight
                || clientPoint.Y > this.Height
                || clientPoint.X > LabelWidth + IntervalSpace * m_IntervalCount)
            {
                return -1;
            }
            result = (clientPoint.Y - HeaderHeight)/
                     (CurrentRowHeight == 0 ? 1 : CurrentRowHeight) +
                     (m_FirstDisplayedTimechartRowIndex < 0 ? 0 : m_FirstDisplayedTimechartRowIndex);
            if (result >= m_TimechartLabels.Count)
            {
                return -1;
            }
            return result;
        }

den fix werde ich in der nächsten version des timecharts einbauen aber das wird noch eine weile dauern, da ich noch an einem datechart arbeite.
18.09.2008 16:38 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
JAck30lena JAck30lena ist männlich
myCSharp.de-Team

avatar-2653.jpg


Dabei seit: 01.10.2006
Beiträge: 11.397
Entwicklungsumgebung: Visual Studio 05/08/10 Prof.

Themenstarter Thema begonnen von JAck30lena

JAck30lena ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo zusammen,

wie bereits erwähnt, habe ich mcih an einem DateChart versucht, das nciht nur z.b. einen tag anzeigen kann, sondern tage bis jahrzehnte. je nach wunsch.
die besondere herausforderung in solch einem fall, war das zusammenspiel mit den intervallen. jetzt weiß ich warum timespan keine monate oder jahre hat (hab auch vorher nie darüber nachgedacht^^)

es gibt nun also 2 controls. ein TimeChart und ein DateChart. ersteres arbeitet im wesentlichen innerhalb eines tages und letzteres ist vollkommen unabhängig.

jedenfalls konnte ich trotz zeitmangel die probleme bewältigen und dennoch meinen urlaub genießen. dummerweise musste ich für das intervallproblem ein eigenes Intervallstruct schreiben und konnte daher keine .net typen hierfür verwenden.
das erlaubt aber skurile intervalle wie im beispiel
1 monat, 13 tage, 5 stunden, 2 minuten
(den beweis seht ihr im bild)
wie man sieht, sind intervalltechnisch keine grenzen gesetzt.

davon mal abgesehen, ist die benutzung dieses controls analog zum TimeChart

beispiel:

C#-Code:
tChart.Dock = DockStyle.Fill;
            tChart.BackgroundCornerColor = Color.Lavender;
            tChart.BackgroundCenterColor = Color.WhiteSmoke;

            // die anzuzeigende zeitspanne berechnen
            DateChartInterval dcInterval = new DateChartInterval(1,13,5,2);
            DateTime startTime = DateTime.Now.Date;
            for (int i = 0; i < 10; i++ )
            {
                // 10 intervalle in die vergangenheit
                startTime = dcInterval.SubtractFrom(startTime);
            }
            DateTime endTime = DateTime.Now.Date;
            for (int i = 0; i < 10; i++)
            {
                // 10 intervalle in die zukunft
                endTime = dcInterval.AddTo(endTime);
            }
            tChart.SetTimeSettings(startTime,endTime,dcInterval);

            TimeChartLabel tcl = new TimeChartLabel (Color.Black, Color.White,
                                                    "ein langer text in einem viel zu kurzem bereich", null);
            tcl.StartEndTimeList.Add (new StartEndTimePair (DateTime.Today.Subtract(new TimeSpan(45, 0, 0, 0, 0)),
                                                          DateTime.Today.AddMonths (3).AddDays(12)));

            tChart.TimechartLabels.Add(tcl);
.
.
.

bild:


(edit: die controls inklusive dem demoprojekt habe ich weiter oben bereits hochgeladen. den fix für den indexbug des timecharts habe ich auch bereits eingefügt)

JAck30lena hat dieses Bild (verkleinerte Version) angehängt:
app5.jpg
Volle Bildgröße

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von JAck30lena am 07.10.2008 17:15.

07.10.2008 14:05 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Private Paula Private Paula ist männlich
myCSharp.de-Mitglied

Dabei seit: 20.12.2006
Beiträge: 31
Entwicklungsumgebung: VS 2008 Standard
Herkunft: Rheinland Pfalz


Private Paula ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo JAck30lena

wirklich geil, ist genau das was ich suche. Respekt! Allerdings könnte es sein dass da noch ein kleines Buglein drin ist. Ich habe Vista Ultimate 64 und da flackert der Tooltip ständig, auf meinem XP System funktioniert es einwandfrei. Das aber nur mal so zur Info. Auf jeden Fall vielen Dank fürs posten.

Gruß Paula

PS: Hast Du eigentlich vor noch so "nice to have" Teile wie Drag and Drop einzubauen?

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Private Paula am 07.10.2008 17:59.

07.10.2008 17:57 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
JAck30lena JAck30lena ist männlich
myCSharp.de-Team

avatar-2653.jpg


Dabei seit: 01.10.2006
Beiträge: 11.397
Entwicklungsumgebung: Visual Studio 05/08/10 Prof.

Themenstarter Thema begonnen von JAck30lena

JAck30lena ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Private Paula,

danke für dein feedback.

Zitat:
Allerdings könnte es sein dass da noch ein kleines Buglein drin ist. Ich habe Vista Ultimate 64 und da flackert der Tooltip ständig, auf meinem XP System funktioniert es einwandfrei.

leider habe ich nur xp hier, daher kann ich das nciht testen oder reproduzieren.

Zitat:
Hast Du eigentlich vor noch so "nice to have" Teile wie Drag and Drop einzubauen?

da ich von control erbe, ist drag&drop schon integriert. es sei denn du meinst, das der user die balken hin und her-draggen kann, dann habe ich das nciht vor, da das eigendlich keine standardfunktionalität ist und das eigendlich auch kein mir bekanntes control standardmässig zulässt, rows verschieben zu können. man kann das aber wie bei jedem anderen control einfach implementieren, indem man isch an die entsprechenden events hängt.
07.10.2008 18:05 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Matrix-NTN Matrix-NTN ist männlich
myCSharp.de-Mitglied

Dabei seit: 11.03.2005
Beiträge: 267
Entwicklungsumgebung: VS2010
Herkunft: Sigmaringen


Matrix-NTN ist offline Füge Matrix-NTN Deiner Kontaktliste hinzu

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi,

wenn ich deinen ControllTester ausführe, bekomme ich folgende Exception:
Message: intervalmodulo of Start-End-Timespan must retrive a zero. check start, endtime and interval
StackTrace:bei ProcessWatcher.Controls.DateChart.SetTimeSettings(DateTime newStartDisplayTime, DateTime newEndDisplayTime, DateChartInterval newInterval, Boolean check) in C:\timechart\Controls\DateChart.cs:Zeile 1429.
TargetSite:Void SetTimeSettings(System.DateTime, System.DateTime, Controls.DateChartInterval, Boolean)

Ich habe am Projekt keine Modifikationen vorgenommen...
Wenn ich dann diese Funktion in einen Try-Catch block setze und im Catch block die Exception ignoriere, kommt die Form hoch und es funktioniert meines erachtens alles...

Grüße
Matrix

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Matrix-NTN am 08.10.2008 06:33.

08.10.2008 06:32 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Asmodiel Asmodiel ist männlich
myCSharp.de-Mitglied

avatar-2619.jpg


Dabei seit: 29.11.2007
Beiträge: 19
Herkunft: Schweiz


Asmodiel ist offline MSN-Passport-Profil von Asmodiel anzeigen

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Sehr schöne Arbeit.
Aber... Zum rumpumpelblitz und Donnerklapps, habe ich eine Wut im Bauch.
Ich könnt mich in Grund und Boden reinärgern!
Genau während du das hier geschrieben hast, habe ich meine
eigene TimeChart für c++/QT geschrieben.
Hätte ich das gewusst, wär's schneller gegangen. -.-

Naja, shit happens.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Asmodiel am 08.10.2008 08:50.

08.10.2008 08:48 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
JAck30lena JAck30lena ist männlich
myCSharp.de-Team

avatar-2653.jpg


Dabei seit: 01.10.2006
Beiträge: 11.397
Entwicklungsumgebung: Visual Studio 05/08/10 Prof.

Themenstarter Thema begonnen von JAck30lena

JAck30lena ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

@Matrix-NTN
danke für den hinweis. mir ist zwar schleierhaft, wie sich dieser fehler einschleichen konnte, zumal ich das projekt vor dem zippen getestet habe aber ich habe den fehler nun behoben. im datechart hab ich bei einer validierung innerhalb der "if" das ausrufezeichen vergessen^^ so hat er nun bei validen eingaben exceptions geschmissen und bei ungültigen war alles für ihn ok :-)

wie dem auch sei. danke für den hinweis -> gefixt und wie gehabt oben hochgeladen.


@Asmodiel
hehe. naja sowas kann eben passieren^^
08.10.2008 09:31 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
tomtom62 tomtom62 ist männlich
myCSharp.de-Mitglied

Dabei seit: 18.06.2006
Beiträge: 219
Entwicklungsumgebung: VS 05 St.,VS 2008,LN 5-6


tomtom62 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

super, dass Du das DateChart entwickelt hast. Ist in etwa das, was ich brauchen kann. Ich hatte kurz Gelegenheit es etwas zu testen, will es mir aber noch genauer ansehen. Gestatte mir ein paar Fragen und Anmerkungen:

1. IsValidInterval scheint "gewöhnungsbedürftig" zu sein -). Erst als ich die Funktion "ausgeklammert" hatte, konnte ich eine für mich passende Darstellung( Plus/minus ein Jahr, Intervall 1 Monat) einstellen.

2. Bei TimeChartLabel wäre es schön, wenn man die Textfarbe unabhängig von der Barfarbe setzen könnte.

3. Eventuell wäre es sinnvoll, bei TimeChartLabel ein Objekt übergeben zu können,dessen Inhalt (z.B. ein Datensatz) beim ToolTipString verwendet werden könnte.

Vielen Dank für die Arbeit, die Du bisher schon investiert hast.

Gruß

Thomas
08.10.2008 19:14 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
JAck30lena JAck30lena ist männlich
myCSharp.de-Team

avatar-2653.jpg


Dabei seit: 01.10.2006
Beiträge: 11.397
Entwicklungsumgebung: Visual Studio 05/08/10 Prof.

Themenstarter Thema begonnen von JAck30lena

JAck30lena ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

hallo tomtom62,

auch dir danke für dein feedback.

zu 1:
ja ich musste zwecks sicherstellung der präzision der anzeige, diese emthode wählen, damit immer sichergestellt ist, das start und enddatum eine gerade anzahl an intervallen hat.

zu 2:
da ich es so einfach wie möglich halten wollte und nicht eine erschlagende featurefülle implementieren wollte, habe ich solche dinge bewusst weggelassen, jedoch habe ich die entsprechenden methoden virtual gemacht, weshalb dieses feature recht leicht umzusetzen wäre.

zu 3:
da die methode "GetToolTipString" virtual ist, kann man einfach nur vom timechartlabel erben und die entsprechende methode überschreiben.
08.10.2008 20:57 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Rainbird Rainbird ist männlich
myCSharp.de-Poweruser/ Experte

avatar-2834.jpg


Dabei seit: 28.05.2005
Beiträge: 3.722
Entwicklungsumgebung: Visual Studio 2012
Herkunft: Mauer


Rainbird ist offline

Super Steuerelement

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo JAck30lena,

erstklassige Arbeit! Wirklich ein feines Steuerelement.

Gruß

Rainbird
12.10.2008 00:53 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Zwischen diesen beiden Beiträgen liegen mehr als 2 Jahre.
tom-essen tom-essen ist männlich
myCSharp.de-Poweruser/ Experte

avatar-2140.png


Dabei seit: 15.05.2005
Beiträge: 1.815
Entwicklungsumgebung: VS.NET 2013
Herkunft: NRW


tom-essen ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo!

Hab' nun die Controls auch mal ausprobiert. Unter Windows 7 flackern bei mir auch die ToolTips, da OnMouseMove durchgehend aufgerufen wird (auch, wenn die Maus nicht bewegt wird). Wenn man Die Maus schnell rausbewegt, bleibt das (der?) Tooltip oft stehen (und flackert dann logischerweise nicht mehr).

EDIT: Wenn man im ToolTip OwnerDraw auf true setzt, dann flackert es nicht mehr (zumindest unter Win7, andere habe ich noch nicht getestet). Muss man dann natürlich bei beiden Controls machen.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von tom-essen am 06.04.2011 09:13.

06.04.2011 09:05 Beiträge des Benutzers | zu Buddylist hinzufügen
tom-essen tom-essen ist männlich
myCSharp.de-Poweruser/ Experte

avatar-2140.png


Dabei seit: 15.05.2005
Beiträge: 1.815
Entwicklungsumgebung: VS.NET 2013
Herkunft: NRW


tom-essen ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo!

Evtl. noch ein Bug: Wenn man nach oben oder rechts mit der Maus raus geht, wird das/der ToolTip geschlossen, wenn man nach links rausgeht, dann nicht. Wenn man nach unten rausgeht, und die Scrollbar aktiv ist, weil die Anzeige nicht ins Fenster passt, bleibt's ToolTip ebenfalls sichtbar.
06.04.2011 09:17 Beiträge des Benutzers | zu Buddylist hinzufügen
Zwischen diesen beiden Beiträgen liegen mehr als 3 Monate.
Tobinho jr Tobinho jr ist männlich
myCSharp.de-Mitglied

Dabei seit: 07.02.2008
Beiträge: 29


Tobinho jr ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

erstmal ein FETTES Lob für dieses Hammer Programm - echt klasse !!!

Ich hätte nur noch eine Frage:

Ist es möglich eine horizontale ScrollBar zu erstellen, bei der die Texte fixiert werden?

Danke
Schönen Tag
15.07.2011 11:42 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
JAck30lena JAck30lena ist männlich
myCSharp.de-Team

avatar-2653.jpg


Dabei seit: 01.10.2006
Beiträge: 11.397
Entwicklungsumgebung: Visual Studio 05/08/10 Prof.

Themenstarter Thema begonnen von JAck30lena

JAck30lena ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Tobinho jr,

erstmal Danke, das es dir gefällt. Es freut mich sehr, wenn sich Leute für meine Arbeit interessieren.

Was die Scrollbar angeht, so tue dir keinen Zwang an. Der Sourcecode liegt ja bei.
Ich habe aktuell und auch in näherer Zukunft keine Zeit dieses Control noch zu erweitern. außerdem würde ich es heutzutage eher mit WPF machen :-)

Gruß
Jack
15.07.2011 11:51 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 11 Jahre.
Der letzte Beitrag ist älter als 8 Jahre.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 05.06.2020 04:52