AGB  ·  Datenschutz  ·  Impressum  







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

Immer mehrere CheckBoxen = true

Ein Thema von Jens Hartmann · begonnen am 22. Jan 2010 · letzter Beitrag vom 24. Jan 2010
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: Immer mehrere CheckBoxen = true

  Alt 22. Jan 2010, 21:50
Jetzt nur mal zum Verständnis, denn mir erschließt sich der Sinn und daher auch dein Problem nicht.

Meinst du sowas wie angehängt ist oder etwas komplett anderes?

Edit: Ok das, was ich angehängt habe, ist etwas ähnliches wie das von Hawkeye.
Angehängte Dateien
Dateityp: zip project1_140.zip (212,7 KB, 5x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

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

Re: Immer mehrere CheckBoxen = true

  Alt 22. Jan 2010, 21:58
War halt so ne Idee, wenn ich es mir richtig überlege, wäre es vieleicht besser die Controls nicht zu deaktivierst. Ich weiß es aber auch nicht so genau. Mit einer RadioGroup geht eigendlich auch nicht. Ich versuche die Situation mal ein bißchen besser zu beschreiben.

Die CheckBoxen nutze ich einmal um in einer Tabelle eine ODER-Suchfunktion durchzuführen. Das heißt, ich Hake dort die Tabellenspalten an, in denen gesucht werden soll, und das ODER-Verknüpft. Also kann das Ergebniss in Spalte 1, ODER Spalte 2 stehen, es wird gefunden.

Über eine weitere RadioGroup, kann ich von ODER auf UND Suche umstellen. Dabei möchte ich, das immer 2 Spalten durchsucht werden. Somit muss ich ja realisieren, das nie alle drei, aber mindestens 2 CheckBoxen gesetzt werden. Setze ich die RG auf Index 1, werden automatisch die CB1 und CB2 Checked. Jetzt soll der USER aber die Möglichkeit haben, auch zu sagen, ich möchte aber UND Suchen in Spalte 1 und 3, also CB1 und CB3 Checked. Dann darf aber CB2 nicht CHECKED sein. Klick jetzt der USER in CB2 um diese zu Checken, kann ich ja nicht wissen, welcher der USER von CB1 und CB2 Unchecken will.

(siehe Anhang)

Man ist das kompliziert.

Gruß Jens
Miniaturansicht angehängter Grafiken
suche_134.gif  
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

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

Re: Immer mehrere CheckBoxen = true

  Alt 22. Jan 2010, 22:02
Zitat von Matze:
Jetzt nur mal zum Verständnis, denn mir erschließt sich der Sinn und daher auch dein Problem nicht.
Genau, Danke Matze. Das war genau das was ich meinte. Und ich wüsste nicht, wie man das anders realisieren sollte bzw. könnte.

Zitat von Hawkeye219:
ich würde ja eher eine TRadioGroup mit 3 Elementen und passender Beschriftung wählen, aber dennoch:
Ich denke das Problem, ist die einmal ODER und ein ander mal die UND Verknüpfung.
Aber trotzdem danke für die Hilfe. Ich werde das jetzt mal versuchen umzusetzen.

MFG

Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#14

Re: Immer mehrere CheckBoxen = true

  Alt 23. Jan 2010, 02:22
3x Combobox:
1. combobox.Items = 'Spalte-1, Spalte-2, Spalte-3'
2. Combobox.Items = 'OR, AND'
3. combobox.Items = 'Spalte-1, Spalte-2, Spalte-3'

Das ist die einfachste Lösung und auch die, die am schönsten zu bedienen ist.

Wenn du drei Checkboxen haben willst, dann (Die Checkboxen sind in einer TList 'CheckBoxes') so:
Delphi-Quellcode:
Procedure TForm1.AllCheckBoxesGetThisOnClick(Sender : TObject)
Var
  checkedCount : Integer;
  i : Integer;
  lastCheckedTag : Cardinal;
  lastChecked : Integer;

Begin
  (Sender as TCheckBox).Tag := GetTickCount;
  lastChecked := -1;
  checkedCount := 0;
  For i := 0 to CheckBoxes.Count - 1 do
    if TCheckBox(CheckBoxes[i]).Checked then begin
      inc (checkedCount);
      if (lastChecked =-1) or (lastCheckedTag > TCheckBox(CheckBoxes[i]).Tag) Then Begin
        lastCheckedTag := TCheckBox(CheckBoxes[i]).Tag;
        lastChecked := i;
      end
    end;

  If checkedCount>2 then
    TCheckBox(CheckBoxes[lastChecked]).Checked := False;
End;
Ungetestet.
Idee: Du klickst die Checkboxen nacheinander an, z.B. 3,2,1. Dann wird bei CheckBox3 der Haken wieder weggenommen. Dann sind 2,1 angeklickt. Nun klickst Du auf 3. Dann wird bei #2 der Haken weggenommen.

Ich persönlich würde aber die erste Variante (wahlweise mit #1 und #3 als Listbox und #2 als Radiogroup ('AND' 'OR') nehmen.
Angehängte Dateien
Dateityp: exe project1_875.exe (425,0 KB, 3x aufgerufen)
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
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, 15: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
Benutzerbild von Jens Hartmann
Jens Hartmann

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

Re: Immer mehrere CheckBoxen = true

  Alt 24. Jan 2010, 18:34
Hallo nochmal,

so ich habe das jetzt noch etwas verändert, in dem ich die möglichen Zustände vorher über den ItemIndex der einzelnen Komponenten berechnen. Ich denke das das so schon ganz gut ist. Entweder werft mir Kommentare entgegen, oder Verbesserungsvorschläge. Da es ein doch recht Aufwendiges Thema war, ist der folgenden Code etwas länger.

Ich hoffe die Lust verlässt Euch trotzdem nicht.
Delphi-Quellcode:
{Suchfubktion über Edit 1 und Edit in Verbindung aller Möglichkeiten}
procedure TFDatenauswertung.btnFilterClick(Sender: TObject);
var
  Callback : integer;
begin
case cbLinking.ItemIndex of
0:case cbLinkingAfterwards.ItemIndex of
  0: Callback := cbSearchOne.ItemIndex;
  1: Callback := cbSearchOne.ItemIndex+3;
  2: Callback := cbSearchOne.ItemIndex+6;
  end;
1:case cbLinkingAfterwards.ItemIndex of
  0: case cbSearchOne.ItemIndex of
     1: Callback := cbSearchTwo.ItemIndex+10;
     2: Callback := cbSearchTwo.ItemIndex+12;
     3: Callback := cbSearchTwo.ItemIndex+14;
     end;
  1: case cbSearchOne.ItemIndex of
     1: Callback := cbSearchTwo.ItemIndex+16;
     2: Callback := cbSearchTwo.ItemIndex+18;
     3: Callback := cbSearchTwo.ItemIndex+20;
     end;
  2: case cbSearchOne.ItemIndex of
     1: Callback := cbSearchTwo.ItemIndex+22;
     2: Callback := cbSearchTwo.ItemIndex+24;
     3: Callback := cbSearchTwo.ItemIndex+26;
     end;
  end;
2:case cbLinkingAfterwards.ItemIndex of
  0: case cbSearchOne.ItemIndex of
     1: Callback := cbSearchTwo.ItemIndex+28;
     2: Callback := cbSearchTwo.ItemIndex+30;
     3: Callback := cbSearchTwo.ItemIndex+32;
     end;
  1: case cbSearchOne.ItemIndex of
     1: Callback := cbSearchTwo.ItemIndex+34;
     2: Callback := cbSearchTwo.ItemIndex+36;
     3: Callback := cbSearchTwo.ItemIndex+38;
     end;
  2: case cbSearchOne.ItemIndex of
     1: Callback := cbSearchTwo.ItemIndex+40;
     2: Callback := cbSearchTwo.ItemIndex+42;
     3: Callback := cbSearchTwo.ItemIndex+44;
     end;
  end;
end;

case Callback of
1:vst.IterateSubtree(nil,SucheCallbackEdit1,nil);
2:vst.IterateSubtree(nil,SucheCallbackEdit2,nil);
3:vst.IterateSubtree(nil,SucheCallbackEdit3,nil);
4:vst.IterateSubtree(nil,SucheCallbackEdit4,nil);
5:vst.IterateSubtree(nil,SucheCallbackEdit5,nil);
6:vst.IterateSubtree(nil,SucheCallbackEdit6,nil);
7:vst.IterateSubtree(nil,SucheCallbackEdit7,nil);
8:vst.IterateSubtree(nil,SucheCallbackEdit8,nil);
9:vst.IterateSubtree(nil,SucheCallbackEdit9,nil);
10:vst.IterateSubtree(nil,SucheCallbackEdit10,nil);
11:vst.IterateSubtree(nil,SucheCallbackEdit11,nil);
12:vst.IterateSubtree(nil,SucheCallbackEdit10,nil);
13:vst.IterateSubtree(nil,SucheCallbackEdit12,nil);
14:vst.IterateSubtree(nil,SucheCallbackEdit11,nil);
15:vst.IterateSubtree(nil,SucheCallbackEdit12,nil);
16:vst.IterateSubtree(nil,SucheCallbackEdit13,nil);
17:vst.IterateSubtree(nil,SucheCallbackEdit14,nil);
18:vst.IterateSubtree(nil,SucheCallbackEdit13,nil);
19:vst.IterateSubtree(nil,SucheCallbackEdit15,nil);
20:vst.IterateSubtree(nil,SucheCallbackEdit14,nil);
21:vst.IterateSubtree(nil,SucheCallbackEdit15,nil);
22:vst.IterateSubtree(nil,SucheCallbackEdit16,nil);
23:vst.IterateSubtree(nil,SucheCallbackEdit17,nil);
24:vst.IterateSubtree(nil,SucheCallbackEdit16,nil);
25:vst.IterateSubtree(nil,SucheCallbackEdit18,nil);
26:vst.IterateSubtree(nil,SucheCallbackEdit17,nil);
27:vst.IterateSubtree(nil,SucheCallbackEdit18,nil);
28:vst.IterateSubtree(nil,SucheCallbackEdit19,nil);
29:vst.IterateSubtree(nil,SucheCallbackEdit20,nil);
30:vst.IterateSubtree(nil,SucheCallbackEdit19,nil);
31:vst.IterateSubtree(nil,SucheCallbackEdit21,nil);
32:vst.IterateSubtree(nil,SucheCallbackEdit20,nil);
33:vst.IterateSubtree(nil,SucheCallbackEdit21,nil);
34:vst.IterateSubtree(nil,SucheCallbackEdit22,nil);
35:vst.IterateSubtree(nil,SucheCallbackEdit23,nil);
36:vst.IterateSubtree(nil,SucheCallbackEdit22,nil);
37:vst.IterateSubtree(nil,SucheCallbackEdit24,nil);
38:vst.IterateSubtree(nil,SucheCallbackEdit23,nil);
39:vst.IterateSubtree(nil,SucheCallbackEdit24,nil);
40:vst.IterateSubtree(nil,SucheCallbackEdit25,nil);
41:vst.IterateSubtree(nil,SucheCallbackEdit26,nil);
42:vst.IterateSubtree(nil,SucheCallbackEdit25,nil);
43:vst.IterateSubtree(nil,SucheCallbackEdit27,nil);
44:vst.IterateSubtree(nil,SucheCallbackEdit26,nil);
45:vst.IterateSubtree(nil,SucheCallbackEdit27,nil);
end;
  btnReset.Enabled := true;
end;

procedure TFDatenauswertung.btnResetClick(Sender: TObject);
begin
  vst.IterateSubtree(nil,SucheCallbackEditReset,nil);
  btnReset.Enabled := false;
end;
//Suche Zurücksetzten und alle geladenen Daten Anzeigen
procedure TFDatenauswertung.SucheCallbackEditReset(Sender: TBaseVirtualTree; Node: PVirtualNode; Data: Pointer; var Abort: Boolean);
var
  DatenMB : TOMBSerie;
begin
  DatenMB := TOMBSerie(VST.GetNodeData(Node)^);
  VST.IsVisible[Node] := true;
  PBFortschritt.Position := PBFortschritt.Position +1;
  if PBFortschritt.Position = PBFortschritt.Max then
    PBFortschritt.Position := 0;
end;
//Suche in Spalte Ereignis nach Text Edit 1
procedure TFDatenauswertung.SucheCallbackEdit1(Sender: TBaseVirtualTree; Node: PVirtualNode; Data: Pointer; var Abort: Boolean);
var
  DatenMB : TOMBSerie;
begin
  DatenMB := TOMBSerie(VST.GetNodeData(Node)^);
  VST.IsVisible[Node] := (EDManFilter1.Text='') or (Pos(LowerCase(EDManFilter1.Text), LowerCase(DatenMB.Ereignis))>0);
  PBFortschritt.Position := PBFortschritt.Position +1;
  if PBFortschritt.Position = PBFortschritt.Max then
    PBFortschritt.Position := 0;
end;
//Suche in Spalte Teilnehmer nach Text Edit 1
procedure TFDatenauswertung.SucheCallbackEdit2(Sender: TBaseVirtualTree; Node: PVirtualNode; Data: Pointer; var Abort: Boolean);
var
  DatenMB : TOMBSerie;
begin
  DatenMB := TOMBSerie(VST.GetNodeData(Node)^);
  VST.IsVisible[Node] := (EDManFilter1.Text='') or (Pos(LowerCase(EDManFilter1.Text), LowerCase(DatenMB.Teilnehmer))>0);
  PBFortschritt.Position := PBFortschritt.Position +1;
  if PBFortschritt.Position = PBFortschritt.Max then
    PBFortschritt.Position := 0;
end;
//Suche in Spalte Bereich nach Text Edit 1
procedure TFDatenauswertung.SucheCallbackEdit3(Sender: TBaseVirtualTree; Node: PVirtualNode; Data: Pointer; var Abort: Boolean);
var
  DatenMB : TOMBSerie;
begin
  DatenMB := TOMBSerie(VST.GetNodeData(Node)^);
  VST.IsVisible[Node] := (EDManFilter1.Text='') or (Pos(LowerCase(EDManFilter1.Text), LowerCase(DatenMB.Bereich))>0);
  PBFortschritt.Position := PBFortschritt.Position +1;
  if PBFortschritt.Position = PBFortschritt.Max then
    PBFortschritt.Position := 0;
end;
//Suche in Spalte Ereignis nach Text Edit 1 OR Text Edit 2
procedure TFDatenauswertung.SucheCallbackEdit4(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(EDManFilter2.Text), LowerCase(DatenMB.Ereignis))>0);
  PBFortschritt.Position := PBFortschritt.Position +1;
  if PBFortschritt.Position = PBFortschritt.Max then
    PBFortschritt.Position := 0;
end;
//Suche in Spalte Teilnehmer nach Text Edit 1 OR Text Edit 2
procedure TFDatenauswertung.SucheCallbackEdit5(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.Teilnehmer))>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;
//Suche in Spalte Bereich nach Text Edit 1 OR Text Edit 2
procedure TFDatenauswertung.SucheCallbackEdit6(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.Bereich))>0) or
                         (Pos(LowerCase(EDManFilter2.Text), LowerCase(DatenMB.Bereich))>0);
  PBFortschritt.Position := PBFortschritt.Position +1;
  if PBFortschritt.Position = PBFortschritt.Max then
    PBFortschritt.Position := 0;
end;
//Suche in Spalte Ereignis nach Text Edit 1 AND Text Edit 2
procedure TFDatenauswertung.SucheCallbackEdit7(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) and
                         (Pos(LowerCase(EDManFilter2.Text), LowerCase(DatenMB.Ereignis))>0);
  PBFortschritt.Position := PBFortschritt.Position +1;
  if PBFortschritt.Position = PBFortschritt.Max then
    PBFortschritt.Position := 0;
end;
//Suche in Spalte Teilnehmer nach Text Edit 1 AND Text Edit 2
procedure TFDatenauswertung.SucheCallbackEdit8(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.Teilnehmer))>0) and
                         (Pos(LowerCase(EDManFilter2.Text), LowerCase(DatenMB.Teilnehmer))>0);
  PBFortschritt.Position := PBFortschritt.Position +1;
  if PBFortschritt.Position = PBFortschritt.Max then
    PBFortschritt.Position := 0;
end;
//Suche in Spalte Bereich nach Text Edit 1 AND Text Edit 2
procedure TFDatenauswertung.SucheCallbackEdit9(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.Bereich))>0) and
                         (Pos(LowerCase(EDManFilter2.Text), LowerCase(DatenMB.Bereich))>0);
  PBFortschritt.Position := PBFortschritt.Position +1;
  if PBFortschritt.Position = PBFortschritt.Max then
    PBFortschritt.Position := 0;
end;
//Suche in Spalte Ereignis OR Teilnehmer nach Text Edit 1
procedure TFDatenauswertung.SucheCallbackEdit10(Sender: TBaseVirtualTree; Node: PVirtualNode; Data: Pointer; var Abort: Boolean);
var
  DatenMB : TOMBSerie;
begin
  DatenMB := TOMBSerie(VST.GetNodeData(Node)^);
  VST.IsVisible[Node] := (EDManFilter1.Text='') or (Pos(LowerCase(EDManFilter1.Text), LowerCase(DatenMB.Ereignis))>0)
                                                or (Pos(LowerCase(EDManFilter1.Text), LowerCase(DatenMB.Teilnehmer))>0);
  PBFortschritt.Position := PBFortschritt.Position +1;
  if PBFortschritt.Position = PBFortschritt.Max then
    PBFortschritt.Position := 0;
end;
//Suche in Spalte Ereignis OR Bereich nach Text Edit 1
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='') or (Pos(LowerCase(EDManFilter1.Text), LowerCase(DatenMB.Ereignis))>0)
                                                or (Pos(LowerCase(EDManFilter1.Text), LowerCase(DatenMB.Bereich))>0);
  PBFortschritt.Position := PBFortschritt.Position +1;
  if PBFortschritt.Position = PBFortschritt.Max then
    PBFortschritt.Position := 0;
end;
//Suche in Spalte Teilnehmer OR Bereich nach Text Edit 1
procedure TFDatenauswertung.SucheCallbackEdit12(Sender: TBaseVirtualTree; Node: PVirtualNode; Data: Pointer; var Abort: Boolean);
var
  DatenMB : TOMBSerie;
begin
  DatenMB := TOMBSerie(VST.GetNodeData(Node)^);
  VST.IsVisible[Node] := (EDManFilter1.Text='') or (Pos(LowerCase(EDManFilter1.Text), LowerCase(DatenMB.Teilnehmer))>0)
                                                or (Pos(LowerCase(EDManFilter1.Text), LowerCase(DatenMB.Bereich))>0);
  PBFortschritt.Position := PBFortschritt.Position +1;
  if PBFortschritt.Position = PBFortschritt.Max then
    PBFortschritt.Position := 0;
end;
//Suche in Spalte Ereignis OR Teilnehmer nach Text Edit 1 OR Edit 2
procedure TFDatenauswertung.SucheCallbackEdit13(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;
//Suche in Spalte Ereignis OR Bereich nach Text Edit 1 OR Edit 2
procedure TFDatenauswertung.SucheCallbackEdit14(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.Bereich))>0) or
                         (Pos(LowerCase(EDManFilter2.Text), LowerCase(DatenMB.Ereignis))>0) or
                         (Pos(LowerCase(EDManFilter2.Text), LowerCase(DatenMB.Bereich))>0);
  PBFortschritt.Position := PBFortschritt.Position +1;
  if PBFortschritt.Position = PBFortschritt.Max then
    PBFortschritt.Position := 0;
