Italia
Foro

Erledigt: Zeile und Spalte aktualisieren

 

Manfred
Barei
Ciao,

ich hoffe es kann mir einer helfen, vieleicht sogar Stefan Schnell.
(Probiere mit deinem Code RichEdit: Cursor abfragen)

Ich probiere und probiere und bekomme es einfach nicht hin , es geht darum, in der Statuszeile soll
die Anzeige der Zeilen und Spaltenanzahl laufend aktualisiert werden wenn ich im Editorfeld Eingaben mache. Habe schon einiges probiert jedoch klappt es nur wenn ich auf den Butten (Cursor-Position) Clicke.
Siehe Code:
KompilierenMarkierenSeparieren
 $P+
SET("ERRORLEVEL",0)
DEF GETSYSCOLOR(1) !"USER32","GetSysColor"
-Header-Dateien------------------------------------------------------
 $H Windows.ph
 $H RichEdit.ph
 $H Structs.ph
 $H Messages.ph
-Strukturen----------------------------------------------------------
DECLARE RICHEDIT1&
DECLARE BUTTON1&
DECLARE BUTTON2&
Declare CharRange#
Struct CharRange = ~CHARRANGE
Dim CharRange#, CharRange
-Funktion GetCursorPosX (Spalte)-------------------------------------

Proc GetCursorPosX

    SendMessage(RICHEDIT1&, ~EM_EXGETSEL, 0, CharRange#)
    Return Int(CharRange#.cpMax& - (SendMessage(RICHEDIT1&,
    ~EM_LINEINDEX, SendMessage(RICHEDIT1&, ~EM_EXLINEFROMCHAR, 0,
    CharRange#.cpMin&), 0)) + 1)

EndProc

-Funktion GetCursorPosY (Zeile)--------------------------------------

Proc GetCursorPosY

    SendMessage(RICHEDIT1&, ~EM_EXGETSEL, 0, CharRange#)
    Return Int(SendMessage(RICHEDIT1&, ~EM_EXLINEFROMCHAR, 0,
    CharRange#.cpMin&) + 1)

EndProc

Proc position

    SetText Sz&, 0, " Zeile: " + @Str$(GetCursorPosY())
    SetText Sz&, 1, " Spalte: " + @Str$(GetCursorPosX())

EndProc

WINDOWSTYLE 539
WINDOWTITLE "Test"
WINDOW (%maxx/2 - 280/2),(%maxy/2 - 320/2) - 280,320
SET("TRUECOLOR",1)
DECLARE ENDE%
CLS GETSYSCOLOR(15)
USEFONT "MS Sans Serif",13,0,0,0,0
SETDIALOGFONT 1
Hier kann ggf. Ihr Menü hin
RICHEDIT1& = CREATE("RICHEDIT",%HWND,"",0015,0015,0245,0175)
BUTTON1& = CREATE("BUTTON",%HWND,"Cursor Position",0020,0215,0100,0030)
BUTTON2& = CREATE("BUTTON",%HWND,"Prog. Ende",0150,0215,0100,0030)
-----------------------------Statuszeile------------------------------
Declare L#,Sz&
Dim L#, 12                                   Long-Bereich für 3 Felder (3 * 4 Bytes)
Long L#,0 = 75, 195, -1                     Maße der einzelnen Statusfelder
Sz& = @Create("StatusWindow",%HWND,"",3,L#)  StatusWindow erzeugen
SetText Sz&, 0, " Zeile:"                       Feld1 mit Text bestücken
SetText Sz&, 1, " Spalte:"                          Feld2 mit Text bestücken
SetText Sz&, 2, Date$(0)                     Feld3 mit Text bestücken
---------------------------------------------------------------------
SETFOCUS(%HWND)
REPAINT

WHILENOT ENDE%

    WAITINPUT

    If %KEY=2

        ENDE% = 1

    ELSEIF %KEY=4

        SETWINDOWPOS Sz& = 0,0 - 0,0;0

    ELSEIF CLICKED(RICHEDIT1&) RICHEDIT

    ELSEIF CLICKED(BUTTON1&) BUTTON Cursor Position

        position

    ELSEIF CLICKED(BUTTON2&) BUTTON Prog. Ende

        ENDE% = 1

    ENDIF

    position

ENDWHILE

End

Saluto Manfred
 
Zu wenig Wissen ist gefärlich, zu viel auch.(XProfan X4) | Win 10 Pro 64 | Win7 Ultimate 32/64 | AMD FX-8320, 16GB, GeForce GT 630 |
21.03.2010  
 




Thomas
Freier
Kannst du mit GetMessage leben statt WAITINPUT?
Oder per SubProc.
 
Gruß Thomas
Windows XP SP2, XProfan X2
21.03.2010  
 




Detlef
Jagolski
Ciao,

Teste das mal.
KompilierenMarkierenSeparieren
 $P+
SET("ERRORLEVEL",0)
DEF GETSYSCOLOR(1) !"USER32","GetSysColor"
-Header-Dateien------------------------------------------------------
 $H Windows.ph
 $H RichEdit.ph
 $H Structs.ph
 $H Messages.ph
-Strukturen----------------------------------------------------------
DECLARE RICHEDIT1&
DECLARE BUTTON1&
DECLARE BUTTON2&
Declare CharRange#
Struct CharRange = ~CHARRANGE
Dim CharRange#, CharRange
-Funktion GetCursorPosX (Spalte)-------------------------------------

SubClassProc

    If SubClassMessage(RICHEDIT1&, ~WM_CHAR)

        position

    EndIf

EndProc

Proc GetCursorPosX

    SendMessage(RICHEDIT1&, ~EM_EXGETSEL, 0, CharRange#)
    Return Int(CharRange#.cpMax& - (SendMessage(RICHEDIT1&,
    ~EM_LINEINDEX, SendMessage(RICHEDIT1&, ~EM_EXLINEFROMCHAR, 0,
    CharRange#.cpMin&), 0)) + 1)

EndProc

-Funktion GetCursorPosY (Zeile)--------------------------------------

Proc GetCursorPosY

    SendMessage(RICHEDIT1&, ~EM_EXGETSEL, 0, CharRange#)
    Return Int(SendMessage(RICHEDIT1&, ~EM_EXLINEFROMCHAR, 0,
    CharRange#.cpMin&) + 1)

EndProc

Proc position

    SetText Sz&, 0, " Zeile: " + @Str$(GetCursorPosY())
    SetText Sz&, 1, " Spalte: " + @Str$(GetCursorPosX())

EndProc

WINDOWSTYLE 539
WINDOWTITLE "Test"
WINDOW (%maxx/2 - 280/2),(%maxy/2 - 320/2) - 280,320
SET("TRUECOLOR",1)
DECLARE ENDE%
CLS GETSYSCOLOR(15)
USEFONT "MS Sans Serif",13,0,0,0,0
SETDIALOGFONT 1
Hier kann ggf. Ihr Menü hin
RICHEDIT1& = CREATE("RICHEDIT",%HWND,"",0015,0015,0245,0175)
BUTTON1& = CREATE("BUTTON",%HWND,"Cursor Position",0020,0215,0100,0030)
BUTTON2& = CREATE("BUTTON",%HWND,"Prog. Ende",0150,0215,0100,0030)
-----------------------------Statuszeile------------------------------
Declare L#,Sz&
Dim L#, 12 Long-Bereich für 3 Felder (3 * 4 Bytes)
Long L#,0 = 75, 195, -1 Maße der einzelnen Statusfelder
Sz& = @Create("StatusWindow",%HWND,"",3,L#) StatusWindow erzeugen
SetText Sz&, 0, " Zeile:" Feld1 mit Text bestücken
SetText Sz&, 1, " Spalte:" Feld2 mit Text bestücken
SetText Sz&, 2, Date$(0) Feld3 mit Text bestücken
---------------------------------------------------------------------
SETFOCUS(%HWND)
REPAINT
SubClass RICHEDIT1&,1

WHILENOT ENDE%

    WAITINPUT

    If %KEY=2

        ENDE% = 1

    ELSEIF %KEY=4

        SETWINDOWPOS Sz& = 0,0 - 0,0;0

    ELSEIF CLICKED(RICHEDIT1&)RICHEDIT

    ELSEIF CLICKED(BUTTON1&)BUTTON Cursor Position

        position

    ELSEIF CLICKED(BUTTON2&)BUTTON Prog. Ende

        ENDE% = 1

    ENDIF

    position

ENDWHILE

Dispose CharRange#
SubClas
RICHEDIT1&,0 End
 
XProfan X4, PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11
21.03.2010  
 




Manfred
Barei
Danke Detlef, so funktioniert es.

Saluto Manfred
 
Zu wenig Wissen ist gefärlich, zu viel auch.(XProfan X4) | Win 10 Pro 64 | Win7 Ultimate 32/64 | AMD FX-8320, 16GB, GeForce GT 630 |
21.03.2010  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

1.170 Views

Untitledvor 0 min.
Frank Vorholzer20.04.2011

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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