amiga-news DEUTSCHE VERSION
.
Links| Forums| Comments| Report news
.
Chat| Polls| Newsticker| Archive
.

amiga-news.de Forum > Programmierung > listview [ - Search - New posts - Register - Login - ]

-1- [ - Post reply - ]

2009-11-29, 13:57 h

AGSzabo
Posts: 1663
User
das hier soll eine ideen-sammlung sein wie man schrittweise ein listview programmieren könnte das mit clipblit() o.ä. scrollt und nur das was wirklich neu ist neu zeichnet.

die anweisungen wie weit gescrollt werden soll kommen von einem slider. da müsste man evt auch noch was aus- oder umrechnen.

--
Sam mini os4.1 -- e-uae 39bb2 -- A4000D 3.0 - 2mbchip/8mbfast - Ariadne_II - ide DVD und HD -- A500 3.1 (mkick) adide 50mb -- Duron 1200mhz Ubuntu Linux

[ Dieser Beitrag wurde von AGSzabo am 29.11.2009 um 14:02 Uhr geändert. ]

[ - Answer - Quote - Direct link - ]

2009-11-29, 14:25 h

akl
Posts: 265
User
@AGSzabo:

Seit es GadTools gab - und weitergehende Ansätze - war ich ehrlich gesagt froh, mich um derlei Details nicht mehr kümmern zu müssen. Das muss vor 1993 gewesen sein. Wozu also 16 Jahre später damit wieder anfangen.

Warum eigentlich ClipBlit? Sollen die einzelnen ListView-Zeilen nicht klickbar sein?

[ - Answer - Quote - Direct link - ]

2009-11-29, 14:34 h

AGSzabo
Posts: 1663
User
@akl:

> Wozu also 16 Jahre später damit wieder anfangen.
gui toolkit vom grund auf coden. ist "hello world" für amiganer.

> Warum eigentlich ClipBlit?
um den inhalt rauf oder runter zu bewegen.

> sollen die einzelnen ListView-Zeilen nicht klickbar sein?

doch, ich verstehe deine frage nicht.
--
Sam mini os4.1 -- e-uae 39bb2 -- A4000D 3.0 - 2mbchip/8mbfast - Ariadne_II - ide DVD und HD -- A500 3.1 (mkick) adide 50mb -- Duron 1200mhz Ubuntu Linux

[ - Answer - Quote - Direct link - ]

2009-11-29, 20:13 h

thomas
Posts: 7718
User
@AGSzabo:
Zitat:
das hier soll eine ideen-sammlung sein wie man schrittweise ein listview programmieren könnte

Und warum kommst du damit hier her ?

Das Entwickeln eines Algorithmus zur Lösung einer Aufgabe ist der wesentliche Teil, der das Programmieren ausmacht. Das Programm hinterher in einer beliebigen Programmiersprache zu formulieren und einzutippen, das kann jeder Depp mit zwei Händen und einer Tastatur.

Vor diesem Hintergrund frage ich mich, was du überhaupt selbst machst. Immer, wenn es etwas neues zu entwickeln gibt, kommst du hier her und läßt andere deine Arbeit machen. Du übernimmst dann nur noch die Aufgabe des ... mit den Händen und der Tastatur.

Gruß Thomas
--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Answer - Quote - Direct link - ]

2009-11-29, 20:28 h

AGSzabo
Posts: 1663
User
@thomas:

> Und warum kommst du damit hier her ?

weil ich allein nicht weiter komme und das forum hier eine goldgrube an kompetenz ist.

wer nicht mitmachen will soll es halt lassen. es sind schon zig leute in den credits und das macht einen guten eindruck von interesse!

Andreas
--
Sam mini os4.1 -- e-uae 39bb2 -- A4000D 3.0 - 2mbchip/8mbfast - Ariadne_II - ide DVD und HD -- A500 3.1 (mkick) adide 50mb -- Duron 1200mhz Ubuntu Linux

[ - Answer - Quote - Direct link - ]

2009-11-29, 20:46 h

thomas
Posts: 7718
User
@AGSzabo:

Zitat:
weil ich allein nicht weiter komme

Nun, deine Frage liest sich so, als hättest du noch gar nichts. Das würde ich nicht als "nicht weiter kommen" bezeichnen.

Wenn du schreiben würdest, wie weit du allein gekommen bist, könnte man dir einen Tipp geben, wie du weiter kommst.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Answer - Quote - Direct link - ]

2009-11-29, 21:01 h

AGSzabo
Posts: 1663
User
@thomas:

