Keyboard ch(5) oder chr(24) geht nicht

Auf dem Weg von Clipper, FoxPro u.ä. nach Xbase++

Moderator: Moderatoren

Antworten
Benutzeravatar
uwe.24
UDF-Programmierer
UDF-Programmierer
Beiträge: 52
Registriert: Di, 01. Aug 2006 15:47
Wohnort: Osnabrück
Danksagung erhalten: 1 Mal

Keyboard ch(5) oder chr(24) geht nicht

Beitrag von uwe.24 »

Hallo,

meine Umstellung von Clipper zu XBase geht weiter. Aber leider auch meine Probleme dabei

Um in Masken (Say - Get - Read) in den Get Felder zu springen,
hab ich bisher diese Routinen benutzt.
Aber chr(5) oder chr(24) gehen unter XBase nicht mehr.
Chr(13) funktioniert aber.

Wo ist der Fehler?

Also proc rechts geht - proc links geht nicht

Code: Alles auswählen

..
set key  2 to rechts                && Strg-Rechts
set key 26 to links                 && Strg-Links
..
*******************************************************************************
proc rechts
  if form > 2
    return
  endif
  spalte = col()
  reihe  = row()
  if spalte >= 72
    return
  endif
  mak1 = "chr(13)"
  imax = if(form = 1,20,10)
  for i = 1 to imax - 1
      mak1 = mak1 + " + chr(13)"
  next
  keyboard &mak1
return
*******************************************************************************
proc links
  if form > 2
    return
  endif
  spalte = col()
  reihe  = row()
  mak1 = "chr(5)"
  imax = if(form = 1,20,10)
  for i = 1 to imax - 1
    mak1 = mak1 + " + chr(5)"
  next
  keyboard &mak1
return
*******************************************************************************
Uwe aus OS
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Keyboard ch(5) oder chr(24) geht nicht

Beitrag von Rolf Ramacher »

Hi uwe

warum machst du denn kein reines GUI ? Dann springst du mit der TAB-Taste in die Felder, solange der event nicht beendet ist.
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Keyboard ch(5) oder chr(24) geht nicht

Beitrag von AUGE_OHR »

uwe.24 hat geschrieben:Um in Masken (Say - Get - Read) in den Get Felder zu springen,
hab ich bisher diese Routinen benutzt.
Aber chr(5) oder chr(24) gehen unter XBase nicht mehr.
hm ... die Inkey() Werte sind bei Xbase++ die selben.

Code: Alles auswählen

// Pfeil nach oben     | Strg+E
#define  K_UP           5  
// Pfeil nach unten    | Strg+X
#define  K_DOWN        24  
und im Source steht

Code: Alles auswählen

// C:\ALASKA\XPPW32\Source\SYS\GetSys.prg

PROCEDURE GetApplyKey( oGet, nKey )
   LOCAL cChar, bKeyBlock := SetKey( nKey )
   LOCAL nLen

   DO CASE
   // Codeblock ist auf Taste gelegt
   CASE bKeyBlock <> NIL         
        GetDoSetKey( bKeyBlock, oGet )
   // Tasten fr ExitState
   CASE nKey == K_UP   .OR. nKey == K_SH_TAB
        oGet:exitState := GE_UP

   CASE nKey == K_DOWN .OR. nKey == K_TAB
        oGet:exitState := GE_DOWN
Frage : verwendest du SetMouse(.T.) und/oder hast du auf /PM:PM umgestellt ?

wenn ja müsstet du statt der Inkey() Werte die AppEvent() Konstanten nehmen

Code: Alles auswählen

// C:\ALASKA\XPPW32\Source\SYS\GetSysX.prg

   CASE nEvent == xbeK_UP .OR. nEvent == xbeK_SH_TAB
        oGet:exitState := GE_UP

   CASE nEvent == xbeK_DOWN .OR. nEvent == xbeK_TAB
        oGet:exitState := GE_DOWN
gruss by OHR
Jimmy
Benutzeravatar
uwe.24
UDF-Programmierer
UDF-Programmierer
Beiträge: 52
Registriert: Di, 01. Aug 2006 15:47
Wohnort: Osnabrück
Danksagung erhalten: 1 Mal

Re: Keyboard ch(5) oder chr(24) geht nicht

Beitrag von uwe.24 »

Hallo,

#Jimmy
ja setmouse(.t.) ist gesetzt und gelinkt wird mit /pm:pm.
Mausteuerung soll benutzt werden können und die Bidlschirmschriftgrösse soll anpassbar sein.

Aber:
ein einzelnes CurosrHoch oder CursorTief über Tastatur geht, voriges oder nächstes GetFeld anspringen geht also.
Auch Return = Nächstes GetFeld funktiniert.

Nur eben nicht über Keyboard mit variabler Anzahl, oder einzeln.

#Rolf
Ich muss noch an reinem GUI arbeiten.
Das Programm ist mit der Zeit (1988 bis jetzt) gewachsen.
Wir sind eine Entwicklungsabteilung in einem Chemie Betrieb, die diese Anwendung nur für die interne Rezeptverwaltung nutzen.
Progarmmiert wird da nur nebenbei. Wir bereiten uns dami jetzt auf die NachDOSZeit vor.

Die Funktionen laufen auch nicht wenn ich mit TAB (chr(9)) oder oder ShiftTAB (chr(271)) in 'mak1' arbeite.
Es geht um den Keyboard Befehl, der nur mit keyboard chr(13) läuft.

Uwe aus OS
Uwe aus OS
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Keyboard ch(5) oder chr(24) geht nicht

Beitrag von AUGE_OHR »

uwe.24 hat geschrieben:Nur eben nicht über Keyboard mit variabler Anzahl, oder einzeln.
wie ich schon sagte ist ein K_UP nicht das selbe wie xbeK_UP aber ein K_ENTER ist == xbeK_ENTER.

nimm aus deinem Source mal die "INKEY.CH" raus ... alles was er dann "meldet" musst du dann mit dem Prefix "xbe" versehen.
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Keyboard ch(5) oder chr(24) geht nicht

Beitrag von brandelh »

Hi,

in GUI oder setmouse(.t.) nützen die Bezeichner der inkey.ch genausowenig wie die chr(?) Kommandos.
appevent.ch ist genauso zwingend wie die xbe... Bezeichner !
Mixen geht nicht =D> ... dass es bei chr(13) zufällig funktioniert widerspricht dem nicht [-X
Gruß
Hubert
Antworten