Zitat von
Satty67:
Dann sieht man auch besser durch, ich erkenne kaum was, weil ich das nicht kann, solchen Code zu lesen.
Also, das mit dem auslagern klingt logisch, kann ich bestimmt ändern. Aber das eigendliche Problem liegt in folgendem Code...
Delphi-Quellcode:
var
DatenMB : TOMBSerie;
DatenUEZ : TOUEZ;
iRadioGroup : integer; //Var. aktuelle RadioGroup
iCheckBox : integer; //Var. aktuelle CheckBox
iEdit1 : integer; //Var. aktuelles Edit 1
sEdit1 : String; //Var. aktueller Text Edit 1
iEdit2 : integer; //Var. aktuelles Edit 2
sEdit2 : String; //Var. aktueller Text Edit 2
iColorBox : integer; //Var. aktuelle ColorBox
{alle diese Var. werden von einer anderen Form über folgende Procedure gefüllt}
begin
iRadioGroup := 1; //initialisieren aller Var. damit diese nicht irgendeinen Unsinn haben
iCheckBox := 1;
iEdit1 := 1;
iEdit2 := 2;
sEdit1 := '';
sEdit2 := '';
iColorBox := 1;
case Zentralentyp of //Abfrage der Globalen Var. von Form1 Zentralentyp, in der meine aktuelle Zentrale bekannt ist.
0..3: begin //0..3 würden die selben Färbungen fordern
DatenMB := TOMBSerie(VST.GetNodeData(Node)^); //Init der Var. DatenMB mit meinem Objekt
if Sender.Selected[Node] then
Exit;
//Abfrage ob UND oder ODER Verknüpft werden soll, das legt die RadioGroup fest. 0= ODER deshalb 2 IF-Abfragen
//1= UND deshalb zwei ineinander geschachtelte IF-Abfragen
//Der Wert der RadioGroup wird auch richtig ermittelt und somit wird auch im Fall von ODER auf CASE:0 verwiesen.
case(AnsichtForm.FindComponent('RadioGroup' + IntToStr(iRadioGroup))as TRadioGroup).ItemIndex of
0:
begin
//Abfrage welche ob CheckBox 1 gesetzt ist, wird auch mit TRUE beantwortet
if (AnsichtForm.FindComponent('CheckBox' + IntToStr(iCheckBox)) as TCheckBox).Checked = true then
begin
//Abfrage und vergleich des Textes aus Edit1 mit DatenMB.Ereignis auf >0, müsste mit TRUE beantwortet werden, wird es
//aber nicht. Ersetze ich folgende Zeile durch folgenden Code funktioniert es. Daher weiß ich, das hier mein
//Fehler liegen muss.
//ERSATZCODE, DER FUNTZ: "if Pos(AnsichtForm.Edit1.Text,DatenMBEreignis) > 0 then"
if Pos((AnsichtForm.FindComponent('Edit' + IntToStr(iEdit1))as TEdit).Text,DatenMB.Ereignis) > 0 then
TargetCanvas.Brush.Color := (AnsichtForm.FindComponent('ColorBox' + IntToStr(iColorBox))as TColorBox).Selected;
if Pos((AnsichtForm.FindComponent('Edit' + IntToStr(iEdit2))as TEdit).Text,DatenMB.Ereignis) > 0 then
TargetCanvas.Brush.Color := (AnsichtForm.FindComponent('ColorBox' + IntToStr(iColorBox))as TColorBox).Selected;
end;
Vieleicht helfen ja die Kommentare.
Danke schonmal.
Gruß Jens