der stand der dinge ist dass die reine darstellung der liste schon komplett funktioniert, wobei man dazu angeben kann ab welcher sichtbaren zeile wievile zeilen gedrawt werden sollen, wobei man dazu einen vert-distanz-wert angeben kann der sagt um wieviele pixel das ganze verschoben seinn soll - das ist für soft scrolling gedacht.

was fehlt ist der teil um aus dem slider die soft-position der liste zu berechnen und daraus um wieviel der inhalt verschoben werden muss (vert-distanz-wert) und ab welcher bis zu welcher zeile neu gezeichnet werden muss.
--
Sam mini os4.1 -- e-uae 39bb2 -- A4000D 3.0 - 2mbchip/8mbfast - Ariadne_II - ide DVD und HD -- A500 3.1 (mkick) adide 50mb -- Duron 1200mhz Ubuntu Linux

[ - Answer - Quote - Direct link - ]

2009-11-29, 21:42 h

inq
Posts: 445
User
Zitat:
Original von AGSzabo:
@thomas:
...
was fehlt ist der teil um aus dem slider die soft-position der liste zu berechnen und daraus um wieviel der inhalt verschoben werden muss (vert-distanz-wert) und ab welcher bis zu welcher zeile neu gezeichnet werden muss.


tja, und das wäre dann in etwa die gleiche routine zur berechnung. da muss ich mich leider dem thomas anschließen (hat nicht viel zu bedeuten...): suchst du eigentlich nur bestätigung oder ist die credits-liste nötig für die betatests? :P :P
gruß
inq

[ - Answer - Quote - Direct link - ]

2009-11-29, 22:10 h

Holger
Posts: 8116
User
Zitat:
Original von AGSzabo:
das hier soll eine ideen-sammlung sein wie man schrittweise ein listview programmieren könnte das mit clipblit() o.ä. scrollt und nur das was wirklich neu ist neu zeichnet.

Gar nicht.
Statt clipblit benutzt man natürlich ScrollRaster, danach überprüft man auf (rp->Layer->Flags & LAYERREFRESH) und zeichnet bei Bedarf die Liste zwischen den Aufrufen von BeginRefresh und EndRefresh neu. Wenn man das richtig macht, kümmert sich das OS darum, unnötige Zeichenbefehle zu ignorieren.
Zitat:
die anweisungen wie weit gescrollt werden soll kommen von einem slider. da müsste man evt auch noch was aus- oder umrechnen.
Das ist Dein Part. Ist ja auch Dein Slider, den Du so gestaltet hast, dass man die Werte noch mal umrechnen muss...

[ - Answer - Quote - Direct link - ]

2009-11-30, 06:53 h

AGSzabo
Posts: 1663
User
@inq:

> suchst du eigentlich nur bestätigung oder ist die credits-liste nötig für die betatests?

ich suche natürlich auch bestätigung aber es ist ja umgekehrt auch eine bestätigung für die leute die in meiner liste stehen. ich weis nicht ob du dich daran erinnerst wie das mit den credits in den ganzen demos und intros war... in denen war den credtis ein eigener part mit eigener musik gewidmet und so. also sehr wichtig!


> danach überprüft man auf (rp->Layer->Flags & LAYERREFRESH) und zeichnet bei Bedarf die Liste zwischen den Aufrufen von BeginRefresh und EndRefresh neu

das geht aber nur bei simplerefresh. ich benutze aber smartrefresh.


--
Sam mini os4.1 -- e-uae 39bb2 -- A4000D 3.0 - 2mbchip/8mbfast - Ariadne_II - ide DVD und HD -- A500 3.1 (mkick) adide 50mb -- Duron 1200mhz Ubuntu Linux

[ Dieser Beitrag wurde von AGSzabo am 30.11.2009 um 07:02 Uhr geändert. ]

[ - Answer - Quote - Direct link - ]

2009-11-30, 11:57 h

Holger
Posts: 8116
User
Zitat:
Original von AGSzabo:
das geht aber nur bei simplerefresh. ich benutze aber smartrefresh.

Selber schuld, würde ich sagen. Sollte aber kein Problem sein, den Bereich selbst in die Damage-Liste einzutragen, wenns denn unbedingt smartrefresh sein muss.

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Answer - Quote - Direct link - ]

2009-11-30, 15:35 h

AGSzabo
Posts: 1663
User
@Holger:

wie dem auch sei, ich habe schon die selbstmach-methode umgesetzt dass nur das neue neu gezeichnet wird, es wird auch geclippt falls nötig.

aber die idee mit dem scrollraster ist gut, das werde ich so machen!

