Laden...

TimeChart

Erstellt von gelöschtem Konto vor 15 Jahren Letzter Beitrag vor 12 Jahren 34.219 Views
Gelöschter Account
vor 15 Jahren
TimeChart

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.

  1. 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.

  1. 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

Gelöschter Account
vor 15 Jahren

verwendung und screenshot:

innerhalb eines form-constructors:


            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:

Gelöschter Account
vor 15 Jahren

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

Gelöschter Account
vor 15 Jahren

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) ^^

N
203 Beiträge seit 2008
vor 15 Jahren

Würdest nochmal den aktuellen Code posten? Danke dir 😉

Signatur.Text = "Greetz, Neals";

Gelöschter Account
vor 15 Jahren

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)

3.825 Beiträge seit 2006
vor 15 Jahren

Hallo JackLena,

das sieht Klasse aus !

Kann ich vielleicht gebrauchen 😉

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

Gelöschter Account
vor 15 Jahren

Hallo BerndFfm

danke für dein positives feedback.

gruß Jack.

C
489 Beiträge seit 2007
vor 15 Jahren

Hallo

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

chrische

Gelöschter Account
vor 15 Jahren

noch nicht ^^

da das nun mehrere gefragt haben, werde ich mir hierzu was überlegen.

C
489 Beiträge seit 2007
vor 15 Jahren

Hallo

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

chrische

Gelöschter Account
vor 15 Jahren

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:

T
708 Beiträge seit 2008
vor 15 Jahren

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

Gelöschter Account
vor 15 Jahren

Hallo trib,

danke für dein feedback.

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.

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.

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)

Gelöschter Account
vor 15 Jahren

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^^

M
267 Beiträge seit 2005
vor 15 Jahren

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

No Risk, No Fun

Gelöschter Account
vor 15 Jahren

Hallo Matrix-NTN,

danke für dein feedback.

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.

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.

T
708 Beiträge seit 2008
vor 15 Jahren

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 😉
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 🙂

Gruß,
TriB

Gelöschter Account
vor 15 Jahren

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

Gelöschter Account
vor 15 Jahren

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.

T
708 Beiträge seit 2008
vor 15 Jahren

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.

Gelöschter Account
vor 15 Jahren

Hallo trib,

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

        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.

Gelöschter Account
vor 15 Jahren

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:

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)

P
31 Beiträge seit 2006
vor 15 Jahren

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 funzt 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?

Gelöschter Account
vor 15 Jahren

Hallo Private Paula,

danke für dein feedback.

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 funzt es einwandfrei.

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

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.

M
267 Beiträge seit 2005
vor 15 Jahren

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

No Risk, No Fun

19 Beiträge seit 2007
vor 15 Jahren

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.

**:::

Gelöschter Account
vor 15 Jahren

@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^^

T
219 Beiträge seit 2006
vor 15 Jahren

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

Gelöschter Account
vor 15 Jahren

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.

3.728 Beiträge seit 2005
vor 15 Jahren
Super Steuerelement

Hallo JAck30lena,

erstklassige Arbeit! Wirklich ein feines Steuerelement.

Gruß

Rainbird

1.815 Beiträge seit 2005
vor 12 Jahren

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.

Nobody is perfect. I'm sad, i'm not nobody 🙁

1.815 Beiträge seit 2005
vor 12 Jahren

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.

Nobody is perfect. I'm sad, i'm not nobody 🙁

T
29 Beiträge seit 2008
vor 12 Jahren

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

Gelöschter Account
vor 12 Jahren

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