Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
Delphi XE2 Professional
|
Re: Immer mehrere CheckBoxen = true
24. Jan 2010, 16:48
Zitat von alzaimar:
Ich persönlich würde aber die erste Variante
Danke alzaimer, die Lösunge finde ich natürlich genial. habe ich jetzt auch in diese Richtung umgebaut. Aber mal ne Frage zum Aufbau. Ich habe noch ein wenig mehr Auswahl Möglichkeiten. Siehe Bild im Anhang. Kann man den folgenden Code zu der Lösung nicht irgendwie vereinfachen.
Es funktioniert, aber war schon echt sehr Aufwendig und fertig bin ich auch noch nicht.
Delphi-Quellcode:
{************************************}
{ Suchfunktionen Edit }
{************************************}
procedure TFDatenauswertung.SucheCallbackEdit;
begin
case Zentralentyp of
0..3:
begin
case cbLinking.ItemIndex of
-1://Keine Verknüpfung
begin
case cbSearchOne.ItemIndex of
0://Ereignis Suche
begin
case cbLinkingAfterwards.ItemIndex of
0://Nicht Verknüpft nur 1 Ereignistext
begin
vst.IterateSubtree(nil,SucheCallbackEdit1,nil);
end;
1://Oder Verknüpft 2 Ereignistexte
begin
vst.IterateSubtree(nil,SucheCallbackEdit2,nil);
end;
2://Und Verknüpft 2 Ereignistexte
begin
vst.IterateSubtree(nil,SucheCallbackEdit3,nil);
end;
end;
end;
1://Teilnehmer Suche
begin
case cbLinkingAfterwards.ItemIndex of
0://Nicht Verknüpft nur 1 Ereignistext
begin
vst.IterateSubtree(nil,SucheCallbackEdit4,nil);
end;
1://Oder Verknüpft 2 Ereignistexte
begin
vst.IterateSubtree(nil,SucheCallbackEdit5,nil);
end;
2://Und Verknüpft 2 Ereignistexte
begin
vst.IterateSubtree(nil,SucheCallbackEdit6,nil);
end;
end;
end;
2://Bereich Suche
begin
case cbLinkingAfterwards.ItemIndex of
0://Nicht Verknüpft nur 1 Ereignistext
begin
vst.IterateSubtree(nil,SucheCallbackEdit7,nil);
end;
1://Oder Verknüpft 2 Ereignistexte
begin
vst.IterateSubtree(nil,SucheCallbackEdit8,nil);
end;
2://Und Verknüpft 2 Ereignistexte
begin
vst.IterateSubtree(nil,SucheCallbackEdit9,nil);
end;
end;
end;
end;
end;
1://Spalten ODER Verknüpfung
begin
case cbSearchOne.ItemIndex of
0://Spalte 1 Ereignis Suche
case
cbSearchTwo.ItemIndex of
0://Oder Teilnehmer Suche
begin
case cbLinkingAfterwards.ItemIndex of
0://Nicht Verknüpft nur 1 Ereignistext
begin
vst.IterateSubtree(nil,SucheCallbackEdit10,nil);
end;
1://Oder Verknüpft 2 Ereignistexte
begin
vst.IterateSubtree(nil,SucheCallbackEdit11,nil);
end;
2://Und Verknüpft 2 Ereignistexte
begin
vst.IterateSubtree(nil,SucheCallbackEdit12,nil);
end;
end;
end;
1://Oder Bereich Suche
begin
begin
case cbLinkingAfterwards.ItemIndex of
0://Nicht Verknüpft nur 1 Ereignistext
begin
vst.IterateSubtree(nil,SucheCallbackEdit13,nil);
end;
1://Oder Verknüpft 2 Ereignistexte
begin
vst.IterateSubtree(nil,SucheCallbackEdit14,nil);
end;
2://Und Verknüpft 2 Ereignistexte
begin
vst.IterateSubtree(nil,SucheCallbackEdit15,nil);
end;
end;
end;
end;
end;
1://Teilnehmer Suche
case
cbSearchTwo.ItemIndex of
0://Oder Ereignis Suche
begin
end;
1://Oder Teilnehmer Suche
begin
end;
2://Oder Bereich Suche
begin
end;
end;
//usw. für die diversen Möglichkeiten. Und dann ja noch zur jeder Möglichkeit einen der folgenden Suchfuntionen.
procedure TFDatenauswertung.SucheCallbackEdit11(Sender: TBaseVirtualTree; Node: PVirtualNode; Data: Pointer; var Abort: Boolean);
var
DatenMB : TOMBSerie;
begin
DatenMB := TOMBSerie(VST.GetNodeData(Node)^);
VST.IsVisible[Node] := ((EDManFilter1.Text='') and (EDManFilter2.Text='')) or
(Pos(LowerCase(EDManFilter1.Text), LowerCase(DatenMB.Ereignis))>0) or
(Pos(LowerCase(EDManFilter1.Text), LowerCase(DatenMB.Teilnehmer))>0) or
(Pos(LowerCase(EDManFilter2.Text), LowerCase(DatenMB.Ereignis))>0) or
(Pos(LowerCase(EDManFilter2.Text), LowerCase(DatenMB.Teilnehmer))>0);
PBFortschritt.Position := PBFortschritt.Position +1;
if PBFortschritt.Position = PBFortschritt.Max then
PBFortschritt.Position := 0;
end;
Daraus würden später 29 Möglichkeiten und 29 Suchfunktionen.
Gruß Jens
Jens Hartmann Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
|