Anmelden

View Full Version : Cursorposition in Windows wird nich korrekt übermittelt



Seiten : [1] 2

hteufl
22-02-16, 15:35
Hallo Spezialists!

Ich habe ein Programm mit dem ein Fenster aufgerufen wird. Danach sollte die Cursorposition abgefragt werden um eine Aktion zu starten. Ich habe auf 2 Arten versucht dies zu bewerkstelligen:
1) CURSORRCD und CURSORFLD abzufragen mit dem Ergebnis, dass das letzte Feld des vorherigen Formats angezeigt wird (im Debug)
2) CURSORLIN und CURSORPOS abzufragen mit dem Ergebnis, dass immer die 1. Position des 1. Eingabefeldes angezeigt wird

Welches Attribut habe ich im DSPF vergessen zu setzten, damit meine Programmlogik funktioniert. Am schönsten wäre es wenn ich die Attribute CURSORRCD und CURSORFLD korrekt abfragen könnte!

Das Windows aus SDA:

A R ZUSWINF1
A*%%TS SD 20160222 161321 HERMANN REL-V7R1M0 5770-WDS
A RTNCSRLOC(*WINDOW &CURWINLIN &CURWI-
A NPOS)
A BLINK
A OVERLAY
A *DS3 WINDOW(&STRLIN &STRPOS 15 70)
A *DS4 WINDOW(&STRLIN &STRPOS 5 50)
A WDWBORDER((*COLOR BLU))
A CURWINREC 10A H
A CURWINFLD 10A H
A CURWINLIN 3S 0H
A CURWINPOS 3S 0H
A STRLIN 3S 0P
A STRPOS 3S 0P
A FTTXTWIN 65A O 14 1
A 1 2' Zusatzangaben zu-
A m Artikelstamm '
A DSPATR(RI)
A COLOR(BLU)
A $ASPICT 1A P
A 3 6'Bildname 1:'
A COLOR(BLU)
A DSPATR(&$ASPICT)
A $ASPICTURE 1A P
A ASPICTURE 50A B 3 18CHECK(LC)
A FLDCSRPRG(ASPICTURE2)
A DSPATR(&$ASPICTURE)
A COLOR(YLW)
A $ASSORTT 1A P
A 9 6'Sortierung:'
A DSPATR(&$ASSORTT)
A COLOR(BLU)
A $ASSORT 1A P
A ASSORT 10A B 9 18CHECK(LC)
A DSPATR(&$ASSORT)
A COLOR(YLW)
A ASPICTURE2 50A B 4 18CHECK(LC)
A COLOR(YLW)
A DSPATR(&$ASPICTURE)
.
.
.



Vielen Dank im Voraus

Hermann

ILEMax
22-02-16, 15:50
RTNCSRLOC(*WINDOW &CURWINLIN &CURWI-
A NPOS)


RTN = return. da stehen sie drin!

Der ILEMax

camouflage
22-02-16, 15:52
RTNCSRLOC(&CURWINREC &CURWINFLD)


Müsste eigentlich reichen, zumindestens tut es so bei mir.
Und versuch's ohne OVERLAY.

Fuerchau
22-02-16, 16:29
http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_71/rzakc/rzakcmstdfrtncs.htm?lang=de
Es gibt 2 Methoden des RTNCSRLOC:
Mit *RECNAME = Satzname, Feldname und ggf. Position im Feld
Ohne *RECNAME (optional *WINDOW) die Zeile und Spalte des Cursors, ich meine dann allerdings relativ zum Fenster.
Laut Doku erkennt DDS automatisch auf grund der verwendeten Felder, welche Information zurückgegeben werden soll, man kann so gar alles abfragen.

hteufl
23-02-16, 08:20
Zuerst einmal vielen Dank für die Antworten! Ich habe nun alle CSR Anweisungen im Format des DSPFs entfernt und lediglich CSRWINRCD und CSRWINFLD stehen lassen. Auch habe ich CAMOUFLAGEs Tipp mit dem Overlay ausprobiert. Fakt ist:

Im Debug steht nach dem EXFMT im Feld CSRWINRCD und CSRWINFLD BLANK???

