Einzelnen Beitrag anzeigen

Benutzerbild von Jens Hartmann
Jens Hartmann

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

Re: Schleife um farbliche Darstellung im VST anzupassen

  Alt 19. Mai 2009, 15:55
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
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat