Deutsch
Forum

Erste/letzte Position in Medit

 

Timotheus
Hallo,

Ich bin neu hier, und habe ein Problem.

Ich habe eine MultieditBox per Control mit einem waagerechten Scrollbalken erzeugt.
Dann habe ich mir den anderen selbst dran gebastelt, und auf den möchte ich dann reagieren.
Jetzt muss ich aber wissen ob der Cursor in der Medit am Anfang, am Ende oder ganz wo anders steht, weil ich ja den Scrollbalken größer oder kleiner machen muss, wenn jemand die Entfernen Taste auf der letzten Position drückt, oder auf der ersten die Rückgängig Taste.

Wie krieg ich das raus?

Timo
 
27.08.2004  
 




Michael
Dell
Hi,

das Multiedit erzeugt den gewünschten Scrollbalken selbst,
allerdings erst wenn er benötigt wird!

Du brauchst also keinen extra.

Demo:
declare med01&
cls
med01& = @Create("MultiEdit",%HWnd,"",20,20,600,400)
SetFocus(med01&)
SendKey(med01&,35)
Sleep 1000

WhileLoop 0,30,1

    SendString(med01&,"Test1 Test1 Test1 Test1 Test1 Test1 Test1 Test1 Test1 Test1 Test1 Test1 ")
    SendString(med01&,"Test2 Test2 Test2 Test2 Test2 Test2 Test2 Test2 Test2 Test2 Test2 Test2{ENTER}")

EndWhile

SendString(med01&,"{ENTER}Test- Beendet!!!!{ENTER}")

WhileNot Equ(%Key,2) Or Equ(%Key,27)

    WaitInput

EndWhile

End
Gruß

Michael
 
Salu Michael...

Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! 
28.08.2004  
 




Timotheus
Hallo Michael,

Mit der MultiEdit gehts ja nicht, weil ich möchte den rechten Scrollbalken selber erzeugen, damit ich auf ihn reagieren kann, und das geht glaube ich nur mit Control. Und der ScrollB muss der sich ja auch ganz normal verhalten können, und deshalb muss ich alles was Windows sonst macht, selber machen !

Und wie bekomme ich das mit der ersten und letzten Position raus?

Timo
 
28.08.2004  
 




Michael
Dell
Hallo Timotheus,

du kannst auch per SendMessage die Cursor- Position ermitteln und es gibt auch Messages für die Scrollbalken.

Cursorpos im MultiEdit: (Autor: Uwe „Pascal“ Niemeier [...] )
**********************************
window 50,50-500,300
declare Edit%,Zeile%,Zeichen%,Gesamt&
let Edit%=createmultiedit(%hwnd,"",50,50,200,200)

while 1

    getmessage
    sendmessage(Edit%,176,addr(Gesamt&),0)
    locate 1,1
    let Zeichen%=sub(Gesamt&,sendmessage(Edit%,187,-1,0))
    let Zeile%=sendmessage(Edit%,201,-1,0)
    locate 1,1
    print "Der Cursor befindet sich hinter Zeichen",Zeichen%,"in Zeile",Zeile%,"   "

endwhile

**********************************
Hier ein Thread der dir auch noch helfen kann: [...] 

Gruß

Michael
 
Salu Michael...

Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! 
28.08.2004  
 




Timotheus
Danke,

das ist genau das was ich meinte!

Aber könntest du auch noch diese Scrollbalken Messages schreiben. Weil dann bräuchte ich auch nicht alles selbst machen, und könnte einfach den rechten Scrollbalken abfragen.

Timo
 
29.08.2004  
 




Michael
Dell
Da gibst bereits ein schönes Beispiel aus Andreas Miethes - Control.hlp:
Scroll- Beipiel aus Control.hlp
Autor: Andreas Miethe
HP:    http://www.ampsoft.de (Control.exe)
Scroll- Messages
NAME                  WERT     PARAMETER
SBM_SETPOS            $00E0    N3 = Position , N4 = Neuzeichnen ja(1) oder nein(0)
SBM_GETPOS            $00E1    N3=0,  N4=0
SBM_SETRANGE          $00E2    N3=Minimum , N4=Maximum
SBM_SETRANGEREDRAW    $00E6
SBM_GETRANGE          $00E3    N3=Minimum , N4=Maximum
SBM_ENABLE_ARROWS     $00E4
SBM_SETSCROLLINFO     $00E9
SBM_GETSCROLLINFO     $00EA
Declare Ende%,ScrollHorz%,Scrollvert%,Button%
Declare ScrollHX%,ScrollHY%,ScrollWX%,ScrollWY%
Declare ButtonrangeX%,ButtonrangeY%
Declare Buttonx%,Buttony%,Buttonh%,Buttonw%
settruecolor 1
cls rgb(192,192,192)
Let Buttonx% = 10                          links oben
Let Buttony% = 60                          rechts oben
Let Buttonh% = 24                          Hoehe
Let Buttonw% = 80                          Breite
Let ButtonrangeX% = sub(width(%hwnd),130)  bis hierhin darf sich der Button in X bewegen
Let ButtonrangeY% = sub(height(%hwnd),30)  bis hierhin darf sich der Button in Y bewegen
Let ScrollHX% = 0                          links Scrollbar Horizontal
Let ScrollHY% = sub(Width(%hwnd),20)       Breite Scrollbar Horizontal
Let ScrollWX% = sub(Width(%hwnd),20)       oben Scrollbar Vertikal
Let ScrollWY% = sub(Height(%hwnd),20)      Hoehe Scrollbar Vertikal
Let ScrollHorz% = @Control("Scrollbar","",$50000000,0,0,ScrollWX%,20,%hwnd,1000,%Hinstance)
Let ScrollVert% = @Control("Scrollbar","",$50000001,ScrollHY%,20,20,ScrollWY%,%hwnd,1001,%Hinstance)
Let Button% = @Control("Button","Ende",$50008000,Buttonx%,Buttony%,Buttonw%,Buttonh%,%hwnd,1002,%Hinstance)
Sendmessage(ScrollHorz%,$00E2,ButtonX%,ButtonrangeX%)  Scrollweite für Scrollbar horizontal
Sendmessage(ScrollVert%,$00E2,ButtonY%,ButtonrangeY%)  Scrollweite für Scrollbar vertikal
Let ende%=0

whilenot ende%

    Waitinput

    if getfocus(Button%)

        Let Ende%=1

    Endif

    Buttonposition anpassen
    setwindowpos Button% = Sendmessage(ScrollHorz%,$00E1,0,0),Sendmessage(Scrollvert%,$00E1,0,0)-80,24;0

wend

End
© Andreas Miethe , Bielefeld , 1998
Hier wird ein Button mittels Scrollbalken verschoben!

Wo du die Control.hlp findest steht im Beispiel wie auch die gewünschten Messages.

P.S.: Wenn du mal wieder Beipiele suchts eine tolle sortierte Linkliste findest du hier: [...] 

Sodele. Hoffe das hilft!

Schönen Sonntag Euch allen...

Michael
 
Salu Michael...

Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! 
29.08.2004  
 




Timotheus
Das ist nicht ganz das was ich suche. Eigentlich weiß ich jetzt schon alles.
Aber gibt es eine Möglichkeit den rechten Scrollbalken in einer Multiedit(oder Control) abzufragen? Dann bräuchte ich nicht immer alles abzufragen und zu positionieren wenn in der Multiedit etwas eingegeben wird

Timo
 
29.08.2004  
 




Michael
Dell
Ok,

und nochn Beispiel:
Autor: Michael Dell
ScrollBar Min, Max und Pos  Info
Def gScrollPos(2)   !"user32.dll","GetScrollPos"
Def gScrollRange(4) !"user32.dll","GetScrollRange"
Declare med01&,scrMin&,scrMax&
Aktuelle Position des Scrollbalken
gScrollPos(hndl&,0)             SB_HORZ = 0
gScrollPos(hndl&,1)             SB_VERT = 1

Proc gScrollMinMax

    Min und Max der Scrollbar ermittel
    Parameters hndl&,HorVer%          HorVer%=0 -> Horizontal / HorVer%=1 -> Vertikal
    gScrollRange(hndl&,HorVer%,Addr(scrMin&),Addr(scrMax&))

EndProc

Proc ZeigeScrollMinMaxPos

    Parameters HorVer%
    gScrollMinMax(med01&,HorVer%)

    If HorVer%

        MessageBox(Add$(Add$(Add$("Min=",Str$(scrMin&)),Add$("  Max=",Str$(scrMax&))),Add$("  Pos=",Str$(gScrollPos(med01&,HorVer%)))),"Vertikal (Min Max Pos):",0)

    Else

        MessageBox(Add$(Add$(Add$("Min=",Str$(scrMin&)),Add$("  Max=",Str$(scrMax&))),Add$("  Pos=",Str$(gScrollPos(med01&,HorVer%)))),"Horizontal (Min Max Pos):",0)

    EndIf

    SetFocus(med01&)

EndProc

cls
med01& = @Create("MultiEdit",%HWnd,"",20,20,600,400)
SetFocus(med01&)
SendKey(med01&,35)

WhileLoop 0,30,1

    SendString(med01&,"Test1 Test1 Test1 Test1 Test1 Test1 Test1 Test1 Test1 Test1 Test1 Test1 ")
    SendString(med01&,"Test2 Test2 Test2 Test2 Test2 Test2 Test2 Test2 Test2 Test2 Test2 Test2{ENTER}")

EndWhile

SendString(med01&,"{ENTER}Test- Beendet!!!!{ENTER}")
ZeigeScrollMinMaxPos 0
ZeigeScrollMinMaxPos 1

WhileNot Equ(%Key,2) Or Equ(%Key,27)

    WaitInput
    ZeigeScrollMinMaxPos 0
    ZeigeScrollMinMaxPos 1

EndWhile

End
Sodele, das wärs... :-P

Michael
 
Salu Michael...

Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! 
29.08.2004  
 




Timotheus
Ich habe noch eine neue Frage, und ich denke das sie auch hier rein zu den letztn Fragen past:

Wie kriege ich die Zeilennummer der obersten Zeile die in einer Multiedit zu sehen ist raus?

Timo
 
26.09.2004  
 



Hallo Timotheus...

So vielleicht?
Windowstyle 31
Windowtitle "Erste sichtbare Zeile im Multiedit"
Window 0,0-640,440
Declare EDIT&,Button&,Zeile&
LET EDIT&=@createmultiedit(%HWND,"",10,10,300,300)
LET BUTTON&=@CREATEBUTTON(%HWND,"Erste sichtbare Zeile?",10,330,300,30)
ADDFONTS
@Movelisttoedit(EDIT&)

While 0=0

    Waitinput

    IF @GETFOCUS(Button&)

        LET ZEILE&=@SENDMESSAGE(EDIT&,$00CE,0,0) Index der Zeile erfragen
        @MESSAGEBOX(@ADD$("Erste sichtbare Zeile: ",@STR$(@int(ZEILE&+1))),"Ergebnis",64)

    ENDIF

wend

 
26.09.2004  
 




Michael
Dell
Hi Leute,

ausgehend von meinem letzten Beispiel, (Maximale Zeilenzahl + 1) - ScrollbalkenPos.
Da der Scrollbalken auch in seiner Größe dem Anzeigbaren Bereich im Verhältnis zum
gesamten Inhalt entspricht.

Gruß Michael...
 
Salu Michael...

Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! 
26.09.2004  
 




Timotheus
Danke :biggrin:
 
26.09.2004  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

5.092 Betrachtungen

Unbenanntvor 0 min.
Ernst22.04.2016
RudiB.03.04.2016
Unbenannt26.05.2012
Unbenannt21.05.2012
Mehr...

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

Timotheus (6x)
Michael Dell (5x)
unbekannt (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie