-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by marabu,
8. Sep 2007
Richtig.
Der Code für das Event OnGetFormat() bezog sich auf Spaltenwerte der Form '150 Kb'.
Weg damit.
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by marabu,
8. Sep 2007
Hallo Steven,
die beiden Konstanten sind doch nur Relikte aus deinem anfangs geschilderten Problem, der Sortierung von Zeichenketten, die eine Zahl und ordinären Text enthalten. Sie haben nichts mit dem allgemeinen Sortierproblem (Telefonbuchordnung) zu tun.
Gute Nacht
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by marabu,
6. Sep 2007
Ja richtig, alle Bits werden um 16 Positionen nach links verschoben - das ist eine Multiplikation mit 2 hoch 16. Das funktioniert so, weil die Multiplikation, wie jede andere Rechenoperation auch, auf Registerebene per Shift realisiert wird. Manchmal musst du aufpassen, dass du den richtigen Basistyp verwendest. Ein Byte und SHL 8 löscht effektiv das Byte, da die Bits "am linken Rand" verloren...
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by marabu,
6. Sep 2007
Hi Tobias,
SHL - logical shift left? Damit schiebe ich die SORTID an die richtige Stelle:
+-------------+---------+-------------------------+
| Reserved | Sort ID | Language ID |
+-------------+---------+-------------------------+
31 20 19 16 15 0 bit
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by marabu,
5. Sep 2007
Hallo Steven,
du kannst das Event OnClickSort() deines Grids zum Sortieren der Spalten verwenden:
procedure TForm1.AdvStringGrid1ClickSort(Sender: TObject; ACol: Integer);
begin
with Sender as TAdvStringGrid do
SortByColumn(ACol);
end;
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by marabu,
4. Sep 2007
Hi Steven,
auch sorry, aber ich habe deinen Thread erst jetzt wieder gesehen. Ich schaue mir das an, sobald ich kann. Versprochen.
Gute Nacht
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by marabu,
25. Jul 2007
Hallo Steven,
ich fürchte du hast den Suffix aus meinem Code-Beispiel nicht richtig verstanden. Ausgelöst von deinem Beispiel mit den KByte-Werten wollte ich dir zeigen, dass über das Ereignis OnGetFormat() Spaltenwerte sogar dann numerisch korrekt sortiert werden können, wenn sie eingebettet in einem String mit definiertem Prefix oder Suffix stehen. Mit deinen Umlauten und deren Einsortierung...
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by marabu,
21. Jul 2007
Hallo Steven,
leider verstehe ich nicht was du vorhast. Kannst du das etwas ausführlicher erklären - eventuell mit Beispieldaten?
Freundliche Grüße
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by marabu,
17. Jul 2007
Hallo Steven,
ich habe meinen Code aus deinem Test-Projekt jetzt so angepasst, dass abgesehen von der vierten Spalte (3 wegen nullbasiertem Index) mit den Kilobyte-Angaben alle anderen Spalten nach Art der deutschen Telefonbücher sortiert werden. Diese Anpassungen wären überflüssig, wenn TMS mit der ThreadLocale arbeiten würde.
const // edit
SIZE_SUFFIX = ' Kb'; // so werden Angaben...
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by marabu,
16. Jul 2007
Hallo Steven,
wenn du meinen Code an TMS schickst, dann sollte TMS erkennen, dass sich die Flexibilität ihrer Komponente erhöht, wenn beim internen Aufruf von CompareString() GetThreadLocale() statt GetSystemDefaultLCID() verwendet wird. Nur so können alternative Sort Modi aktiviert werden ohne andere Anwendungen zu beeinflussen. Alle NT-basierten Windows-Versionen würden davon profitieren.
...
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by marabu,
16. Jul 2007
Hallo Steven,
ich habe mir dein Projekt angeschaut.
Mein Code-Beispiel war in erster Linie als Reaktion auf die Beiträge #6 und #7 entstanden. Du hattest dort eine Spalte mit Größenangaben und nachfolgendem ' Kb' eingeführt. Jetzt habe ich deinen ganzen Thread gelesen und erkenne ein ganz anderes Problem. Du möchtest nicht die Standardordnung (Ä nach A) für deine Strings, sondern die...
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by marabu,
15. Jul 2007
Hallo Steven,
jetzt habe ich meinen Code-Vorschlag mal getestet. Achte bitte auf meine Änderungen im Beitrag #8.
Beim Ereignis OnGetFormat() habe ich nur für eine Spalte spezielle Vorkehrungen getroffen. Wenn du mehrere solche Spalten hast, dann musst du weitere case label einfügen.
Die Sortierung habe ich der Einfachheit halber nur für eine Spalte und per Button gezeigt. Du wirst in...
-
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by marabu,
15. Jul 2007
Guten Morgen Steven.
Das Ereignis OnCustomCompare() wird nicht unbedingt benötigt.
Wenn du beim Ereignis OnGetFormat() die richtigen Angaben zu den einzelnen Spalten machst, dann sortiert das AdvStringGrid wie von selbst. Ich gehe von nicht-virtualisierten Zellinhalten aus:
const // edit
SIZE_SUFFIX = ' Kb'; // Anpassen!
SIZE_COLINDEX = 3; // Anpassen!