Seite 2 von 2
Re: Tastenzustand EINFG/NUMLOCK anzeigen
Verfasst: Mo, 24. Apr 2017 9:10
von Manfred
Hallo Ingo,
in der Doku gibt es einen Punkt Hinweise für Clipper Programmierer. Vieleicht hilft der Dir ja weiter?
Re: Tastenzustand EINFG/NUMLOCK anzeigen
Verfasst: Mo, 24. Apr 2017 14:08
von BJelinek
Hallo Ingo,
Ich habe auch ein Programm das fast 1 zu 1 in Clipper und Xbase++ läuft.
Bei mir ändert sich der Cursor nicht wenn man mit "ins" umschaltet.
sowohl im Clipper als auch im Xbase++ Programm.
Ich nehme an, dass in Deinem alten Clipper-Programm auch in der GETSYS.PRG
ein Änderung zum Standard vorgenommen wurde.
Falls Ja, diese Änderungen ins Xbase++ GETSYS.PRG übertragen.
Ich benutze auch keine Standard GETSYS.PRG sowohl in Clipper als auch Xbase++.
Re: Tastenzustand EINFG/NUMLOCK anzeigen
Verfasst: Mo, 24. Apr 2017 15:46
von IngoM
Hallo Bernd,
ich habe nichts an GETSYS.PRG geändert.
Du hast mir trotzdem einen heißen Tipp gegeben; es waren die CA-Tools!
Re: Tastenzustand EINFG/NUMLOCK anzeigen
Verfasst: Mo, 24. Apr 2017 23:40
von AUGE_OHR
IngoM hat geschrieben:Gibt es Aussagen von Alaska, dass es hier Fehler gibt?
siehe doch mal in die "Online Knowledge Base"
http://www.alaska-software.com/support/kbase-old.cxp
wenn du unter "Volltext Suche" mal
"SET OPTIMIZE","SET RUSHMORE" oder "SET SMARTFILTER" eingibst wirst du einige Treffer finden.
das betrifft nun primär DBFNTX und OEM DBF wo die "Optimierung" manchmal zuviel des Guten ist.
deshalb kann ich beim Umstieg von Cl*pper nach Xbase++ nur dazu raten zunächst solche "Optimierungen" nicht zu verwenden.
IngoM hat geschrieben:es waren die CA-Tools!
das ist natürlich wiedermal ein running Gag ...
Re: Tastenzustand EINFG/NUMLOCK anzeigen
Verfasst: Di, 25. Apr 2017 6:30
von IngoM
Zusammenfassend halte ich die Darstellung des Einfügemodus durch einen geänderten Cursor für sinnvoll.
Schade, dass das hier nicht standardmäßig dabei ist.
Hat jemand diese Funktionalität in seine GETSYS.PRG eingebaut und kann mir damit helfen?
Re: Tastenzustand EINFG/NUMLOCK anzeigen
Verfasst: Di, 25. Apr 2017 9:02
von AUGE_OHR
IngoM hat geschrieben:Zusammenfassend halte ich die Darstellung des Einfügemodus durch einen geänderten Cursor für sinnvoll.
Schade, dass das hier nicht standardmäßig dabei ist.
KbdStat() --> nKeyState
Return
Win95 - The function returns always 0 under Windows 95.
WinNT - The insert key is not supported under Windows NT. Scroll-Lock, Caps-Lock and Num-Lock are only detected when the corresponding keyboard mode is enabled.
also geht es "so" nicht.
---
Frage : funktioniert SetTimerEvent() im VIO Modus ?
ich bin mit nicht sicher aber wenn es geht "könnte" man, mit dem von Tom erwähnten AppKeyState(), den Status abfragen.
hm ... aber irgendwie muss ich ja an den xbeK_INS Event was unter Xbase++ mit AppEvent() passiert und dafür benötigt man (mindestens) den Hybrid Modus.
---
IngoM hat geschrieben:Oder gibt es eine mir nicht bekannte Standardlösung?
die Arbeit wirst du wohl selbst machen müssen.
die GetSys.PRG sollte kein Problem sein und der Cl*pper Code für MENU TO sollte auch "passen".
Re: Tastenzustand EINFG/NUMLOCK anzeigen
Verfasst: Di, 25. Apr 2017 11:28
von IngoM
Hi Jimmy,
Du überschätzt meine Fähigkeiten; ich habe bisher die Finger von mitgelieferten Dateien gelassen. Es gab ja auch keinen Bedarf.
Wie würdest Du in Textmodus-Anwendungen dafür sorgen, dass der Anwender weiß, ob er im Einfüge- oder Überschreibmodus ist?
Die Belegung der INS-Taste durch diesen Codeblock funktioniert.
Code: Alles auswählen
#include "Inkey.ch"
#include "Setcurs.ch"
#include "appevent.ch"
* Cursor fr Einfgemodus
PUBLIC bBlock
bBlock := {||SetCursor(IIf(ReadInsert(!ReadInsert()),SC_NORMAL,SC_SPECIAL1))}
SetKey(K_INS,bBlock)
Allerdings bringt ein SET CURSOR OFF mit anschließendem CURSON ON wieder den normalen Unterstrich, auch wenn der Einfügemodus aktiv ist.
Danach habe ich SET CURSOR OFF / On durch eigene Funktionen ersetzt:
Code: Alles auswählen
FUNCTION cursor_off
***********************************************************************
* cursor_off() *
***********************************************************************
#include "Setcurs.ch"
SETCURSOR(SC_NONE)
RETURN(.T.)
FUNCTION cursor_on
***********************************************************************
* cursor_on() *
***********************************************************************
#include "Setcurs.ch"
#include "appevent.ch"
IF AppKeyState(xbeK_INS,APPKEY_GET_TOGGLED)<>0
SETCURSOR(SC_SPECIAL1)
ELSE
SETCURSOR(SC_NORMAL)
ENDIF
RETURN(.T.)
Das hilft aber auch nicht, beim nächsten GET ist der Cursor ein Unterstrich, obwohl der Einfügemodus aktiv ist.
ich glaube, dass dieser Weg nicht zum Erfolg führen wird.
Es wäre schön, wenn mir jemand mit einer konkreten Lösung helfen könnte.
Re: Tastenzustand EINFG/NUMLOCK anzeigen
Verfasst: Di, 25. Apr 2017 23:05
von AUGE_OHR
AUGE_OHR hat geschrieben:Frage : funktioniert SetTimerEvent() im VIO Modus ?
ich habe mir noch mal das Beispiel SetTimerEvent() angesehen.
Das läuft ja auch im VIO Modus
Code: Alles auswählen
#include "Appevent.ch"
PROCEDURE Main
LOCAL cVar1:= "Xbase++" , cVar2:="für 32bit"
CLS
// Thread benutzen
SetTimerEvent(100, {|| Statusbar() } )
@ 10, 0 Say "Variable1" GET cVar1
@ 12, 0 Say "Variable2" GET cVar2
READ
// wichtig vor Ende zurücksetzten !
SetTimerEvent(0)
RETURN
PROCEDURE Statusbar()
LOCAL nEvent, mp1, mp2, oXbp, i
// das war original
DispOutAt(0, 0, Time())
// erweitert
nEvent := AppEvent( @mp1, @mp2, @oXbp, 0.5 )
IF nEvent <> xbe_None
oXbp:handleEvent( nEvent, mp1, mp2, oXbp )
ENDIF
DO CASE
CASE nEvent == xbeK_INS
SET( _SET_INSERT, !SET( _SET_INSERT ) )
IF Set( _SET_INSERT )
DispOutAt(0, MaxCol()-3, "INS")
ELSE
DispOutAt(0, MaxCol()-3, " ")
ENDIF
ENDCASE
RETURN
Re: Tastenzustand EINFG/NUMLOCK anzeigen
Verfasst: Do, 27. Apr 2017 20:32
von IngoM
Ich habe leider immer noch keine Lösung für mein Problem gefunden.
Wie sorgt Ihr dafür, dass der Anwender weiß, ob er überschreibt oder einfügt?
Vielleicht gibt es einen anderen Ansatz?
Re: Tastenzustand EINFG/NUMLOCK anzeigen
Verfasst: Do, 27. Apr 2017 21:50
von BJelinek
Hallo Ingo,
auf Grund deine Frage habe ich mir das in meinem Programm mal angeschaut.
Bei mir ist SET SCOREBOARD ON und beim Get sieht man in der ersten Zeile, ob der
Einfüge-Modus aktive ist. Habe jetzt meine GETSYS.PRG angepasst und bei der Eingabe über
GET ändert sich auch der Cursor, jenachdem welcher Cursor in den Einstellungen vom Programm
gewählt wurde. Funktioniert. Mein Menoedit tuts noch nicht.
Hast Du die Maus aktiv ? Ich nicht.
Ich kann die meine GETSYS.PRG zukommen lassen, wenn Du willst.
Bist Du in Willingen ? Dann könnte ich Dir meine Lösung zeigen
Re: Tastenzustand EINFG/NUMLOCK anzeigen
Verfasst: Fr, 28. Apr 2017 1:25
von AUGE_OHR
hi,
IngoM hat geschrieben:Ich habe leider immer noch keine Lösung für mein Problem gefunden.
wie ich festgestellt hatte funktioniert SetTimerEvent() bei GET
mit Verwunderung habe ich nun festgestellt das SetTimerEvent() zwar auch bei MENU TO funktioniert,
die Uhr läuft weiter, aber man bekommt keinen xbeK_INS Event
ich habe es auch mit
versucht aber auch dort kommt kein xbeK_INS Event (vielleicht irgend eine andere Konstante oder anderer Thread)
auf Cl*pper Ebene gibt es also nur den einen Weg
Code: Alles auswählen
#command MENU TO <var> ;
=> <var> := MyMenuTo(promptList, <var>, UPPER(#<var>))
und eine eigene Function MyMenuTo() nach Vorlage der Demo Source die upgeloadet habe.
IngoM hat geschrieben:Vielleicht gibt es einen anderen Ansatz?
wenn KbdStat() von Alaskas XbTools nicht unterstützt wird hat das wohl schon einen Grund.
Re: Tastenzustand EINFG/NUMLOCK anzeigen
Verfasst: Fr, 28. Apr 2017 10:58
von IngoM
Hallo Bernd,
vielen Dank für Dein Angebot; leider bin ich nicht in Willingen. Könntest Du mir Deine GETSYS per PN schicken?
Die Maus ist bei mir auch nicht aktiv. MEMOEDIT benutze ich in diesem Programm ebenfalls nicht.
Bei mir ist SCOREBOARD OFF, da in Zeile 0, und um den ganzen Bildschirm herum, ein Rahmen ist.
Ich könnte mir vorstellen, SCOREBOARD einzuschalten, müsste dann aber die Stelle wissen, an der ich den unter der Anzeige von SCOREBOARD liegenden Rahmen rekonstruieren kann. Weißt Du, wo das programmiert ist?