AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Schleife um farbliche Darstellung im VST anzupassen
Thema durchsuchen
Ansicht
Themen-Optionen

Schleife um farbliche Darstellung im VST anzupassen

Ein Thema von Jens Hartmann · begonnen am 18. Mai 2009 · letzter Beitrag vom 26. Mai 2009
 
Benutzerbild von Jens Hartmann
Jens Hartmann

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

Schleife um farbliche Darstellung im VST anzupassen

  Alt 18. Mai 2009, 17:12
Hallo zusammen,

ich habe ein VirtualTreeView, in dem ich Zeilen farblich Darstelle wenn gewisse Inhalte im VST stehen. Jetzt habe ich mehrere Checkboxen und RadioButton in einer Konfigurationsform eingebunden, die dem nutzer die Möglichkeit geben soll, diese Farbfilter selber zu erstellen.

Das ganz klappt auch ganz gut, ist jedoch sehr umständlich programmiert. Momentan habe ich hunderte Zeilen Code, um das zu realisieren. Ich würde das ganze jetzt gerne der Übersicht wegen in eine Schleife packen.

Ich zeige unten mal den Code für einen Farbfilter, von diesen habe ich 15 Stück die der User frei Programmieren kann.

Delphi-Quellcode:
case AnsichtForm.RadioGroup1.Itemindex of
  0:
    begin
      if AnsichtForm.CheckBox1.Checked = true then
        begin
          if Pos(AnsichtForm.Edit1.Text,DatenMB.Ereignis) > 0 then
            TargetCanvas.Brush.Color := AnsichtForm.ColorBox1.Selected;
          if Pos(AnsichtForm.Edit2.Text, DatenMB.Ereignis) > 0 then
            TargetCanvas.Brush.Color := AnsichtForm.ColorBox1.Selected;
        end;
      if AnsichtForm.CheckBox2.Checked = true then
        begin
          if Pos(AnsichtForm.Edit1.Text,DatenMB.Teilnehmer) > 0 then
            TargetCanvas.Brush.Color := AnsichtForm.ColorBox1.Selected;
          if Pos(AnsichtForm.Edit2.Text, DatenMB.Teilnehmer) > 0 then
            TargetCanvas.Brush.Color := AnsichtForm.ColorBox1.Selected;
        end;
      if AnsichtForm.CheckBox3.Checked = true then
        begin
          if Pos(AnsichtForm.Edit1.Text,DatenMB.Bereich) > 0 then
            TargetCanvas.Brush.Color := AnsichtForm.ColorBox1.Selected;
          if Pos(AnsichtForm.Edit2.Text, DatenMB.Bereich) > 0 then
            TargetCanvas.Brush.Color := AnsichtForm.ColorBox1.Selected;
        end;
    end;
  1:
    begin
      if AnsichtForm.CheckBox1.Checked = true then
        begin
          if Pos(AnsichtForm.Edit1.Text,DatenMB.Ereignis) > 0 then
          begin
          if Pos(AnsichtForm.Edit2.Text, DatenMB.Ereignis) > 0 then
            TargetCanvas.Brush.Color := AnsichtForm.ColorBox1.Selected;
          end;
        end;
      if AnsichtForm.CheckBox2.Checked = true then
        begin
          if Pos(AnsichtForm.Edit1.Text,DatenMB.Teilnehmer) > 0 then
          begin
          if Pos(AnsichtForm.Edit2.Text, DatenMB.Teilnehmer) > 0 then
            TargetCanvas.Brush.Color := AnsichtForm.ColorBox1.Selected;
          end;
        end;
      if AnsichtForm.CheckBox3.Checked = true then
        begin
          if Pos(AnsichtForm.Edit1.Text,DatenMB.Bereich) > 0 then
          begin
          if Pos(AnsichtForm.Edit2.Text, DatenMB.Bereich) > 0 then
            TargetCanvas.Brush.Color := AnsichtForm.ColorBox1.Selected;
          end;
        end;
    end;
  end;
Jetzt habe ich mir überlegt, das ganze mit FindComponent in eine Schleife zu packen, um den eigendlichen Code nur einmal schreiben zu müssen. Besser gesagt um den Code zu kürzen.


Allerdings, stolper ich da über folgendes Problem, wie kann ich die Funktion FindComponent auf der Hauptform von meinem Programm aufrufen.

Delphi-Quellcode:
 //wäre falsch, weil ja so "self" gesucht wird
 case(FindComponent('RadioGroup' + IntToStr(iRadioGroup))as TRadioGroup).ItemIndex of

 //funktioniert so nicht
   case(FindComponent(AnsichtForm.+ 'RadioGroup' + IntToStr(iRadioGroup))as TRadioGroup).ItemIndex of
Vieleicht kann mir ja jemand einen Tip geben.

Danke schon mal.

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


Forumregeln

Es 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

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz