XbpBrowse mit XBPBRW_CURSOR_ROW und o:ColPos()

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12909
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

XbpBrowse mit XBPBRW_CURSOR_ROW und o:ColPos()

Beitrag von AUGE_OHR »

hi,

ich hab mal in meinem GUI Browser XBPBRW_CURSOR_ROW
verwendet und nun ein Problem mit oBrowser:ColPos() ...

er gibt immer 1 zurück ... :(

also wie bekomme ich mit XBPBRW_CURSOR_ROW die "aktive
Colume" zurück ?

gruss by OHR
Jimmy
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9365
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Beitrag von Tom »

Huhu, Jimmy.

Gegenfrage: Wie markierst Du mit einem Row-Cursor eine Spalte als "aktiv"? :-k
Herzlich,
Tom
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12909
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Beitrag von AUGE_OHR »

hi,
Tom hat geschrieben:Huhu, Jimmy.
Gegenfrage: Wie markierst Du mit einem Row-Cursor eine Spalte als "aktiv"? :-k
naja ich bin der Meinung das o:ColPos immer die "aktive" Colume
zurück geben sollte. Das "markieren" und "anzeigen" muss doch
nicht bedeuten das die Colume auch "aktive" ist !?

da XBPBRW_CURSOR_ROW aber auch auf oBrowser:getdata()
wirkt (_CELL 1 Element, _ROW Array alle Elemente) müssten
ergo alle "markierten" Colume auch "aktive" sein ... (was nicht geht)

ich denke XBPBRW_CURSOR_ROW hat was mit ROW zu tun und
sollte deshalb nicht auf o:COLpos wirken.

aber zurück zum Problem : wie bekomme ich nun die "aktive" Colume
zurück wenn ich XBPBRW_CURSOR_ROW verwende ?

gruss by OHR
Jimmy
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9365
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Beitrag von Tom »

Hallo, Jimmy.

Ich zitiere mal aus den Docs:

"Die Instanzvariable :colPos enthält einen numerischen Wert. Er entspricht der Ordinalposition der Spalte, in der sich der Cursor gerade befindet."

Die drei möglichen Werte für die Instanzvariable :cursorMode ermöglichen keinen Cursor, einen Zellen-Cursor oder einen Zeilen-Cursor. Ein Zeilencursor markiert eine ganze Zeile, weshalb es keine Spalte geben kann, "in der sich der Cursor gerade befindet". Deshalb kann :colPos auch keine Ordinalposition zurückliefern, die größer als eins ist.
Herzlich,
Tom
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12909
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Beitrag von AUGE_OHR »

Tom hat geschrieben:Hallo, Jimmy.
Ich zitiere mal aus den Docs:
"Die Instanzvariable :colPos enthält einen numerischen Wert. Er entspricht der Ordinalposition der Spalte, in der sich der Cursor gerade befindet."
ja ich hab auch schon angefangen mir meinen eigenen ROW_Cursor
zu baunen. der XBPBRW_CURSOR_ROW hat sowieso einen Nachteil
wenn ich "Farbe" für einzelne "Cell" benutze und die dann "überdeckt"
werden. Nun hab ich ein Teil von Diego umgestrickt was mir einen
"Balken" liefert und die "active Cell" farblich hervor hebt.

übrigens : schon mal XBPBRW_CURSOR_NONE ausprobiert ... sollte
da nicht o:ColPos = 0 rauskommen ... ?

gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo,

Steuert das nicht nur das Aussehen der aktiven Zelle ?
Sprich die Zelle ist aktiv, aber dieser Zustand wird nicht durch einen Cursor angezeigt ? Ich meine das so im Hinterkopf zu haben, ist aber schon ne Weile her. :?
Gruß
Hubert
Rolf
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 258
Registriert: Do, 27. Apr 2006 12:28
Wohnort: Görlitz

Beitrag von Rolf »

Hi Jimmy

ich hab da auch schon mal was mit gemacht, aber leider mit der Komponente von Dieter Stelzner (dsBrowse). Ich weiß nicht ob es auch mit dem xbpBrowse funktioniert, da dort nur bei itemMarked aRowCol übergeben wird.

Beim Browser init

Code: Alles auswählen

::oBrowse:itemSelected  := {|aRowCol,x,oXbp|  ::handleItemMarked(aRowCol) }
Der Evnthandler

Code: Alles auswählen

METHOD clsFrmDiagnose:handleItemMarked(aRowCol)
    //** DEC VAR
    LOCAL iRowPos := aRowCol[1]
    LOCAL iColPos := aRowCol[2]

    //-- Es muss das Event itemMarked verwendet werden wenn 
    //-- mehrere Spalten
    //-- mit Doppelklick gesetzt werden sollen, da bei dem 
    //-- Cursormode XBPBRW_CURSOR_ROW
    //-- die Spalten nicht mehr aktuallisiert werden wenn schon 
    //-- die Zeile ausgewählt wurde.
    //-- Da aber itemMarked auf Enter und DblClick reagiert 
    //-- muss eine Differenzierung
    //-- getroffen werden. Deshalb wird sich gemerkt was 
    //-- das vorhergehende Event von itemMarked
    //-- war. Wenn nicht DblClick dann auch nichts tun.
    if( ::bLastDblClick == .F.)
        iColPos := 0
    endif
    ::bLastDblClick := .F.

    do case
        //-- Icd-Add
        case (iColPos == 1)
            ::setIcdAdd()

        //-- Text-Add
        case (iColPos == 2)
            ::setTextAdd()

        otherwise
    endcase

    //-- Aktualisieren
    ::oBrowse:RefreshAll()
    ::bChanged := .T.
RETURN NIL
Es war aber irgendwie schwierig den Doppelklick zu erkennen.

Den Zeilenkursor selber zu zeichnen hab ich auch schon mal probiert, war aber zu langsam und bei mir fehlerhaft.

Eventuell bekommt ja auch ein Event direkt vom XbpColumn-Objekt zurück?

Tschau Rolf
Antworten