Hilfe mit Slidern und Canvas
Übersicht

danielosBetreff: Hilfe mit Slidern und Canvas |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo!
ich arbeite gerade an einer MultiColumn Listbox (mit Sortieren, Editieren, usw.. ![]() ![]() (werd den Sourcecode auch hier veröffentlichen, wenn die mal fertig ist ^^) Das ganze wird auf einen Canvas gezeichnet. Nun hab ich zwei Probleme mit den Slidern: 1) Ich möchte, dass sich die SliderRange anpasst an die (theoretische) Länge der Listbox. Hab das bisher aber nicht richtig hingekriegt, der Slider war immer ganz unten obwohl noch Einträge nicht angezeigt wurden. 2) (Wenn das überhaupt geht) Es wäre praktisch, dass sich, wenn der Slider verschoben würde, alle Einträge nur um die Höhe eines einzelnen Eintrags (z.B. 20 Pixel) verschieben würden. Ich probier da jetzt schon länger rum, aber komm noch auf keinen grünen Zweig ![]() Für Hilfe wär ich sehr dankbar! Grüße, Danielos |
||
OldSkool90 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
keine ahnung wie ich drauf komme und hatte keine zeit es selber zu testen, aber geht das mit der sliderrange vielleicht mit: (AnzahlDerEinträge*HöheEinesEintragsInPixel)/HöheDerScrolleisteInPixel??
HöheDerScrollleiste auf der der Slider sich auch bewegen kan also die Freifläche...nur mal so eine Idee xD EDIT: UPPS!! kann sein dass ich dich falsch verstanden habe^^sry...es sei denn du meinst mit slider dieses gedöhns auf der scrollleiste?! |
||
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
zu 1: Ich nehme mal an du übergibst als Range die Höhe aller Einträge minus der Höhe des Canvas. Übergib lieber
Anzahl Listeneinträge - Canvashöhe / Listeneintraghöhe, und gib dem Canvas eben -(SliderRange*Eintragshöhe) als Y Koordinate. Wenn der Wert zu hoch wird, wird die Knopf-Länge nicht mehr automatisch angepasst, weil sie im Verhältnis zur Höhe der gesamten Slider eh schon zu klein ist. So ist zumindest meine Annahme. zu 2: Indem du der SliderRange die Listeneinträge - (Canvashöhe / Listeneintraghöhe) übergibst, statt der kompletten Höhe aller Einträge. Dem Canvas gibst du dann als Y Wert -(SliderValue*Eintraghöhe). So hab ichs zumindest bei meinem Tile-Canvas gemacht, den ich bei einem Editor mal brauchte. |
||
danielos |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke für die Antworten!
@OldSkool90: Mit Slider meinte ich die Scrollleiste rechts ![]() @d-bug Sorry aber so ganz versteh ichs noch nicht, vor allem weil ich für die SliderRange doch ZWEI werte übergeben muss (?) Bisher hatte ich: SetSliderRange Slider , HöhedesCanvas , (Anzahl der Einträge * Eintraghöhe + Höhe der Höhe der Columns) wobei das mit den Columns noch dazu kommt, weil die ja nicht verschoben werden (aber vllt ist das auch Quatsch ![]() Ich weiß vor allem nie, obs jetzt an der SliderRange liegt, oder daran, dass ich bei SetSliderValue was falsch mach ![]() |
||
OldSkool90 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hmm dann hab ich dich also richtig verstanden. naja die höhe der columns dürfte dabei doch keine rolle spielen da sie innerhalb des fensters feste objekte sind oder nicht?
also mit (anzahldereinträge * einzeleintraghöhe)/höhederfreiflächederscrollleiste müsstet du doch die größe des sliders einstellen können. wie man jetz scrollintensität und relative slidergröße in einklang bringt...tja da bin ich überfragt ![]() |
||
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
mal langsamer mit Pseudocode und ohne Rücksichtnahme auf die Header-Zeile:
BlitzMax: [AUSKLAPPEN] SetSliderRange (Slider, 0, AnzahlDerEinträge - (GadgetHeight(Canvas)/HöheEinesEintrags))
Wenn du jetzt den Canvas zeichnest, ich nehme mal an, du machst das beim triggern von Events: BlitzMax: [AUSKLAPPEN] Select EventID() Das Arbeiten mit der Anzahl der Einträge statt der Höhe aller Einträge sorgt zumindest schon mal für deinen gewünschten Höhen-Sprung der Einträge statt weich im 1 Pixeltakt zu scrollen. Wenn du einen neuen Eintrag in die Liste packen möchstest musst du dann natürlich die SliderRange wieder anpassen. Natürlich auch, wenn du einen Eintrag entfernst. |
||
OldSkool90 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ehm ja ich dachte es reicht wenn man alles rein theoretisch betrachtet und er coded sich das alles selber ![]() |
||
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
Deswegen auch nur pseudocode! "Rein theoretisch" hat ers ja nicht wirklich verstanden. :> | ||
OldSkool90 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
xD okay jetz musste ich tatsächlich schmunzeln^^ naja ich überlass den echten code den erfahrenen proggern^^ | ||
danielos |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also ich hab leider immer noch Probleme damit... (tut mir wirklich Leid, mir fehlt einfach die Erfahrung mit Slidern ![]() Nur um das kurz klarzustellen: Der Canvas an sich wird nicht verschoben oder resized, sondern nur sämtliche Einträge der Liste. Naja ich will nicht weiter rumnerven, vielen Dank für die Hilfe trotzdem! Werd mich die nächsten Tage eh weiter damit beschäftigen, hab bisher noch alles hingekriegt irgendwann ![]() (Ist schon erstaunlich, wie man die Uni-Klausur am nächsten Tag wegen Slidern so völlig verdrängen kann ![]() Grüße, Danielos |
||
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du sollst auch nicht das Canvas verschieben sondern die Zeichen-Position der Einträge | ||
danielosBetreff: Soooo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
So habs jetzt selbst geschafft, lag glaub ich daran, dass meine Nummerierung der Einträge bei Null begann, nicht bei Eins ![]() Danke für die Hilfen! ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group