DCBROWSE mit Combobox [erledigt]

Moderator: Moderatoren

Antworten
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 475
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Danksagung erhalten: 3 Mal
Kontaktdaten:

DCBROWSE mit Combobox [erledigt]

Beitrag von Ewald »

Hallo Gemeinde,
ich biete in einem Browse beim Editieren einzelner Zellen eine Auswahl aus einen Array mittels Combobox an. Dieser Array-Inhalt ändert sich von Zelle zu Zelle und muss vor dem Editieren neu ermittelt werden. Das habe ich mit "gotfocus" realisiert, und obwohl das funktionirt bin mir aber überhaupt nicht sicher, ob das der richtige Ansatz ist. Wo und wie könnte ich denn wohl das Neueinlesen des Array noch erzwingen, bevor der User eine Eingabe in die Zelle macht ?

Code: Alles auswählen

@ 0,0 dcbrowse ....
.
dcbrowsecol field dbstue->index2 header "IDX" parent ob1 width 8 ;
                                 picture "@!" ;
                                 gotfocus {||fidx(getlist)}
                                 editor "XIDX"
.                                 
@  nil, nil DCCOMBOBOX xNIL LIST antx SIZE 12,6 ;
   TYPE XBPCOMBO_DROPDOWN ;
   MESSAGE 'Bitte Index w„hlen' ;
   ID 'XIDX' 

*----------------------------   

function fidx(xlist)
local getlist:={}

asize(antx,0)

xauf("stuekopf",1)
_stuekopf=alias()
seek dbstue->nrkbi1
if found()
do while (_stuekopf)->teilnr=dbstue->nrkbi1
aadd(antx,(_stuekopf)->index)
skip
enddo
endif
close (_stuekopf)

dc_getrefresh(xlist)

return .t. 
Zuletzt geändert von Ewald am Fr, 22. Nov 2013 22:24, insgesamt 1-mal geändert.
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: DCBROWSE mit Combobox

Beitrag von Wolfgang Ciriack »

Hallo Edwald,
* [EDIT <nEditEvent> | <aEditEvent> ;
[ MODE <nbEditMode>] ;
[ ACTION <bEditAction>] ;
[ EXIT <bEditExit> ] ] ;
ich würde das evtl. in den EDIT ACTION-Block des DCBROWSE packen, der bei Beginn des Editierens ausgeführt wird.
Kommt aber auf den EDIT-Modus an, ich weiss nicht, wenn EDITACCROSS_DOWN gewählt ist, was dann passiert.
Ansonsten evtl. auch in einen GOTFOCUS bei der Combobox ?
Viele Grüße
Wolfgang
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 475
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: DCBROWSE mit Combobox

Beitrag von Ewald »

Hallo Wolfgang,
da habe ich mich nicht exakt ausgedrückt.
Das betrifft nur eine Spalte in der Tabelle. Also nur wenn eine Zelle innerhalb dieser Spalte angeklickt wird soll das Array neu gelesen werden.
Deswegen habe ich die Funktion nicht im Edit Actionblock stehen.
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: DCBROWSE mit Combobox

Beitrag von Rudolf »

Hallo,
schau mal ITEMMARKED Option an, Du kannst das Browse Objekt übergeben und dann schauen in welcher Spalte und Zeile Du bist.
Grüße
Rudolf
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 Combobox

Beitrag von Tom »

GOTFOCUS wäre schon das Mittel der Wahl (es bildet SetInputFocus ab - das Control hat also den Eingabefokus bekommen, was der richtige Moment ist, um zu überprüfen, welche Daten es anbieten soll). ITEMMARKED in DCBROWSE könnte, wie von Rudolf erwähnt, einen Parameter setzen (oder eine Get-Set-Funktion bestücken), der/die darüber Auskunft gibt, ob möglicherweise Änderungen nötig sind. Ansonsten liefert DC_BrowseRow(oBrowse) jederzeit Informationen darüber, in welcher Zeile man sich befindet, worüber man dann - auch im fraglichen Control - z.B. Arrayelemente abfragen kann. Die POINTER-Option von DCBROWSE würde ich nicht verwenden, weil sie meiner Erfahrung nach nicht verlässlich ist.
Herzlich,
Tom
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: DCBROWSE mit Combobox

Beitrag von Rudolf »

Hallo,
mit Gotfocus und Lostfocus habe ich regelmäßig Probleme, ich glaube es ist nicht zuverlässig, vor allem bei Tabs ist es nachvollziehbar. Pointer verwendet ich sehr oft und habe keine Probleme. Wichtig ist nur die Variable mit 1 vorzubelegen, bei mir hat manchmal die erste Abfrage des Pointers nicht funktioniert.
Grüße
Rudolf
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 475
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: DCBROWSE mit Combobox

Beitrag von Ewald »

Hallo geehrte Mitdenker ;-)
Also, ich habe das jetzt mit ITEMSELECTED gelöst. Ich übergebe die Position und verlasse die Funktion sofort wieder, wenn ich nicht in der gewünschten Spalte bin. (Jetzt wo ich das schreibe kommt mir die Formulierung irgendwie seltsam vor ;-))
Ansonsten lese ich das Array neu ein.
Die Variante mit getfocus hat ja auch in 99,99 % der Fälle funktioniert wie ich weiter oben schrub. Aaaber manchmal hatte ich Steuerzeichen im Array stehen oder es war leer, obwohl Daten drinstehen sollten. Klären konnte ich das nicht. Es geht in der Anwendung um Baukastenstücklisten die verschiedene Indizes haben können. Ob und welche Stücklisten vorhanden sind soll dieses Array hergeben. Und es wäre nicht gut für mich, wenn ich eine Stücklistenvariante unterschlagen würde, weil ein Array falsch gefüllt war. Kunden sind da manchmal etwas nachtragend.
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: DCBROWSE mit Combobox

Beitrag von Rudolf »

Hallo Ewald,
wie wäre es mit einem zweiten Browser statt der Combobox ? ich mache es in meinen Stücklisten zumindest so, kommt auf den Platz drauf an den man hat.
Grüße
Rudolf
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 475
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: DCBROWSE mit Combobox

Beitrag von Ewald »

Hallo Rudolf,
genau so mache ich es auch seit Jahren. Es erscheint fallweise ein neues Fenster mit einem eigenen Browser für die Auswahl.
Die Lösung mit der Combobox habe ich in den Beispielen gesehen. Das hat einen gewissen Pfiff, und ich wollte das gerne mal probieren.
Zumal mir auf Anhieb etliche Einsatzmöglichkeiten eingefallen sind - wenn ich das stabil zum Laufen bringe.
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: DCBROWSE mit Combobox

Beitrag von Rudolf »

Hallo Ewald,
ich mache es im selben Dialog, also zwei Browser anzeigen, wenn man einen Satz bei den Artikeln wählt dann den zweiten Browser aktualisieren, geht in eXpress++ sehr einfach. Mir ist der Browser bei der Auswahl im eigenen Fenster lieber, er lässt sich einfacher befüllen und hat mehr Möglichkeiten. Ich habe außerdem auch meistens noch andere Elemente wie Buttons zum Neuanlegen, Ändern, Löschen einer Kategorie im Auswahlfenster. Aber wie gesagt, kommt auf den Platz an den man im Dialog hat.
Grüße
Rudolf
Antworten