end;
//Suche in Spalte Bereich OR Teilnehmer nach Text Edit 1 OR Edit 2
procedure TFDatenauswertung.SucheCallbackEdit15(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.Bereich))>0) or
                         (Pos(LowerCase(EDManFilter1.Text), LowerCase(DatenMB.Teilnehmer))>0) or
                         (Pos(LowerCase(EDManFilter2.Text), LowerCase(DatenMB.Bereich))>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;
//Suche in Spalte Ereignis OR Teilnehmer nach Text Edit 1 AND Edit 2
procedure TFDatenauswertung.SucheCallbackEdit16(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) and
                         (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;
//Suche in Spalte Ereignis OR Bereich nach Text Edit 1 AND Edit 2
procedure TFDatenauswertung.SucheCallbackEdit17(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.Bereich))>0) and
                         (Pos(LowerCase(EDManFilter2.Text), LowerCase(DatenMB.Ereignis))>0) or
                         (Pos(LowerCase(EDManFilter2.Text), LowerCase(DatenMB.Bereich))>0);
  PBFortschritt.Position := PBFortschritt.Position +1;
  if PBFortschritt.Position = PBFortschritt.Max then
    PBFortschritt.Position := 0;
end;
//Suche in Spalte Bereich OR Teilnehmer nach Text Edit 1 AND Edit 2
procedure TFDatenauswertung.SucheCallbackEdit18(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.Bereich))>0) or
                         (Pos(LowerCase(EDManFilter1.Text), LowerCase(DatenMB.Teilnehmer))>0) and
                         (Pos(LowerCase(EDManFilter2.Text), LowerCase(DatenMB.Bereich))>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;
//Suche in Spalte Ereignis AND Teilnehmer nach Text Edit 1
procedure TFDatenauswertung.SucheCallbackEdit19(Sender: TBaseVirtualTree; Node: PVirtualNode; Data: Pointer; var Abort: Boolean);
var
  DatenMB : TOMBSerie;
begin
  DatenMB := TOMBSerie(VST.GetNodeData(Node)^);
  VST.IsVisible[Node] := (EDManFilter1.Text='') or (Pos(LowerCase(EDManFilter1.Text), LowerCase(DatenMB.Ereignis))>0)
                                                and (Pos(LowerCase(EDManFilter1.Text), LowerCase(DatenMB.Teilnehmer))>0);
  PBFortschritt.Position := PBFortschritt.Position +1;
  if PBFortschritt.Position = PBFortschritt.Max then
    PBFortschritt.Position := 0;
end;
//Suche in Spalte Ereignis AND Bereich nach Text Edit 1
procedure TFDatenauswertung.SucheCallbackEdit20(Sender: TBaseVirtualTree; Node: PVirtualNode; Data: Pointer; var Abort: Boolean);
var
  DatenMB : TOMBSerie;
begin
  DatenMB := TOMBSerie(VST.GetNodeData(Node)^);
  VST.IsVisible[Node] := (EDManFilter1.Text='') or (Pos(LowerCase(EDManFilter1.Text), LowerCase(DatenMB.Ereignis))>0)
                                                and (Pos(LowerCase(EDManFilter1.Text), LowerCase(DatenMB.Bereich))>0);
  PBFortschritt.Position := PBFortschritt.Position +1;
  if PBFortschritt.Position = PBFortschritt.Max then
    PBFortschritt.Position := 0;
end;
//Suche in Spalte Teilnehmer AND Bereich nach Text Edit 1
procedure TFDatenauswertung.SucheCallbackEdit21(Sender: TBaseVirtualTree; Node: PVirtualNode; Data: Pointer; var Abort: Boolean);
var
  DatenMB : TOMBSerie;
begin
  DatenMB := TOMBSerie(VST.GetNodeData(Node)^);
  VST.IsVisible[Node] := (EDManFilter1.Text='') or (Pos(LowerCase(EDManFilter1.Text), LowerCase(DatenMB.Teilnehmer))>0)
                                                and (Pos(LowerCase(EDManFilter1.Text), LowerCase(DatenMB.Bereich))>0);
  PBFortschritt.Position := PBFortschritt.Position +1;
  if PBFortschritt.Position = PBFortschritt.Max then
    PBFortschritt.Position := 0;
end;
//Suche in Spalte Ereignis AND Teilnehmer nach Text Edit 1 OR Text Edit 2
procedure TFDatenauswertung.SucheCallbackEdit22(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) and
                         (Pos(LowerCase(EDManFilter1.Text), LowerCase(DatenMB.Teilnehmer))>0) or
                         (Pos(LowerCase(EDManFilter2.Text), LowerCase(DatenMB.Ereignis))>0) and
                         (Pos(LowerCase(EDManFilter2.Text), LowerCase(DatenMB.Teilnehmer))>0);
  PBFortschritt.Position := PBFortschritt.Position +1;
  if PBFortschritt.Position = PBFortschritt.Max then
    PBFortschritt.Position := 0;
end;
//Suche in Spalte Ereignis AND Bereich nach Text Edit 1 OR Text Edit 2
procedure TFDatenauswertung.SucheCallbackEdit23(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) and
                         (Pos(LowerCase(EDManFilter1.Text), LowerCase(DatenMB.Bereich))>0) or
                         (Pos(LowerCase(EDManFilter2.Text), LowerCase(DatenMB.Ereignis))>0) and
                         (Pos(LowerCase(EDManFilter2.Text), LowerCase(DatenMB.Bereich))>0);
  PBFortschritt.Position := PBFortschritt.Position +1;
  if PBFortschritt.Position = PBFortschritt.Max then
    PBFortschritt.Position := 0;
end;
//Suche in Spalte Bereich AND Teilnehmer nach Text Edit 1 OR Text Edit 2
procedure TFDatenauswertung.SucheCallbackEdit24(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.Bereich))>0) and
                         (Pos(LowerCase(EDManFilter1.Text), LowerCase(DatenMB.Teilnehmer))>0) or
                         (Pos(LowerCase(EDManFilter2.Text), LowerCase(DatenMB.Bereich))>0) and
                         (Pos(LowerCase(EDManFilter2.Text), LowerCase(DatenMB.Teilnehmer))>0);
  PBFortschritt.Position := PBFortschritt.Position +1;
  if PBFortschritt.Position = PBFortschritt.Max then
    PBFortschritt.Position := 0;
end;
//Suche in Spalte Ereignis AND Teilnehmer nach Text Edit 1 AND Text Edit 2
procedure TFDatenauswertung.SucheCallbackEdit25(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) and
                         (Pos(LowerCase(EDManFilter1.Text), LowerCase(DatenMB.Teilnehmer))>0) and
                         (Pos(LowerCase(EDManFilter2.Text), LowerCase(DatenMB.Ereignis))>0) and
                         (Pos(LowerCase(EDManFilter2.Text), LowerCase(DatenMB.Teilnehmer))>0);
  PBFortschritt.Position := PBFortschritt.Position +1;
  if PBFortschritt.Position = PBFortschritt.Max then
    PBFortschritt.Position := 0;
end;
//Suche in Spalte Ereignis AND Bereich nach Text Edit 1 AND Text Edit 2
procedure TFDatenauswertung.SucheCallbackEdit26(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) and
                         (Pos(LowerCase(EDManFilter1.Text), LowerCase(DatenMB.Bereich))>0) and
                         (Pos(LowerCase(EDManFilter2.Text), LowerCase(DatenMB.Ereignis))>0) and
                         (Pos(LowerCase(EDManFilter2.Text), LowerCase(DatenMB.Bereich))>0);
  PBFortschritt.Position := PBFortschritt.Position +1;
  if PBFortschritt.Position = PBFortschritt.Max then
    PBFortschritt.Position := 0;
