Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Eigenschaften und Zuweisungen an viele Objekte
Lollinger - Di 17.07.07 18:02
Titel: Eigenschaften und Zuweisungen an viele Objekte
Hallo zusammen,
zur Zeit arbeite ich an einem kleinen Programm, in welchem mich folgendes stört:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| Im1a.visible := true; Im1b.visible := true; Cb1a.visible := true; Cb1b.visible := true; ... Im2a.visible := false; Im2b.visible := false; Cb2a.visible := false; Cb2b.visible := false; ... |
ich suche jetzt einen Operator vglbar mit 'with', nur eben umgekehrt,
in der Art von:
Delphi-Quelltext
1: 2: 3:
| setzte visible := true für Im1a, Im1b, Cb1a, Cb1b ... |
Danke im Voraus für die Hilfe... und bitte redet noch ein wenig Deutsch mit mir, ich kann Delphi nur aus der Schule und hab mir 99% meines Wissens selber aneignen müssen.
MfG
Lollinger
Narses - Di 17.07.07 18:54
Moin und :welcome: im Forum!
Du suchst
FINDCOMPONENT ;)
cu
Narses
Lannes - Di 17.07.07 20:10
Hallo,
könnte auch sein das TWinControl.Controls gesucht wird :wink:
Lollinger - Di 17.07.07 20:16
also der FindComponent Befehl der trifft's ganz gut. Damit kann ich was anfangen. thx
@Lannes: habe mir grade mal TWinControl.Controls in der Delphi-Hilfe durchgelesen... versteh ich irgendwie nicht :roll:
Lannes - Di 17.07.07 20:48
Hallo,
angenommen auf einem Panel liegen
nur 2 Labels.
Dann kann man folgende Schleife konstruieren:
Delphi-Quelltext
1: 2:
| for z := 0 to Panel.ControlCount -1 do TLabel(Panel.Controls[z]).Caption := 'Ich bin ein Label'; |
Eventuell eine Alternative dazu:
Delphi-Quelltext
1: 2: 3: 4:
| Im1a.visible := true; Im1b.visible := true; Cb1a.visible := true; Cb1b.visible := true; |
Die Komponenten Im1a, Im1b, Cb1a und Cb1b auf ein Panel, dann kannst Du mit einem Befehl alle verbergen:
Delphi-Quelltext
1:
| Panel.Visible := False; |
Ist natürlich alles abhängig von Deinem Anwendungslayout.
Lollinger - Di 17.07.07 21:51
beim Layout liegen jeweils Im1a / Im2a, Im1b / Im2b, etc. übereinander.
sehe ich es richtig, dass es mit panels dann nicht hinhaut?? :roll:
Lannes - Di 17.07.07 23:15
Hallo,
wenn ich Dich richtig verstanden habe sollte das mit Panels gehen.
Also auf Panel_1 die Komponenten Im1a und Im1b, auf Panel_2 die Komponenten Im2a und Im2b.
Dann Panel_2 über Panel_1 schieben. Setz man dann Panel_2.Visible auf False wird Panel_1 mit seinen Komponenten sichtbar.
Noch eine andere Möglicheit wäre mit Panel_1.BringToFront; gegeben.
Erzähl doch mal etwas mehr über Dein Vorhaben, dann kann man eventuell noch bessere Vorschläge machen.
Lollinger - Di 17.07.07 23:35
hab hier mal ein Pic angehangen... kenne mich mit Panels leider 0 aus, weiß also nicht wie du das meinst...
zum Pic:
die Reiter unten werden später noch erweitert. Im Endeffekt werden es 12-15 Reiter sein. Und jedes Mal sollen halt die passenden Logos sichtbar gemacht werden. Aus weiteren Programmgründen muss ich mit 'visible' arbeiten.
Lannes - Mi 18.07.07 00:02
Hallo,
die Komponente TPageControl sollte doch dafür das richtige sein.
oldmax - Mi 18.07.07 06:43
Hi
Wenn du eine Objektgruppe sichtbar / unsichtbar máchen möchtest, sind unterlegte Panels genau richtig. du ziehst in deine Form ein Panel und placierst dann deine Objektgruppe darauf. So kannst du weitere Panels auf die Form bringen.(Aufpassen, das die Panels in der Form und nicht in einem der Panels plaziert werden !!)
Wenn du nun die Panels genau übereinander legst, kannst u in einer Schleife z. B. alle "unsichtbar" machen und das ausgewählte Panel mit der benötigten Objektgruppe sichtbar schalten.
Delphi-Quelltext
1: 2: 3: 4: 5:
| For i:=1 to x do begin TPanel(FindComponent('Panel'+IntToStr(i))).Visible:=False; end; TPanel(FindComponent('Panel'+IntToStr(y))).Visible:=True; |
Wenn du allerdings von "Reitern" sprichst, dann ist TPageControl doch die bessere Lösung.
Du nimmst ein TPagecontrol und fügst neue Seiten hinzu, indem du mit der rechten Maustaste in das Pagecontrol clickst. Wenn du die Reiter anclickst, wechselt er die Seiten entsprechend. Benennen kannst du die Reiter, indem du die Fläche anclickst und die Caption der Tabsheet überschreibst.
Viel Spass bei deinem Projekt
Gruß oldmax
Lollinger - Mi 18.07.07 12:09
Wie verfahre ich denn anschließend mit dem TPageControl? Geht das dann, wie ihr das mit den Panels auch vergeschlagen habt? Hab nähmlich grade ein wenig ausprobiert. Die PageControl steht, aber sonst bekomm ich irgendwie nix weiter hin. help pls :oops:
oldmax - Mi 18.07.07 13:11
Hi
Ich hab's versucht, zu beschreiben. Nun weiß ich nicht, was du von dem TPageControl erwartest. Du sagst, es steht, das heißt für mich, du hast x-Registerkarten und denen hast du eine Caption zugewiesen. Und du kannst nun zwischen den Registerkarten verschiedene Objektgruppen anzeigen. Oder ist dem nicht so? Vielleicht hilft auch ein wenig F1.
Gruß oldmax
Lollinger - Mi 18.07.07 13:33
Zitat: |
verschiedene Objektgruppen anzeigen. Oder ist dem nicht so? |
eben das kann ich nicht
wie kann ich die Objekt dorthin 'gruppieren'?? F1-Hilfe ist da (meiner Meinung nach) ziemlich uninformativ (bin nur ein armer Schüler)
Lannes - Mi 18.07.07 22:08
Hallo,
wenn Du zur Entwurfszeit auf einen Reiter klickst, wird das gesamte PageControl markiert, klickst Du unterhalb der Reiter wird ein TabSheet markiert. Auf diese Tabsheets kannst Du dann aus der Komponentenpalette die gewünschten Komponenten ablegen.
Liegen die Komponenten schon auf der Form, dann hilft ein Ausschneiden in die Zwischenablage und nachfolgendes Einfügen auf ein TabSheet weiter.
Du musst immer dabei aufpassen das ein TabSheet markiert ist, sonst landet die Komponente auf der Form.
Lollinger - Fr 20.07.07 12:21
hm... PC grad abegraucht... probiere es aber die Tage mal so aus. Habe es immer versucht dort rein zu schieben...
danke bis hierhin... denke das war's dann!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!