![]() |
Re: Inhalt von Array nutzen
Was versuchst Du denn da zu machen?
Selbstverfreilich kann man TPanels nicht in einem Array of string verwalten. Darin kann man höchstens die Namen der TPanels speichern. Wenn Du das machen möchtest, dann ist
Delphi-Quellcode:
das was Du suchst.
FindComponent(NameDerKomponente)
|
Re: Inhalt von Array nutzen
und in wie fern bau ich die ein, ich habe schon möglichkeiten die mir eingefallen sind versucht, aber irgentwie hatte er immer etwas dagegen.. ó.o
|
Re: Inhalt von Array nutzen
Ich empfehle die Delphihilfe zum Thema FindComponent zu studieren.
Da gibt es wunderschöne Beispiele, von denen eins auf diesen Fall ideal passt. |
Re: Inhalt von Array nutzen
Schön wenn ihr mit der Hilfe so gut zurecht kommt und es versteht. Ich nicht... Geht ja schon bei der If Bedingung los. Da bringt er mir das der Ausdruck ein Boolean sein muss....
Ich kann bei der If Bedingung eingeben was ich will der schreibt das immer oder es sind noch mehr Fehler, wie zum Beispiel End erwartet aber ... erhalten oder ; erwartet aber : erhalten... und nur solches Zeug.
Delphi-Quellcode:
So bei der zeile kommt als einzigster der fehler
FindComponent(oberflaechen as TPanel);
Zitat:
Also ich hab keinen dunst was daran nun falsch sein könnte. Andere Anwendungsmöglichkeiten habe ich bezüglich FindComponent nicht gefunden/nicht verstanden. LG PS: hier noch das Array
Delphi-Quellcode:
oberflaechen: array[1..100] of string;
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin oberflaechen[1]:='Ma_allgemein'; oberflaechen[2]:='Ma_flaechen'; end; |
Re: Inhalt von Array nutzen
Mach Dir doch das Leben leichter, indem Du nicht die Namen der Panels, sondern deren Instanzen im Array ablegst. Das ist weniger umständlich und zudem noch schneller.
[edit] Oder das Array gleich in die Tonne treten und eine TObjectList nehmen, wobei OwnsObjects im Konstruktor auf false zu setzen ist. [/edit] |
Re: Inhalt von Array nutzen
Zitat:
Du schreibst da was von Instanzen. Meinst du damit das ich direkt den Namen des TPanels+ die option visible in das array geben soll? LG JumpFrog PS: trotzdem werde ich mir den TObjectList ansehen, vielleicht is er doch einfach zu verstehen :) |
Re: Inhalt von Array nutzen
Mit Instanzen meine ich die Panels selbst. Also statt ein Array of String zu nehmen und die Namen der Panels dort abzulegen einfach ein Array of TPanel und die Panels selbst dann dort hinein.
Delphi-Quellcode:
Getippt und nicht getestet.
type
TMainForm = class(TForm) ... private MyPanels: array[1..100] of TPanel; ... end; ... procedure TMainForm.FormCreate(Sender: TObject); begin MyPanels[1] := Panel1; MyPanels[2] := Panel2; //etc.pp. end; procedure TMainForm.WatWeissIch; var i: integer; begin for i := Low(MyPanels) to High(MyPanels) do if Assigned(MyPanels[i]) then MyPanels[i].Visible := false; end; |
Re: Inhalt von Array nutzen
an sich kein fehler :) nur komisch das ich das auch schonmal versucht habe string mit TPanel zu tauschen und er mir damals nen fehler gezeigt hatte...^^
Allerdings möchte ich ja das überprüft wird ob das entsprechende Panel sichtbar ist(visible=true) und wenn das der fall ist soll eben dieses sichtbare Panel unsichtbar werden. aber mit [i]if Assigned(oberflaechen).visible = true then komm ich da nicht weit :) Da kommt dann die äusserung vonwegen Boolean enthält kein element visible. |
Re: Inhalt von Array nutzen
Du darfst das ja auch nicht vermischen. Versuch es mal so:
Delphi-Quellcode:
Aber wozu auf visible prüfen, wenn es sowieso versteckt werden soll?
if Assigned(oberflaechen[i]) and oberflaechen[i].visible then
|
Re: Inhalt von Array nutzen
Falls die alle Panel1 usw. heißen, würde ich eher den folgenden Code vorschlagen:
Delphi-Quellcode:
procedure TMainForm.FormCreate(Sender: TObject);
var i : Integer; begin for i := 1 to [n] do MyPanels[i] := TPanel(FindComponent('Panel' + IntToStr(i))); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:22 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 by Thomas Breitkreuz