A R ZUSWINF1
A*%%TS SD 20160223 090119 HERMANN REL-V7R1M0 5770-WDS
A RTNCSRLOC(&CSRWINRCD &CSRWINFLD)
A BLINK
A WINDOW(&STRLIN &STRPOS 15 70)
A WDWBORDER((*COLOR BLU))
A CSRWINRCD 10A H
A CSRWINFLD 10A H

Außerdem wird der STS 01125 bei MONITOR ausgegeben - kein Indikator für HELP angegeben!

Danke im Voraus

Hermann

camouflage
23-02-16, 09:23
Also, mit dieser Definition funktioniert der RTNCSRLOC todsicher, zumindest bei mir.
Der Help, naja richtig wichtig ist der doch nicht oder?



A DSPSIZ(24 80 *DS3)
A R ZUSWINF1
A WINDOW(&STRLIN &STRPOS 15 70)
A CF12(12)
A CF04(04 'SEARCH')
A RTNCSRLOC(&CURWINREC &CURWINFLD)
A BLINK
A WDWBORDER((*COLOR BLU))
A C$FRMT 10A H
A CURWINREC 10A H
A CURWINFLD 10A H
A STRLIN 3S 0P
A STRPOS 3S 0P
A $ASPICT 1A P
A $ASPICTURE 1A P
A $ASSORTT 1A P
A $ASSORT 1A P
A 1 2' ZUSATZANGABEN ZU M ARTIKELSTAMM '
A DSPATR(RI)
A COLOR(BLU)
A 3 6'BILDNAME 1:'
A COLOR(BLU)
A DSPATR(&$ASPICT)
A ASPICTURE 50A B 3 18CHECK(LC)
A FLDCSRPRG(ASPICTURE2)
A DSPATR(&$ASPICTURE)
A COLOR(YLW)
A ASPICTURE2 50A B 4 18CHECK(LC)
A COLOR(YLW)
A DSPATR(&$ASPICTURE)
A 9 6'SORTIERUNG:'
A DSPATR(&$ASSORTT)
A COLOR(BLU)
A ASSORT 10A B 9 18CHECK(LC)
A DSPATR(&$ASSORT)
A COLOR(YLW)
A FTTXTWIN 65A O 14 1
A R NOERASE
A ASSUME
A 1 2' '

Fuerchau
23-02-16, 11:06
Wenn beim Drücken der Help-Taste ein Fehler ausgelöst wird sind natürlich alle Daten auf dem vorherigen Zustand da keine Daten übertragen werden.
Beheb den Fehler, dann klappt es auch mit der HELP-Taste.
Das Problem ist ja, dass es für HELP keine automatische Tasteninfo (*INKx) gibt. Welche Taste denn da gedrückt wird kannst du über 2 Methoden erfahren:
a) Bezugszahl (einfacher)
b) INFDS

hteufl
23-02-16, 11:24
Das Programm läuft jetzt korrekt! Vielen Dank an allen Beteiligten besonders aber Camouflage.
Der Fehler war wie es aussieht die fehlende Antwortbezugszahl der HELP Taste! Wie auch die Statusmeldung 01125 eigentlich darauf hinweist. Interessant ist nur warum ich für die HELP Taste eine Antwortbezugszahl benötige und alle anderen Funktionstasten funktionieren ohne. Die Funktionstaste CFKEY wird aus der INFDS gelesen.

Danke noch einmal an alle Beteiligten

Hermann

Fuerchau
23-02-16, 11:29
Wäre mal interessant gewesen die CPF-Nachricht zum Fehler zu bekommen.
Ist es tatsächlich eine CPF-meldung oder eine RNX-meldung was auf die RPG-Runtime deuten würde.

camouflage
23-02-16, 12:40
Mit dem Keyword "ALTHELP(CAxx)" kann der Helptaste eine Bezugszahl zugeordnet werden. Im Uebrigen produziert die Angabe des "Help" keinen Abbruchfehler und ist auch nicht die Ursache des Fehlers. Help wird dazu verwendet, dass UIM funktioniert.