Einzelnen Beitrag anzeigen

Benutzerbild von Jens Hartmann
Jens Hartmann

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

Re: Schleife um farbliche Darstellung im VST anzupassen

  Alt 19. Mai 2009, 21:47
So, habe FindComponent ausgelagert, und meine Schleife noch etwas angepasst. Ich denke sieht jetzt schon besser aus. Vieleicht könnt Ihr ja so noch ein bißchen helfen zu verbessern.

Delphi-Quellcode:
{VST Funktion um Abfrage aus der AnsichtForm zu generieren}
function GetRadioGroupIdx(aParent : TWinControl; No : Integer) : Integer;
var
  aName : String;
begin
  aName := 'RadioGroup' + IntToStr(No);
  Result := (aParent.FindComponent(aName)as TRadioGroup).ItemIndex;
end;

function GetCheckBoxState(aParent : TWinControl; No : Integer) : Boolean;
var
  aName : String;
begin
  aName := 'CheckBox' + IntToStr(No);
  Result := (aParent.FindComponent(aName) as TCheckBox).Checked;
end;

function GetColorBoxInt(aParent : TWinControl; No : Integer) : Integer;
var
  aName : String;
begin
  aName := 'ColorBox' + IntToStr(No);
  Result := (aParent.FindComponent(aName)as TColorBox).Selected;
end;

function GetEditString(aParent : TWinControl; No : integer) : string;
var
  aName : String;
begin
  aName := 'Edit' + IntToStr(No);
  Result := (aParent.FindComponent(aName)as TEdit).Text;
end;



procedure TForm1.VSTAfterItemErase(Sender: TBaseVirtualTree;
  TargetCanvas: TCanvas; Node: PVirtualNode; ItemRect: TRect);
var
  DatenMB : TOMBSerie;
  DatenUEZ : TOUEZ;
  iRadioGroup : integer;
  iCheckBox : integer;
  iEdit1 : integer;
  sEdit1 : String;
  iEdit2 : integer;
  sEdit2 : String;
  iColorBox : integer;
  iSchleife : integer;
  iSchleifeOR : integer;
  Farbe : Integer;
begin
  iRadioGroup := 1;
  iCheckBox := 1;
  iEdit1 := 1;
  iEdit2 := 2;
  sEdit1 := '';
  sEdit2 := '';
  iColorBox := 1;
  iSchleife := 1;
  iSchleifeOr := 1;
  Farbe := 16777215;
  case Zentralentyp of
  0..3: begin

  DatenMB := TOMBSerie(VST.GetNodeData(Node)^);

  if Sender.Selected[Node] then
    Exit;

  for iSchleife := 1 to 15 do begin

  case GetRadioGroupIdx(AnsichtForm, iRadioGroup) of
  0:
  begin
    if GetCheckBoxState(AnsichtForm, iCheckBox) then
      begin
        if Pos(GetEditString(AnsichtForm, iEdit1),DatenMB.Ereignis) or
           Pos(GetEditString(AnsichtForm, iEdit2),DatenMB.Ereignis) > 0 then
           Farbe := GetColorBoxInt(AnsichtForm, iColorBox);
        end;
        iCheckBox := iCheckBox + 1;
      begin
        if Pos(GetEditString(AnsichtForm, iEdit1),DatenMB.Teilnehmer) or
           Pos(GetEditString(AnsichtForm, iEdit2),DatenMB.Teilnehmer) > 0 then
           Farbe := GetColorBoxInt(AnsichtForm, iColorBox);
        end;
        iCheckBox := iCheckBox + 1;
      begin
        if Pos(GetEditString(AnsichtForm, iEdit1),DatenMB.Bereich) or
           Pos(GetEditString(AnsichtForm, iEdit2),DatenMB.Bereich) > 0 then
           Farbe := GetColorBoxInt(AnsichtForm, iColorBox);
    end;
      iEdit1 := iEdit1 + 2;
      iEdit2 := iEdit2 + 2;
      iRadioGroup := iRadioGroup + 1;
  end;
  1:
  begin
    if GetCheckBoxState(AnsichtForm, iCheckBox) then
      begin
        if Pos(GetEditString(AnsichtForm, iEdit1),DatenMB.Ereignis) and
           Pos(GetEditString(AnsichtForm, iEdit2),DatenMB.Ereignis) > 0 then
           Farbe := GetColorBoxInt(AnsichtForm, iColorBox);
        end;
        iCheckBox := iCheckBox + 1;
      begin
        if Pos(GetEditString(AnsichtForm, iEdit1),DatenMB.Teilnehmer) and
           Pos(GetEditString(AnsichtForm, iEdit2),DatenMB.Teilnehmer) > 0 then
           Farbe := GetColorBoxInt(AnsichtForm, iColorBox);
        end;
        iCheckBox := iCheckBox + 1;
      begin
        if Pos(GetEditString(AnsichtForm, iEdit1),DatenMB.Bereich) and
           Pos(GetEditString(AnsichtForm, iEdit2),DatenMB.Bereich) > 0 then
           Farbe := GetColorBoxInt(AnsichtForm, iColorBox);
        end;
      iEdit1 := iEdit1 + 2;
      iEdit2 := iEdit2 + 2;
      iRadioGroup := iRadioGroup + 1;
  end;
  end;
  TargetCanvas.Brush.Color := Farbe;
  TargetCanvas.FillRect (ItemRect);
  iColorBox := iColorBox + 2;
end;
end;
end;
end;
Danke schonmal.

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