Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
Delphi XE2 Professional
|
Re: Schleife um farbliche Darstellung im VST anzupassen
19. Mai 2009, 22: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.
|