Forum | | | | Manfred Barei | Salut,
je hoffe es peux mir einer aider, vieleicht sogar Stefan vite. (Probiere avec deinem Code RichEdit: Cursor abfragen)
je probiere et probiere et bekomme es simple pas hin , und dir tout autor, dans qui Statuszeile soll qui Anzeige qui Zeilen et Spaltenanzahl laufend aktualisiert volonté si je im Editorfeld Eingaben fais. Habe déjà einiges probiert cependant klappt es seulement si je sur den Butten (Cursor-Position) Clicke. Siehe Code: KompilierenMarqueSéparation $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
Fin
Salut 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 | peux du avec GetMessage vivre statt WAITINPUT? ou bien per SubProc. |
| | | | |
| | Detlef Jagolski | Salut,
Teste cela la fois. KompilierenMarqueSéparation $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
Fin
|
| | | XProfan X4, PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11 | 21.03.2010 ▲ |
| |
| | Manfred Barei | merci Detlef, so funktioniert es.
Salut 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 ▲ |
| |
|
répondreOptions du sujet | 1.188 Views |
Themeninformationencet Thema hat 3 participant: |