Probleme mit Scrollbalken
Übersicht

![]() |
IguanBetreff: Probleme mit Scrollbalken |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Zusammen!
Ich möchte gerne einen Text-Editor sprich eine ganz simple IDE programmieren.. nun scheiterts schon beim Scrollbalken... ich probiere jetzt schon seit Tagen verschiedene Lösungen, aber ich kriege es irgendwie nicht hin, dass sich die Länge des Griffes vom Scrollbalken an der Text-File Länge anpasst. Dabei soll bei extrem grossen Files eine minimale Länge nicht unterschritten werden. wenn der Scrollbalken am oberen Anschlag ist, soll die erste Zeile lesbar sein, und wenn er ganz unten ist, soll die unterste Zeile lesbar sein... klingt ganz einfach, aber ich kriegs irgendwie nicht hin... vielleicht könnt ihr mir etwas nachhilfe geben? oder gibt es vielleicht schon quellcodes, die genau das machen? (die suche nach Text-Editor&BlitzBasic und Eingabe-Routine hat leider nichts sinvolles herausgespuckt) Hier mein code: Code: [AUSKLAPPEN] Pfad$ = "F:\" File$ = "Test.txt" FensterBreite = 1000 FensterHoehe = 950 MenueBreite = 200 ScrollBalkenBreite = 20 SchriftGroesse = 16 MausradSchrittWeite = 20 TastaturSchrittWeite = 5 AppTitle "Viscontrol IDE" Graphics FensterBreite,FensterHoehe,32,2 SetBuffer BackBuffer () ClsColor 255,255,255 ;HidePointer Font = LoadFont("Courier",SchriftGroesse,0,0,0) SetFont(Font) ZeilenZaehler = 0 FileHandle = OpenFile(Pfad$ + File$) Repeat T$ = ReadLine(FileHandle) ZeilenZaehler = ZeilenZaehler + 1 Until Eof(FileHandle) CloseFile (FileHandle) AnzahlZeilen = ZeilenZaehler Dim TextZeile$(AnzahlZeilen) ZeilenNr = 0 FileHandle = OpenFile(Pfad$ + File$) Repeat T$ = ReadLine(FileHandle) ZeilenNr = ZeilenNr + 1 TextZeile$(ZeilenNr) = T$ Until Eof(FileHandle) CloseFile (FileHandle) ;************** Main Loop ****************** Repeat Cls Color 0,0,0 MouseLB = MouseDown(1) If MouseLB Then If RectsOverlap(GraphicsWidth()-ScrollBalkenBreite-MenueBreite,ScrollGriffSenkrechtY-ScrollGriffSenkrechtLaenge/2,ScrollBalkenBreite,ScrollGriffSenkrechtLaenge,MouseX(),MouseY(),1,1) Then ScrollBalkenSenkrechtZiehen = 1 If DeltaY = 0 Then DeltaY = ScrollGriffSenkrechtY - MouseY():PosScrollGriffSenkrecht = ScrollGriffSenkrechtY EndIf Else DeltaY = 0 ScrollBalkenSenkrechtZiehen = 0 EndIf If ScrollBalkenSenkrechtZiehen = 0 Then ScrollGriffSenkrechtY = (GraphicsHeight()-ScrollBalkenBreite-ScrollGriffSenkrechtLaenge/2)*(ScrollY + AnzahlZeilenSichtbar/2)/AnzahlZeilen Else ScrollGriffSenkrechtY = MouseY()+DeltaY If ScrollGriffSenkrechtY < ScrollGriffSenkrechtLaenge/2 Then ScrollGriffSenkrechtY = ScrollGriffSenkrechtLaenge/2 If PosScrollGriffSenkrecht <> ScrollGriffSenkrechtY Then ScrollY = (ScrollGriffSenkrechtY-ScrollGriffSenkrechtLaenge/2) * (AnzahlZeilen /(GraphicsHeight()-ScrollBalkenBreite-ScrollGriffSenkrechtLaenge)) EndIf EndIf ;#Region Text anzeigen AnzahlZeilenSichtbar = 0 ZeileY = 0 For Zeile = ScrollY To ScrollY + 200 If Zeile > AnzahlZeilen Or ZeileY+SchriftGroesse > GraphicsHeight()-ScrollBalkenBreite Then Exit Text 20,ZeileY,TextZeile(Zeile) ZeileY = ZeileY + SchriftGroesse AnzahlZeilenSichtbar = AnzahlZeilenSichtbar + 1 Next If KeyDown(200) Then ScrollY = ScrollY - TastaturSchrittWeite If KeyDown(208) Then ScrollY = ScrollY + TastaturSchrittWeite ScrollY = ScrollY - MouseZSpeed()*MausradSchrittWeite If ScrollY < 0 Then ScrollY = 0 If ScrollY > AnzahlZeilen - AnzahlZeilenSichtbar+1 Then ScrollY = AnzahlZeilen - AnzahlZeilenSichtbar+1 ;#End Region ;Menü Color 220,220,220 Rect GraphicsWidth()-MenueBreite-ScrollBalkenBreite,0,GraphicsWidth(),GraphicsHeight() ;#Region Scrollbalken senkrecht ;Scrollbalken senkrecht Color 210,210,255 Rect GraphicsWidth()-ScrollBalkenBreite-MenueBreite,0,ScrollBalkenBreite,GraphicsHeight()-ScrollBalkenBreite,1 ScrollGriffSenkrechtLaenge = AnzahlZeilenSichtbar * (GraphicsHeight()-ScrollBalkenBreite-ScrollGriffSenkrechtLaenge)/AnzahlZeilen If ScrollBalkenSenkrechtZiehen = 0 Then Color 100,100,255 Else Color 10,10,255 Rect GraphicsWidth()-ScrollBalkenBreite-MenueBreite,ScrollGriffSenkrechtY-ScrollGriffSenkrechtLaenge/2,ScrollBalkenBreite,ScrollGriffSenkrechtLaenge,1 ;#End Region ;Scrollbalken waagrecht Color 210,255,255 Rect 0,GraphicsHeight()-ScrollBalkenBreite,GraphicsWidth()-MenueBreite-ScrollBalkenBreite,ScrollBalkenBreite,1 Flip Until KeyHit(1) ;******************************************** End |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
http://www.blitzbasic.com/code...?code=1895
auch bb.com hat nützliches zu bieten ![]() |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ausm Kopf :
a=Xgrösse des Scrollbars/Anzahlzeilen b=X grösse des Scrollbars/aufderlinie auf der man jetzt is position = a-b Solte gehn hoff de rafst was ich da schreib xD mfg oz |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
![]() |
Iguan |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein leider kapier ich nicht was du meinst.. könntest du mir das in meinem code zeigen/einbauen ? | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group