Einzelnen Beitrag anzeigen

Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#15

Re: Immer mehrere CheckBoxen = true

  Alt 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
Miniaturansicht angehängter Grafiken
suche_212.gif  
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat