Seite 1 von 1

DCBROWSE und tagenable [ERLEDIGT]

Verfasst: Di, 28. Mai 2019 8:15
von Manfred
ich habe gerade mal versucht das auszuprobieren und bin natürlich direkt auf die Nase gefallen. Kann mir jemand mal erklären, wie das mit einem ARrayBrowse zu bauen ist? Nur tagenable angeben scheint ja wohl nicht zu genügen. Was muß man mit den anderen Parametern machen? Tagcolor klingt ja noch einleuchtend, aber was ist mit tagelement und wann wählt man welchen tagmode?

Re: DCBROWSE und tagenable

Verfasst: Di, 28. Mai 2019 9:42
von Tom
In ...\Samples\Browse zeigt Roger mit mehreren Beispielen, wie das geht. Einfach mal "TAGENABLE" in den Quellcodes dort suchen.

Re: DCBROWSE und tagenable

Verfasst: Di, 28. Mai 2019 9:45
von Manfred
Tom,
das habe ich gemacht. Deshalb ja auch meine Frage wozu was gut ist. ICh bekomme jedesmal, wenn ich ins Browse klicke eine Fehlermeldung bzgl. Arrayindizierung wäre fehlerhaft. Was muß ich da wo angeben?

Re: DCBROWSE und tagenable

Verfasst: Mi, 29. Mai 2019 7:30
von Wolfgang Ciriack
Hallo Manfred,
ich benutze das so:

Code: Alles auswählen

@..DCBROWSE....
     TAGENABLE ;
     TAGMODE DCGUI_TAGMODE_CLEAR ;
     TAGCOLOR GRA_CLR_YELLOW,GRA_CLR_DARKGRAY ;
     TAGELEMENT ARR_MARKED
Bei mir ist hier z.B. ARR_MARKED definiert als 11, d.h. das 11. Element in einem Array.
Den TAGMODE musst du einfach mal ausprobieren, TAGMODE_CLEAR wirkt m.E. so wie unterm Windows Explorer.
Wenn du das bei Datenbanken benutzen willst, entfällt das TAGELEMENT, dann musst du vorher
mit DC_RecTagArray(aMyRecTag) ein Array definieren, das wird dann benutzt, um die Satznummern zu speichern.

Re: DCBROWSE und tagenable

Verfasst: Mi, 29. Mai 2019 7:56
von Manfred
Hi Wolfgang,
das ist ja alles ganz toll, aber woher weißt Du was Du da eintragen mußt? Ich kann in der Beschreibung nichts dazu lesen, was zur Auswahl und wenn dann auch wofür steht?. Außerdem wird beim compilieren angemeckert, das ARR_MARKED unbekannt ist. Was muß ich einbinden?

Re: DCBROWSE und tagenable

Verfasst: Mi, 29. Mai 2019 9:01
von Tom
ARR_MARKED ist ein #define von Wolfgang. Einfach irgendeine Zahl nehmen, die einem vorhandenen Arrayelement entspricht, etwa die 1.

Re: DCBROWSE und tagenable

Verfasst: Mi, 29. Mai 2019 9:13
von Manfred
hatte ich auch gemacht. Es klappt nicht. Also lasse ich es sein und widme mich wieder anderen Dingen. :angry4:

Re: DCBROWSE und tagenable

Verfasst: Mi, 29. Mai 2019 9:38
von Martin Altmann
Manfred,
ich habe keine Ahnung von eXpress++ - aber ich vermute mal, dass die von Wolfgang genutzte 11 Arrayspalte keine Arrayspalte mit eigentlichen Daten drin ist, sondern eine zusätzlich hinzugefügte, die nur für das Markierungsflag genutzt wird (und in der nur .f. bzw. .t. stehen - je nachdem, ob die Zeile markiert ist oder nicht).
Wenn dem so ist, müsstest Du bei Deinem Array eine zusätzliche Spalte dafür vorsehen.

Viele Grüße,
Martin

Re: DCBROWSE und tagenable

Verfasst: Mi, 29. Mai 2019 9:57
von Tom
Falsch, sorry. "TAGELEMENT" verweist auf ein Element des zu browsenden Arrays, das .T. oder .F. enthält, je nachdem, ob es getaggt ist oder nicht. Wenn Du dieses Array nimmst:

Code: Alles auswählen

a := {{"a","b","c",.F.},{"e","f","g",.F.}}
, dann wäre TAGELEMENT die Nummer 4, also die Spalte, die je nach Tagging .T. oder .F. enthält - in dieser Spalte setzt eXpress++ die Markierung dafür, dass die Zeile markiert ist. Das ist anders als bei den ELEMENT-Klauseln etwa bei DCSAYGET ... COMBO.

Re: DCBROWSE und tagenable

Verfasst: Mi, 29. Mai 2019 9:58
von Tom
Und genau das kannst Du dann irgendwo auswerten. Alle Arrayelemente, die in Spalte 4 ein .T. enthalten, sind markiert.

Sorry wegen der falschen Angabe. Ich habe mir schon vor Jahren selbst ein Tagging-System zu DCBROWSE gebaut, das ich bevorzugt verwende.

Re: DCBROWSE und tagenable

Verfasst: Mi, 29. Mai 2019 10:18
von Martin Altmann
Äh, Tom: Das war doch genau meine Aussage!?
Wenn Du Felder aus einer DBF in ein Array überführst, das Du browsen möchtest, dann müsstest Du zusätzlich zu den Spalten aus der DBF eine Spalte für die Markierung dazu nehmen (die Entscheidung, ob markiert oder nicht wird ja nicht in der DBF stehen - macht dort ja nicht unbedingt Sinn).

Viele Grüße,
Martin

Re: DCBROWSE und tagenable

Verfasst: Mi, 29. Mai 2019 10:22
von Manfred
Lange Rede kurzer Sinn, das habe ich jetzt auch verstanden, aber auch eine eigene Lösung gebaut. Diese basiert auch auf eine Zusatzspalte. Irgendwie denke ich war die Anleitung nicht ganz so verständlich für mich.

Re: DCBROWSE und tagenable [ERLEDIGT]

Verfasst: Mi, 29. Mai 2019 11:01
von Tom
@Martin: Das "Falsch" bezog sich auch nicht auf Dich, sondern auf mich selbst. Allerdings kann das Tagging-System von DCBROWSE auch mit Tabellen umgehen, ohne dass man sie in ein Array umkopieren muss.

@Manfred: Man kann natürlich auch mit Checkbox-Spalten und so arbeiten. Aber das Tagging-System kann noch ein bisschen mehr.

Re: DCBROWSE und tagenable [ERLEDIGT]

Verfasst: Mi, 29. Mai 2019 11:08
von Manfred
Tom,
ich erkenne im Moment nicht die Tragweite, die mit Tagging erreicht werden könnte. Evtl. die Farbgebung dabei. Was wäre denn noch so interessant daran?

Re: DCBROWSE und tagenable [ERLEDIGT]

Verfasst: Mi, 29. Mai 2019 11:30
von Koverhage
Manfred,
bei einer Tabelle diverse Sätze markieren und kopieren/verschieben/löschen
Da gibt es viele Möglichkeiten
z,B. Export von selektierten Sätzen nach Excel / CSV Datei und und und

Re: DCBROWSE und tagenable [ERLEDIGT]

Verfasst: Mi, 29. Mai 2019 11:33
von Manfred
das ist mir schon klar, da wird sich eine eigens programmierte Variante auch nicht stark von unterscheiden. Die Datenmenge muß ich ja verarbeiten und da sollte es egal sein, ob ich die über Tagenable oder über Selected (slebstgebaut) markiere. Am Ende muß ich ja dem Programm sagen, was es mit der Menge markierter Daten zu tun hat. Und das muß ja wieder händisch eingebaut werden.

Re: DCBROWSE und tagenable [ERLEDIGT]

Verfasst: Mi, 29. Mai 2019 11:41
von Koverhage
Außer , dass das Selbstgebaute mehr Aufwand ist.
Aber Jede Jeck is anders. und macht es so wie er denkt ;-)

Re: DCBROWSE und tagenable [ERLEDIGT]

Verfasst: Mi, 29. Mai 2019 11:46
von Manfred
also auf den ersten Blick sieht es nicht nach viel mehr aus. Ich muß bei beiden eine Spalte hinzufügen. Ich muß bei beiden die Maustaste drücken. Allerdings bei meiner Variante nur die Maustaste doppelt klicken, bei Rogers muß noch eine Zusatztaste parallel gedrückt werden. Ich muß bei beiden eine Routine schreiben, die angeworfen werden muß, wenn die selektierten Sätze weiterverarbeitet werden sollen.
Hm, ich weiß gar nicht warum ich nicht direkt auf die eigene Variante gekommen bin? Zumindest was meinen Anwendungsfall angeht.

Re: DCBROWSE und tagenable [ERLEDIGT]

Verfasst: Mi, 29. Mai 2019 12:25
von Wolfgang Ciriack
Hallo Manfred,
du must aber bei 20 Datensätzen 20 mal doppelt klicken, bei TAGGING klickst du den ersten mit Strg Taste gedrückt an, dann auf den 20. mit Shift-Mausklick und alle sind markiert.
Eben so wie im Windows Explorer. :D
Sorry, mit dem ARR_MARKED, ich dachte, dass ist klar, dass es sich um ein #define handelt. :roll:

Re: DCBROWSE und tagenable [ERLEDIGT]

Verfasst: Mi, 29. Mai 2019 12:27
von Manfred
stümmt. Aber was ist (so wie in meinem Fall) wenn man nur vereinzelt welche anklickt? Dann relativiert sich das schnell. :blob8:
Das mit dem #define war schon klar, aber nicht das es von Dir war.

Re: DCBROWSE und tagenable [ERLEDIGT]

Verfasst: Mi, 29. Mai 2019 12:29
von Wolfgang Ciriack
Tja, jeder wie er will, aber du wolltest ja wissen, wie das mit dem Tagging geht

Re: DCBROWSE und tagenable [ERLEDIGT]

Verfasst: Mi, 29. Mai 2019 12:33
von Manfred
Ich wollte es wissen. Ich wußte ja nicht wie es klappt und deshalb meine Anfrage. Da ich jetzt weiß, was man alles selbst erledigen muß, bin ich zu dem Schluß gekommen, das man es auch selbst programmieren kann. Ich habe ja bisher auf meine Frage hier was evtl. revolutionär an Rogers Methode wäre keine Antwort erhalten. Und die Demo hat mich dann doch nicht so sehr überzeugt, dass man unbedingt Rogers Variante nehmen muß/sollte. Bei anderen ist es sicherlich keine Frage, aber hier....

Re: DCBROWSE und tagenable [ERLEDIGT]

Verfasst: Mi, 29. Mai 2019 13:28
von Tom
Wenn Du nur eine Markierungsspalte brauchst, bist Du mit dem Checkbox-Modell und einem an die DataArea geknüpften LbClick-Slot tatsächlich besser bedient.

Re: DCBROWSE und tagenable [ERLEDIGT]

Verfasst: Mi, 29. Mai 2019 13:35
von Manfred
womit wir wieder beim Thema sind. Wann wäre es sinnvoll Rogers Methode zu nutzen? Ich bin ganz Ohr.

Re: DCBROWSE und tagenable [ERLEDIGT]

Verfasst: Mi, 29. Mai 2019 15:12
von Wolfgang Ciriack
Na wenn du das Standardverhalten von Windows in deiner Anwendung möchtest.