|
Antwort |
(Co-Admin)
Registriert seit: 7. Jul 2003 Ort: Schwabenländle 14.929 Beiträge Turbo Delphi für Win32 |
#11
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. |
Zitat |
Registriert seit: 11. Jan 2009 Ort: Wilnsdorf 1.439 Beiträge Delphi XE2 Professional |
#12
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
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt. |
Zitat |
Registriert seit: 11. Jan 2009 Ort: Wilnsdorf 1.439 Beiträge Delphi XE2 Professional |
#13
Zitat von Matze:
Jetzt nur mal zum Verständnis, denn mir erschließt sich der Sinn und daher auch dein Problem nicht.
Zitat von Hawkeye219:
ich würde ja eher eine TRadioGroup mit 3 Elementen und passender Beschriftung wählen, aber dennoch:
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. |
Zitat |
(Moderator)
Registriert seit: 6. Mai 2005 Ort: Berlin 4.956 Beiträge Delphi 2007 Enterprise |
#14
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:
Ungetestet.
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; 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.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare") |
Zitat |
Registriert seit: 11. Jan 2009 Ort: Wilnsdorf 1.439 Beiträge Delphi XE2 Professional |
#15
Zitat von alzaimar:
Ich persönlich würde aber die erste Variante
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. |
Zitat |
Registriert seit: 11. Jan 2009 Ort: Wilnsdorf 1.439 Beiträge Delphi XE2 Professional |
#16
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:
Also Danke nochmal an alle und
{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; Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt. |
Zitat |
(Co-Admin)
Registriert seit: 7. Jul 2003 Ort: Schwabenländle 14.929 Beiträge Turbo Delphi für Win32 |
#17
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. |
Zitat |
Registriert seit: 11. Jan 2009 Ort: Wilnsdorf 1.439 Beiträge Delphi XE2 Professional |
#18
Zitat von Matze:
Der Code für Edit8 und Edit5 ist auf den ersten Blick bsp. identisch
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.
Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt. |
Zitat |
Ansicht |
Linear-Darstellung |
Zur Hybrid-Darstellung wechseln |
Zur Baum-Darstellung wechseln |
ForumregelnEs 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
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
LinkBack URL |
About LinkBacks |