es fehlt blos noch die kommunikation mit dem slider, wie ich da die scrolldistanz berechne und die position und menge der zeilen die neu gezeichnet werden müssen, bzw auch ab welchem listeneintrag das gemacht werden soll.

--
Sam mini os4.1 -- e-uae 39bb2 -- A4000D 3.0 - 2mbchip/8mbfast - Ariadne_II - ide DVD und HD -- A500 3.1 (mkick) adide 50mb -- Duron 1200mhz Ubuntu Linux

[ Dieser Beitrag wurde von AGSzabo am 30.11.2009 um 15:49 Uhr geändert. ]

[ - Answer - Quote - Direct link - ]

2009-12-02, 12:43 h

AGSzabo
Posts: 1663
User
ok, ich habs bis zu dem punkt gebaut an dem ich nimmer weiter weiss. folgende funktion errechnet aus der proportionalen position des sliders (0-$fff) die nummer des listeneintrags (0 bis total_enträge minus 1) der in der liste oben erscheinen soll (abgelegt in d0).

davon wird der rest durch die höhe des fonts geteilt und davon der rest als scroll offset von der pixel oberkanbte des listview-breichs verwendet.

was ist falsch? es scrollt schon bisserl, springt aber zwischendurch immer wild herum.

ich ahne schon was, nämlich fehlt da irgendwi ein pixelwert?

code:
calc_vdist	moveq	#0,d0
		move.w	oxNL_items(a3),d0		; total list entrys
		sub.w	oxNL_bodylines(a3),d0		; visible list entrys
		mulu.w	oxNL_softpos(a3),d0		; proportional offset from top
		move.w	#XUIPROP_SOFTMAX,d1		; total proportional value ($fff)
 
		divu.w	d1,d0

		move.l	d0,d1
		swap	d1				; hole rest
		ext.l	d1

		move.w	rp_TxHeight(a2),d2		; rest durch fonthöhe
		divu	d2,d1				; teilen

		swap	d1				; hole rest vom geteilten rest
		neg.w	d1

		move.w	d1,oxNL_vdist(a3)		; setze scroll offset,
							; muss sein zwischen 0 und
							; fonthöhe

--
Sam mini os4.1 -- e-uae 39bb2 -- A4000D 3.0 - 2mbchip/8mbfast - Ariadne_II - ide DVD und HD -- A500 3.1 (mkick) adide 50mb -- Duron 1200mhz Ubuntu Linux

[ Dieser Beitrag wurde von AGSzabo am 02.12.2009 um 13:26 Uhr geändert. ]

[ - Answer - Quote - Direct link - ]

2009-12-04, 11:13 h

Holger
Posts: 8116
User
Zitat:
Original von AGSzabo:
ok, ich habs bis zu dem punkt gebaut an dem ich nimmer weiter weiss. folgende funktion errechnet aus der proportionalen position des sliders (0-$fff) die nummer des listeneintrags (0 bis total_enträge minus 1) der in der liste oben erscheinen soll (abgelegt in d0).

Ich hab Dir ja schon in dem anderen Thread gesagt, dass es nicht sinnvoll ist, eine Schnittstelle für proportionale Daten zu entwerfen, die einen willkürlich gewählten Bereich wie 0-fff verlangt.
Jetzt bist Du, wie vorhergesagt, an dem Punkt angelangt, bei dem Du überflüssige und fehleranfällige Konvertierungen durchführen musst.
Außerdem empfand ich schon den 16Bit-Wertebereich der originalen Amiga-PropGadgets als Einschränkung. Aber Dein 12 Bit Bereich schießt natürlich den Vogel ab...
Zitat:
davon wird der rest durch die höhe des fonts geteilt und davon der rest als scroll offset von der pixel oberkanbte des listview-breichs verwendet.
Du errechnest aus einer Position, also einem absoluten Wert, einen Scroll-Offset, also eine Differenz? Das kann gar nicht funktionieren.

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Answer - Quote - Direct link - ]

2009-12-06, 18:30 h

AGSzabo
Posts: 1663
User
Ok, das problem wurde inzwischen gelöst. das maximum von fff ist eine konstante. nichts leichter als das zu ändern.
--
Sam mini os4.1 -- e-uae 39bb2 -- A4000D 3.0 - 2mbchip/8mbfast - Ariadne_II - ide DVD und HD -- A500 3.1 (mkick) adide 50mb -- Duron 1200mhz Ubuntu Linux

[ - Answer - Quote - Direct link - ]


-1- [ - Post reply - ]


amiga-news.de Forum > Programmierung > listview [ - Search - New posts - Register - Login - ]


.
Masthead | Privacy policy | Netiquette | Advertising | Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved.
.