Seite 3 von 3

Re: Neue Klasse zum Sortieren im Endlosformular

BeitragVerfasst: Mo 22. Jun 2015, 10:10
von Josef Pötzl
Hallo!

Ah, Split(SplitString(0), " ") hab ich übersehen.
Dann gibt es aber ein Problem bei Feldnamen mit Leerzeichen. Klar, die sollte man nicht verwenden, was ist aber, wenn sie doch vorhanden sind?

Ich finde die Variante mit der zusätzlichen optionalen OrderBy-Angabe besser, da die keinen "Regelbruch" innerhalb eines Parameter-Wertes hat.

Was ich mir auch noch vorstellen könnte:

Sobald "ASC" oder "DESC" im String vorgegeben sind, wird nichts dynamisch angefügt. Ansonsten wird Desc ergänzt, wenn absteigend sortiert werden soll.

Prinzip:
Statt wie bisher:
Code: Alles auswählen
.Add Me.labFamilienname, "Familienname [DESC], Vorname [DESC], LaenderCode, Ort, PLZ, Strasse"

=> anzupassende Datenfelder für Richtungswechsel sind gekennzeichnet.

Nun:
Code: Alles auswählen
.Add Me.labFamilienname, "Familienname, Vorname, LaenderCode ASC, Ort ASC, PLZ ASC, Strasse ASC"

=> Felder, bei denen die Richtung nicht geändert werden darf, sind gekennzeichnet.


Generell ist noch zu überlegen:
Will man eventuell bei bestimmten "Spalten-Überschriften" den Richtungswechsel beim Sortieren auch deaktivieren können?
Sobald in der Definition des String eine einheitliche Regel verwendet wird, kann man das umsetzen.

LG
Josef

Re: Klasse zum Sortieren im Endlosformular

BeitragVerfasst: Mo 22. Jun 2015, 12:38
von Andreas Vogt
Hallo,
was das Problem bei Formularen mit Layout angeht, das lässt sich doch einfach lösen indem man die Top-Position des SortSymbolLabels ändert.
In der Prozedur SetSortSymbolPos ans Ende angehängt:
m_SortSymbolLabel.Top = ControlRef.Top

Dann noch den Rahmen des Labels auf unsichtbar stellen und fertig.
Gruß Andreas

Re: Klasse zum Sortieren im Endlosformular

BeitragVerfasst: Mo 22. Jun 2015, 12:58
von Josef Pötzl
Das Problem mit dem Layout ist nicht die Top-Position, sondern die Left-Position, wenn das Formular vergrößert wird.

LG
Josef

Re: Klasse zum Sortieren im Endlosformular

BeitragVerfasst: Mo 22. Jun 2015, 13:17
von Andreas Vogt
Ein Problem ist zumindest dieser Aufruf:
SetSortSymbolPos m_ActiveSortingControl
Weil m_ActiveSortingControl nirgends gesetzt wird und daher die nachfolgende Prozedur abgebrochen wird.

Andreas

Re: Klasse zum Sortieren im Endlosformular

BeitragVerfasst: Mo 22. Jun 2015, 16:25
von Josef Pötzl
m_ActiveSortingControl wird gesetzt, sobald auf ein Label geklickt wird.
Wenn im Formular eine STandardsortierung aktiv ist, muss das noch der Klasse mitgeteilt werden.
.. entweder als optionaler Parameter in der Add-Methode oder eventuell als extra Property oder man nimmt einfach den erste Add-Eintrag als Standard an.

Das Problem mit dem Layout hat aber damit nichts zu tun. Das entsteht, weil ich keinen Code fand, die exakte Position der "angehefteten" Steuerelemente zu bestimmen, wenn das Formular vergrößert wurde.

LG
Josef

Re: Klasse zum Sortieren im Endlosformular

BeitragVerfasst: Mo 22. Jun 2015, 16:34
von Andreas Vogt
Ja - aber wenn ich das Form resize oder maximiere wird es eben nicht mehr gesetzt und die Referenz ist Nothing.

Re: Klasse zum Sortieren im Endlosformular

BeitragVerfasst: Mo 22. Jun 2015, 16:53
von Josef Pötzl
m_ActiveSortingControl wird derzeit nicht beim Einstellen der Controls gesetzt.
m_ActiveSortingControl ist derzeit nur vorhanden, sobald mindestens 1x auf ein Label geklickt wurde.

=> daher schrieb ich, dass da noch eine Einstellung bei Add oder anderswo benötigt wird, um die Standard-Formulareinstellung an die Klasse weiterzugeben.

ABER: Das hat nichts mit dem Layout-Problem zu tun. Um das zu testen, muss man nur einmal auf ein Label klicken und danach das Formular vergrößern.
Im Formular fKontaktListe funktioniert das bei mir. Im fKontaktListe_mit_Layout komme ich nur annähernd an die Position.
Das Problem ist nicht das Antriggern der Positionierung sondern die Positionierung selbst.