end;
//Suche in Spalte Bereich AND Teilnehmer nach Text Edit 1 AND Text Edit 2
procedure TFDatenauswertung.SucheCallbackEdit27(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.Bereich))>0) and
                         (Pos(LowerCase(EDManFilter1.Text), LowerCase(DatenMB.Teilnehmer))>0) and
                         (Pos(LowerCase(EDManFilter2.Text), LowerCase(DatenMB.Bereich))>0) and
                         (Pos(LowerCase(EDManFilter2.Text), LowerCase(DatenMB.Teilnehmer))>0);
  PBFortschritt.Position := PBFortschritt.Position +1;
  if PBFortschritt.Position = PBFortschritt.Max then
    PBFortschritt.Position := 0;
end;
Also Danke nochmal an alle und

Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#17

Re: Immer mehrere CheckBoxen = true

  Alt 24. Jan 2010, 18:42
Huch, kann man das nicht irgendwie kürzen? Der Code für Edit8 und Edit5 ist auf den ersten Blick bsp. identisch. Die ganzen Callback-Funktionen unterscheiden sich kaum voneinander. Vielleicht kann man den sich ändernden Teil als Parameter übergeben, wobei das bei Callback-Funktionen vermutlich nicht so einfach möglich ist.
Der Code sieht auf jedenfall heftig aus.
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

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

Re: Immer mehrere CheckBoxen = true

  Alt 24. Jan 2010, 18:59
Zitat von Matze:
Der Code für Edit8 und Edit5 ist auf den ersten Blick bsp. identisch
War er auch, da ist ein Fehler drin gewesen, Copy AND Paste halt.
Zitat von Matze:
Vielleicht kann man den sich ändernden Teil als Parameter übergeben, wobei das bei Callback-Funktionen vermutlich nicht so einfach möglich ist.
Das war ja gerade noch mein Gedanke das zu verkürzen, war auch den ganzen Sonntag arbeit, das alles so auseinander zu fummeln. Der Code war vorher noch 250 Zeilen länger.

Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 23:26 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