Autor Beitrag
Jakane
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 257



BeitragVerfasst: Mi 12.06.13 14:49 
Hallo liebe Delphi-Helfer :)

ich habe mir eine kleine Tabellenkomponente gebaut (mit eurer Hilfe) und habe da eine Stringliste die Filterdaten speichert

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
type
  TJTabelle = class(TCustomPanel)
  private
    FFilter: TStringList;
    ...
    procedure SetFilter(Value: TStringList);
    ...
    property Filter: TStringList read FFilter write SetFilter;
    ...

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TJTabelle.SetFilter(Value: TStringList);
var
  f : Integer;
  Spalte, Wert : String;
begin
  // Variable initialisieren
  DBZ:= Chr(134);
  FFilter:= Value;
  // Daten filtern
  For f:= 0 to FFilter.Count - 1 do
  begin
    ...
  end;
end;


Jetzt füge ich dieser Liste eine Zeile hinzu, um meine Tabelle darauf filtern zu lassen, aber die Prozedur in der Komponente reagiert da gar nicht drauf :(
Also, der Debugger springt nichtmal auf die DBZ-Zuweissung

ausblenden Delphi-Quelltext
1:
  tabBedingung.Filter.Add('Bedingungstyp: ' Bedingungsart);					


Verrät mir jemand was ich falsch mache? ^^

Danke
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mi 12.06.13 16:10 
user profile iconJakane hat folgendes geschrieben Zum zitierten Posting springen:
Hallo liebe Delphi-Helfer :)

Jetzt füge ich dieser Liste eine Zeile hinzu, um meine Tabelle darauf filtern zu lassen, aber die Prozedur in der Komponente reagiert da gar nicht drauf :(


Also, wenn ich es richtig sehe, ist deine Property vom Typ TStringList. Du müsstest dieser eine neue StringList zuweisen, damit der Setter ausgelöst wird.
Das hinzufügen einer Zeile zu der existierenden StringList hat damit nichts zu tun und kann daher deinen Setter nicht aktivieren.

Habs nur auf die schnelle überflogen, aber ich denke, dass das dein Problem ist.
WasWeißDennIch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: Mi 12.06.13 16:33 
Ist es wirklich notwendig, dass man die Stringliste von außen ansprechen kann? Vielleicht könnte man auch darüber nachdenken, die Liste intern zu erzeugen und nur indirekten Zugriff über Methoden (AddFilter, DeleteFilter, ClearFilter etc.) zuzulassen.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 12.06.13 17:16 
Wenn eine Stringliste von außen zugewiesen wird, sollte nur der Inhalt daraus benutzt werden (FFilter.Assign(Value);), aber die Liste nicht selbst benutzt werden. Das gibt dann ganz hässliche Fehler, wenn der User draußen die Liste selbst (korrekt) freigibt...

user profile iconWasWeißDennIch hat folgendes geschrieben Zum zitierten Posting springen:
Ist es wirklich notwendig, dass man die Stringliste von außen ansprechen kann? Vielleicht könnte man auch darüber nachdenken, die Liste intern zu erzeugen und nur indirekten Zugriff über Methoden (AddFilter, DeleteFilter, ClearFilter etc.) zuzulassen.
Autschn, sowas macht man doch nicht.
Eine Stringlist hat ein OnChange, das kann man verwenden um bei einer Änderung etwas zu machen.
WasWeißDennIch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: Mi 12.06.13 17:51 
Und was hat das Eine mit dem Anderen zu tun? Wenn ich keine Notwendigkeit sehe, die Liste nach außen verfügbar zu machen, dann tu ich das auch nicht.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 12.06.13 20:38 
Da eine TStringList bereits die genannten Methoden hat, macht es keinen Sinn noch einmal welche zu schreiben, die darauf einerseits weiterleiten und andererseits dann auch noch manuell einzeln die Änderung weitergeben...
WasWeißDennIch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: Fr 14.06.13 18:44 
Das ist Deine Meinung, ich behalte mir trotzdem eine eigene vor, wenn' s recht ist.