AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Code vereinfachen

Ein Thema von Luckie · begonnen am 17. Feb 2004 · letzter Beitrag vom 17. Feb 2004
Antwort Antwort
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Code vereinfachen

  Alt 17. Feb 2004, 08:41
Ich habe folgenden Code:
Delphi-Quellcode:
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  case Combobox1.ItemIndex of
    0:
      begin
        pnlEspacenet.Visible := True;
        pnlUSPTO.Visible := False;
      end;
    1:
      begin
        pnlEspacenet.Visible := False;
        pnlUSPTO.Visible := True;
      end;
  end;
end;
In Abhängigkeit der Auswahl in der Kombobox werden Panels sichtbar gemacht. Die anzahl der Panels entspricht dabei der anzahl der Items in der Combobox. Bei zwei Itmes und zwei zuigehörigen Panels geht es ja noch, bei drei eventuell auch noch. Aber dann wird es schon unübersichtlich. Meine Frage nun, wie kann man das eleganter lösen?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#2

Re: Code vereinfachen

  Alt 17. Feb 2004, 08:53
Hi Luckie,

Wenn Du (wie ich vermute) die Panels dynamisch erstellst, dan pack Sie in eine TList.
Anschließend kannst Du:
Delphi-Quellcode:
var i : Integer;
begin
  for i := 0 to PanelListe.Count-1 do TPanel(PanelListe).Visible := False;
  TPanel(PanelListe[DropDown.ItemIndex]).Visible := True;
end;
Wenn Du die nicht dynamisch erstellst, bliebe Dir noch eine Liste (oder Array), in dem Du die Component.Name's speicherst, dann kannst Du ähnlich herangehen.
Gruß
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Code vereinfachen

  Alt 17. Feb 2004, 09:36
Nein, zur Entwurfszeit. Zur Laufzeit wäre etwas mühsam, da da noch Komponenten dreaufsitzen. Aber dein Code hat mich auf eine Idee gebracht. Ich könnte da was drhen mit FindComponenet und der Tag-Eigenschaft.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Code vereinfachen

  Alt 17. Feb 2004, 09:44
Hi Luckie,
so auf die Stelle, untested und unueberlegt...

Delphi-Quellcode:
var
  i: integer;
begin
  for i:=0 to frmMain.ComponentsCout-1 do begin
    if frmMain.Components[i] is TPanel then
      if (frmMain.Components[i] as TPanel).Tag = cbAuswahl.ItemIndex+1 then
        (frmMain.Components[i] as TPanel).Visibe := true;
  end;
end;
Hope that helps,
Chris

[edit]+1 deshalb, weil du sonst die ganzen 0en mit drinhast und das waere ja nicht so toll... [/edit]
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Code vereinfachen

  Alt 17. Feb 2004, 09:46
Dank dir, werde ich mir nachher mit der neuen Tastatur mal ankucken.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Code vereinfachen

  Alt 17. Feb 2004, 09:47
Oder diese Variante von Chackotays Code:

Delphi-Quellcode:
var
  i: integer;
begin
  for i:=0 to frmMain.ComponentsCout-1 do
  begin
    if frmMain.Components[i] is TPanel then
    begin
      (frmMain.Components[i] as TPanel).Visibe := (frmMain.Components[i] as TPanel).Tag = cbAuswahl.ItemIndex+1 ;
    end;
  end;
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Code vereinfachen

  Alt 17. Feb 2004, 09:52
Hi,
@Luckie: du meinst gemein. Treffnix Tastatur geht nicht und du gibst gleich wieder an...

@Sharky: Waere auch eine Moeglich keit wenn es die Eigenschaft Visibe geben wuerde...

Chris

[edit=Luckie]Tags korrigiert. Mfg, Luckie[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Code vereinfachen

  Alt 17. Feb 2004, 09:52
So geht's:
Delphi-Quellcode:
procedure TForm1.ComboBox1Change(Sender: TObject);
var
  i: integer;
begin
  for i := 0 to Form1.ComponentCount - 1 do
  begin
    if Form1.Components[i] is TPanel then
    begin
      (Form1.Components[i] as TPanel).Visible := (Form1.Components[i] as
        TPanel).Tag = Combobox1.ItemIndex;
    end;
  end;
end;
Danke euch noch mal.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#9

Re: Code vereinfachen

  Alt 17. Feb 2004, 12:02
Also ich fuelle mir ein array mit den Komponenten.
Ob dynamisch angelegt, oder mit FindComponent gefuellt ist egal.
Am besten eignet sich FormActivate dafuer.
  Mit Zitat antworten Zitat
Antwort Antwort


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 11:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz