Foro | | | | Manfred Barei | ¡Hola,
Yo hoffe lo kann me uno helfen, vieleicht incluso Stefan Rápidamente. (Probiere con deinem Code RichEdit: Cursor abfragen)
Yo probiere y probiere y bekomme lo simplemente no hin , lo va por lo tanto, en el Statuszeile se el Anzeige el Zeilen y Spaltenanzahl laufend aktualisiert voluntad si yo en el Editorfeld Eingaben mache. Posesiones ya einiges probiert sin embargo klappt lo sólo si yo en el Butten (Cursor-Position) Clicke. Siehe Code: KompilierenMarcaSeparación $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
Saludo 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 | ¿Puede du con GetMessage leben en lugar de WAITINPUT? Oder por SubProc. |
| | | | |
| | Detlef Jagolski | ¡Hola,
Teste el veces. KompilierenMarcaSeparación $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 | Gracias Detlef, así funktioniert lo.
Saludo 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 ▲ |
| |
|
RespuestaThemeninformationenDieses Thema ha 3 subscriber: |