[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte

Hybrid View

  1. #1
    Registriert seit
    May 2004
    Beiträge
    470

    Display Attribute Hex

    Hallo zusammen,

    ich bin auf der Suche nach einer vollständigen Liste von Hex-Werten für Display Attribute und Farben. Ich habe zwar im Moment eine vor mir liegen aber da finde ich kein DSPATR(PC).
    Kann mir da jemand weiter helfen ?

    Vielen Dank für Eure Mühe

    Viele Grüsse Harald

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    PC (PositionCursor) ist auch kein Feldattribut sondern eine Funktion des 5250-Datenstromes.

    Per DSPATR(PC) wird die Cursorposition des Feldes in den Datenstrom gestellt.
    Sind mehrere DSPATR(PC) aktiv, gilt nur der erste.
    Um den Cursor dynamisch zu positionieren gibt es 2 Methoden:
    a) über Zeile/Spalte
    b) über Feldname und rel. Anfangsposition im Feld
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    May 2004
    Beiträge
    470
    ah ok, danke, hilft mir schon. Über Zeile und Spalte ist es eher ungeschickt wenn das Feld verschoben wird muß man immer daran denken. Aber über Feld hört sich schon besser an.

  4. #4
    Registriert seit
    May 2004
    Beiträge
    470
    Ups. Wie kann ich mir denn die relative Anfangsposition eines Feldes ermitteln ?

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Da hatte ich wohl eine falsche Erinnerung.
    Man kann zwar per RTNCSRLOC den Feldnamen und die Position bekommen, umgekehrt gehts leider nicht.
    Wenn also ein Feld verschoben wird, muss das Programm angepasst werden.

    CSRLOC (Cursor Location) keyword for display files
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    May 2004
    Beiträge
    470
    Ja so kenn ich das auch.

    Danke für die Hilfe.

    Viele Grüsse Harald

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Es gibt allerdings ein etwas kompliziertes API, aus dem du zur Laufzeit die Informationen extrahieren kannst:
    Retrieve Display File Description (QDFRTVFD) API

    Im Row-Column Table (QDFFRCTB) findest du die benötigten Info's.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  8. #8
    Registriert seit
    Nov 2004
    Beiträge
    331

    Talking Feldpositionen

    Zitat Zitat von harkne Beitrag anzeigen
    Ups. Wie kann ich mir denn die relative Anfangsposition eines Feldes ermitteln ?
    Moin,

    das geht viel einfacher:

    Definiere in der Displayfile folgendes:

    RTNCSRLOC(&RTNFLD)

    A RTNFLD 10A H

    Im Programm kannst Du dann das Feld abfragen:

    if rtnfld = 'Feldname'
    dann mach was


    Dann kann Dir die Position völlig egal sein und kannst es versetzen, verschieben usw.

    mfg an *all

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Das betrifft das erhalten der Cursor-Position, aber nicht das Setzen !
    Beim Setzen des Cursors muss man immer noch Zeile/Spalte angeben (oder DSPATR(PC)).
    Schön wäre es, auch hier einen Feldnamen anzugeben.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  10. #10
    Registriert seit
    Nov 2004
    Beiträge
    331

    Cursor

    Zitat Zitat von Fuerchau Beitrag anzeigen
    Das betrifft das erhalten der Cursor-Position, aber nicht das Setzen !
    Beim Setzen des Cursors muss man immer noch Zeile/Spalte angeben (oder DSPATR(PC)).
    Schön wäre es, auch hier einen Feldnamen anzugeben.
    Leider ist es ja so....

    irgendwas ist immer

    mfg

  11. #11
    Registriert seit
    Nov 2004
    Beiträge
    331

    Post Geht doch

    Zitat Zitat von Fuerchau Beitrag anzeigen
    Das betrifft das erhalten der Cursor-Position, aber nicht das Setzen !
    Beim Setzen des Cursors muss man immer noch Zeile/Spalte angeben (oder DSPATR(PC)).
    Schön wäre es, auch hier einen Feldnamen anzugeben.
    Aber es geht doch.(Aber ohne Namen)

    INFDS Stelle 370-371 B 0 #CURSOR

    Eine DS

    #C_LINE 1 3 0
    #C_POS 4 6 0

    Direkt nach EXFMT
    folgender Code

    #CURSOR DIV 256 #C_LINE
    MVR #C_POS

    Damit bekommst Du die Cursoposition NACH Datenfreigabe, Jetzt die Felder retten und bei einem Fehler wieder setzen (Felder Zeile/Spalte)

  12. #12
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    INFDS Stelle 370-371 B 0 #CURSOR

    Eine DS

    #C_LINE 1 3 0
    #C_POS 4 6 0

    Direkt nach EXFMT
    folgender Code

    #CURSOR DIV 256 #C_LINE
    MVR #C_POS
    Warum definierst Du ein 2-Stelliges Feld Binär und dividierst dann durch 256 und ermittelst den Rest?

    Wenn Du statt dessen Stelle 370 (Zeile) als Integer definierst und Stelle 371 (Spalte) ebenfalls als Integer kannst Du Dir die ganze Recherei sparen!

    PHP-Code:
    D SAVINF          DS     
    D  DDSFKY               369    369      
    D  DDSRow               370    370I 0                   
    D  DDSCol               371    371I 0
     
    *------------------------------------------------
     /
    Free
        Select
    ;
        
    When DDSFky F04 and BSFeld 'FELD1';
             
    //Aufruf Matchcode
             
    CsrRow DDSRow;
             
    CsrCol DDSCol;                   
        
    EndSL;
     /
    End-Free 
    Den Cursor wieder auf die gleiche Position zu setzen ist einfach. Schwierig wird es, wenn man, z.B. im Fehler-Fall den Cursor auf ein bestimmtes Feld positionieren will. Dann hilft die Datei-Status-Datenstruktur nicht weiter. Dann hilft nur noch das API QDFRTVFD (wie Baldur bereits vorgeschlagen hat).

    Unter dem folgenden Link ist übrigens eine Prozedur zu finden, in dem die Zeile und Spalte für ein beliebiges Feld über das API QDFRTVFD ermittelt wird:
    ILE Procedure for using Display File API's

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

Similar Threads

  1. DTAQ Attribute auslesen
    By kuempi von stein in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 28-11-06, 05:48
  2. Spoolfile Attribute unter V5R4
    By Weki in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 23-10-06, 11:40
  3. Spoolfile Attribute im CL ermitteln
    By asb_salem in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 21-03-06, 13:32
  4. Status Zeile im Display
    By GEGE in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 24-02-05, 07:45
  5. Meldungen im Display
    By chr in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 12-02-01, 15:55

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •