DCBrowse mit Cell-Editing und Check-Box

Moderator: Moderatoren

Antworten
Peter Schweizer
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 153
Registriert: Do, 06. Apr 2006 10:51
Danksagung erhalten: 3 Mal

DCBrowse mit Cell-Editing und Check-Box

Beitrag von Peter Schweizer »

Hallo xBase-Gemeinde,
ich habe da ein kleines Problem in einem dcbrowse.

Ich habe in der ersten Spalte einen Checkbutton (Datenbankfeld: markier C 1) mit der Anzeige eines Bitmaps abhängig ob markier Empty ist oder nicht,

daneben sind auch noch andere Spalten vorhanden, die auch für Cell-Editing freigegeben sind.

Momentan ist es so, daß ich in der ersten Spalte mit der Mouse eine Zelle markiere und anschließend über RETURN
den Status checked / unchecked hervorrufen kann.

Nun soll ich aber alternativ auch über einen Doppelklick den Status der ersten Spalte ändern können.
Dies ist mir bisher nicht gelungen !

Entweder es geht die eine Methode oder die andere aber nicht beide in Kombination.
Funktion fToggle() bzw. ret_block() ändern den Inhalt

Auszug aus meinem Code:
@ 3.5,2 DCBROWSE oSuchen ;
SIZE 78,14 ;
CURSORMODE XBPBRW_CURSOR_CELL ;
EDIT xbeBRW_ItemSelected;
MODE DCGUI_BROWSE_EDITEXIT;
ACTION {|| rec_lock()};
EXIT {|| dbunlock() };
DATALINK {|| oDlg:hide(),;
ret_block(@aDef, @oSuchen),; // markieren
oDlg:show() }

Spaltendefinition-1 für Methode RETURN:
DCBROWSECOL ;
DATA {||IF(!EMPTY(markier),7392,7393)} ;
TYPE XBPCOL_TYPE_BITMAP;
HEADER 'X';
PARENT oSuchen;
WIDTH 3;
PROTECT .F. ;
EDITOR 'LOGISCH'

@ NIL,NIL DCGET xNIL GETID 'LOGISCH' PREEVAL {|| fToggle(oSuchen,aBlock)} WHEN {||(.F.)

Spaltendefinition-1 für Methode Doppel-Klick:
DCBROWSECOL ;
DATA bSpaBlock ;
TYPE XBPCOL_TYPE_BITMAP;
HEADER aBlock[i,2];
PARENT oSuchen;
COLOR GRA_CLR_WHITE,GRA_CLR_DARKGREEN;
WIDTH aBlock[i,4];
PROTECT {|| fToggle(oSuchen,aBlock),.T.}

Was muß ich machen um beide Methoden aktiv zu haben ?
Viele grüße aus dem Schwabenland
Peter
Gruss Peter
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: DCBrowse mit Cell-Editing und Check-Box

Beitrag von Tom »

Hallo, Peter.

Um zu verhindern, dass die Bitmap-Zelle vermeintlich editiert werden kann, muss die Spalte mit einem PROTECT {||.T.} versehen sein. Die Möglichkeit, den Inhalt dennoch per Klick/Doppelklick zu ändern, erreicht man in der Spalte so:

DCBROWSECOL ... EVAL {|o|o:DataArea:LbClick := {||ToggleVar(),oBrowse:RefreshCurrent()}}

und analog für LbDblClick.

Um dasselbe mit ENTER zu erreichen, muss man m.E. einen kurzen Handler schreiben, der im DCREAD referenziert wird. Dieser muss das Keyboard-Event und die Taste (ENTER) abfangen und prüfen, ob man auf der fraglichen Spalte steht (das Browse an den Handler übergeben, oBrowse:ColPos gibt an, wo man steht - und man muss prüfen, ob das Objekt, das das Event auslöst, eine Cellgroup ist). Am einfachsten ist dann, mit PostAppEvent den Klick an die Spalte zu senden.
Herzlich,
Tom
Peter Schweizer
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 153
Registriert: Do, 06. Apr 2006 10:51
Danksagung erhalten: 3 Mal

Re: DCBrowse mit Cell-Editing und Check-Box

Beitrag von Peter Schweizer »

Hallo Tom,
vielen Dank für die schnelle Antwort.
Hat Super geklappt.

Gruß Peter
Gruss Peter
Antworten