Browse Header mit Listbox und Sort

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Browse Header mit Listbox und Sort

Beitrag von Manfred »

Hi,

ich habe einen Array Browser, der es zuläßt, Spalten zu sortieren. Jetzt würde ich ganz gerne auch noch Filter über jede Spalte setzen können. Gibt es da evtl. unter express++ eine einfache Möglichkeit im Header einmal einen Sort und zusätzlich noch eine Listbox einzubauen, in der dann entsprechende Filter eingestellt werden können ala. Excel oder OO-Calc? In der Demo habe ich nichts gefunden.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Browse Header mit Listbox und Sort

Beitrag von Manfred »

hm,

also nicht. Schade.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
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: Browse Header mit Listbox und Sort

Beitrag von Tom »

Häng einfach in den LbClick- oder LbDblClick- oder sonst einen Slot des Column-Headings, den Du dafür verwenden willst, einen Codeblock, der dann an dieser Stelle ein Popup-Menü mit den Filtermöglichkeiten anzeigt. Und nach einer entsprechenden Auswahl filterst Du eben. Die Anwendungsmöglichkeiten sind zu vielfältig und unterschiedlich, um da einen Standard anzubieten. Es gibt auch viele Möglichkeiten, um ein Array zu "filtern". Denkbar wäre eine Veränderung des Skip-Blocks des Browses, aber einfacher ist es i.d.R., eine Kopie des Arrays anzulegen, das nur die "gefilterten" Elemente enthält.

Code: Alles auswählen

DCBROWSECOL ... OBJECT oColumn EVAL {|o|o:Heading:LbDblClick := {||oMeinFilterMenue:Popup(oColumn,{1,1})}}

DCSUBMENU oMeinFilterMenue
DCMENUITEM 'Nur dieser Kunde' PARENT oMeinFilterMenue ACTION {||FilterArray(oBrowse,aArray),DC_GetBrowArray(oBrowse,aArray),oBrowse:RefreshAll()}
usw.

Edit: Code korrigiert.
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Browse Header mit Listbox und Sort

Beitrag von Manfred »

Hi Tom,

auf die Idee mit dem PopUp Menu bin ich auch vor ca. 30 Minuten gekommen. Ich dachte zu Anfang halt nur an diesen schönen Effekt mit dem Header.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
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: Browse Header mit Listbox und Sort

Beitrag von Tom »

Hallo, Manfred.

Um das Heading entsprechend zu gestalten, müsstest Du eine eigene XbpCellGroup-Klasse schreiben (bzw. vom Original ableiten), die die Header entsprechend zeichnet und dann auch adäquat reagiert. Das ist keine triviale Aufgabe. Schau Dir einfach mal in _DCXBROW.PRG (..\Source\Dclipx) an, was Roger getan hat, um bei Array-Sortierungen in Browses die kleinen Pfeile (Marlett-Character) anzuzeigen. Dann bekommst Du eine Ahnung. :wink:
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Browse Header mit Listbox und Sort

Beitrag von Manfred »

Ah, Danke Tom für den kleinen Hieb auf den Hinterkopf
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Browse Header mit Listbox und Sort

Beitrag von AUGE_OHR »

Manfred hat geschrieben:auf die Idee mit dem PopUp Menu bin ich auch vor ca. 30 Minuten gekommen. Ich dachte zu Anfang halt nur an diesen schönen Effekt mit dem Header.
du kannst doch beides haben wenn du:
1.) die Position und Grösse des Header (XbpCellGroup) hast
2.) dein Popup "genau" über den Header legst, Popup:Show() und du es dann "aufklappst"
3.) mit Popup:hide() wird es danach "verborgen" und könnte für den "nächsten" Header neu verwendet werden.
gruss by OHR
Jimmy
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: Browse Header mit Listbox und Sort

Beitrag von Tom »

Jimmy hat recht. Im Prinzip könntest Du einfach einen mehrzeiligen Header erzeugen, bei dem Zeile 2 und 3 (oder so) leer bleiben, und in diesen Bereich des Headers eine Listbox packen, ihn also teilweise damit überlagern. Positionierung und Resizing dürften nicht ganz umkompliziert werden, aber prinzipiell ist das machbar. Vermutlich müsstest Du bei der Verwendung von eXpress++ die Listboxen blind bzw. hidden erzeugen und dann in der EVAL-Klausel von DCREAD entsprechend positionieren. Einfacher wäre es, die Listboxen direkt über den Headern anzuzeigen. :wink:
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Browse Header mit Listbox und Sort

Beitrag von Manfred »

Hm,

das mit den Listboxen über dem Header hatte ich mir auch schon überlegt, aber ich bin mir nicht sicher, wie kompliziert es ist, die Listbox dann der Breite der darunterliegenden Browserspalte anzupassen, wenn diese geändert werden sollte. Und das brauche ich sicherlich.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
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: Browse Header mit Listbox und Sort

Beitrag von Tom »

Dafür müsstest Du Deine eigene Resize-Funktion bauen, die nach Rogers implizitem Resize aufgerufen wird, falls Du mit der AUTORESIZE-Klausel arbeitest. Du müsstest Position und Größe des Browses und die Größen aller Spalten (oBrowse:GetColumn(n):CurrentSize()) abfangen und darauf reagieren. Keine leichte Aufgabe, aber eine schöne, bei der man viel lernen kann. :wink:
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Browse Header mit Listbox und Sort

Beitrag von Manfred »

Autsch,

ich dachte eigentlich nur an die Breitenänderung durch Doppelklick im Header. An Autoresize, bzw. resize hatte ich noch gar nicht gedacht. Das muß ja auch berücksichtigt werden.....
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Antworten