AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DevExpress Grid: Filter mit Sonderzeichen

Ein Thema von Nersgatt · begonnen am 4. Mär 2015 · letzter Beitrag vom 1. Mai 2015
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Nersgatt
Nersgatt

Registriert seit: 12. Sep 2008
Ort: Emlichheim
693 Beiträge
 
Delphi 10.1 Berlin Professional
 
#11

AW: DevExpress Grid: Filter mit Sonderzeichen

  Alt 28. Apr 2015, 15:39
Der Support von DevExpress schlägt auch die Verwendung von OnFilterRecord vor.
Ich werde erst mal bei der Normalisierung der Daten mit der Function bleiben. Da frage ich mich, ob man an meiner Funktion noch etwas Geschwindigkeit rausholen kann. Aber dafür mache ich ein eigenes Topic auf.
Jens
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#12

AW: DevExpress Grid: Filter mit Sonderzeichen

  Alt 29. Apr 2015, 07:31
OnFilterRecord ist doch sauber, dort rufst Du deine 'CompareNormalized' Funktion auf. Der nette Nebeneffekt: Du kannst die Funktion nicht nur zum Vergleich / Filtern sondern auch noch zum Sortieren verwenden.

Wo ist dein Problem? Das kriegen wir auch noch gebacken (himitsu hats ja schon gesagt).

Delphi-Quellcode:
Function CompareNormalized(a,b : String) : integer;
begin
  Result := CompareText(Normalized(a), Normalized(b));
end;

Function Normalized (const a : String) : String;
Var
  c : Char;

Begin
  Result := '';
  for c in a do Result := NormalizedChar(c);
End;

Function NormalizedChar (c : Char) : Char;
Begin
  if c='Łthen result := 'L'
  else if c='ąthen result := 'a';
  ...
  else result := c;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Nersgatt
Nersgatt

Registriert seit: 12. Sep 2008
Ort: Emlichheim
693 Beiträge
 
Delphi 10.1 Berlin Professional
 
#13

AW: DevExpress Grid: Filter mit Sonderzeichen

  Alt 29. Apr 2015, 07:48
OnFilterRecord ist doch sauber, dort rufst Du deine 'CompareNormalized' Funktion auf. Der nette Nebeneffekt: Du kannst die Funktion nicht nur zum Vergleich / Filtern sondern auch noch zum Sortieren verwenden.

Wo ist dein Problem? Das kriegen wir auch noch gebacken (himitsu hats ja schon gesagt).
Ich habe mir OnFilterRecord nochmal genauer angeschaut. Leider ist das wirklich nicht tauglich, denn das Ereignis wird nur für jeden Record einmal aufgerufen, der bereits in der gefilterten Ergebnismenge ist. Wenn ich somit nach 'L*' filtere, ist der Record mit Ł gar nicht mehr in der Ergebnismenge und OnFilterRecord wird für diesen Datensatz nicht aufgerufen.

Aber ich beschäftige mich nochmal mit der Ereignissen von DataController.Filter. Da kann ich vielleicht einhaken.
Jens
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#14

AW: DevExpress Grid: Filter mit Sonderzeichen

  Alt 29. Apr 2015, 09:15
Ich sehe gerade, OnFilterRecord im Grid ist wohl auch nicht das richtige (ich habe aber ein ziemlich altes TcxGrid).
Echt kniffelig.

Ich rudere zurück. Ich würde das auch über die View lösen, allerdings über eine zweite Spalte (z.B. 'NormalisiertesFeld'). Im DataController.Filter.OnBeforeChanged würde ich dann den aDataSet.Filter so setzen:

Delphi-Quellcode:
ADataset.Filter := StringReplace(aFilterText,'PolnischesFeld','NormalisiertesFeld',[]);
aDataset.Filter := True;
So siehst Du im Grid die polnischen Namen, kannst aber über 'L' und 'a' filtern.
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#15

AW: DevExpress Grid: Filter mit Sonderzeichen

  Alt 29. Apr 2015, 18:09
Du könntest es doch auch erst im DisplayValue normalisieren?
Das hab ich grade mal ausprobiert, indem ich OnGetDisplayValue implementiert habe. Leider klappt das nicht. Das Grid filtert wohl nicht den DisplayValue, sondern auf den realen Wert.
Es gibt eine Option dafür

xyzView.DataController.Options.dcoSortByDisplayTex t := True

Greetz Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Benutzerbild von Nersgatt
Nersgatt

Registriert seit: 12. Sep 2008
Ort: Emlichheim
693 Beiträge
 
Delphi 10.1 Berlin Professional
 
#16

AW: DevExpress Grid: Filter mit Sonderzeichen

  Alt 30. Apr 2015, 06:38
Du könntest es doch auch erst im DisplayValue normalisieren?
Das hab ich grade mal ausprobiert, indem ich OnGetDisplayValue implementiert habe. Leider klappt das nicht. Das Grid filtert wohl nicht den DisplayValue, sondern auf den realen Wert.
Es gibt eine Option dafür

xyzView.DataController.Options.dcoSortByDisplayTex t := True
Wirkt sich aber nur auf die Sortierung aus, nicht auf die Filterung.
Jens
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#17

AW: DevExpress Grid: Filter mit Sonderzeichen

  Alt 30. Apr 2015, 12:49
Das Problem mit dem Filter habe ich so gelöst, das ich eine weitere unsichtbare Spalte(mit dem DisplayValue) habe
über die ich dann den Filter laufen lasse.
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#18

AW: DevExpress Grid: Filter mit Sonderzeichen

  Alt 30. Apr 2015, 14:10
Wie machst Du das, das Du im FilterRow über der z.B. Spalte 'Namen' die Filterkriterien eintippst, aber er die unsichtbare Spalte zum Filtern verwendet?
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#19

AW: DevExpress Grid: Filter mit Sonderzeichen

  Alt 30. Apr 2015, 16:28
Wie machst Du das, das Du im FilterRow über der z.B. Spalte 'Namen' die Filterkriterien eintippst, aber er die unsichtbare Spalte zum Filtern verwendet?
Gar nicht , ich benutze die FilterRow nicht; Ich habe ein Textfeld was über alle relevanten Feld mit OR sucht, d.h. ich setze den Filter dann manuell im Programmcode.

Aber was spricht dann dagegen die Orginal-Column auszublenden und die Column mit dem DisplayText einzublenden und damit das suchen über die FilterRow zu ermöglichen ?!
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#20

AW: DevExpress Grid: Filter mit Sonderzeichen

  Alt 30. Apr 2015, 16:45
Also na ja.. In Polen sollte man schon die polnische Schreibweise sehen.
Es ist ja eher eine Krücke für Leute, die in polnischen Namen mit Hilfe einer deutsche Tastatur suchen wollen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz