![]() |
Inhalt von Array nutzen
hey leute,
also folgendes, ich möchte über ein for schleife das alle Panels auf Visibel überprüft werden und fals diese halt sichtbar sind, unsichtbar gemacht werden.
Delphi-Quellcode:
in dem Array oberfläche sind alle Panels enthalten. Wie schaffe ich es jetzt eine If schleife zu schreiben die den wert hinter jedem Array nihmt und halt als jeweiligen Panel.visible "darstellt". Ich hoffe ich konnte mich richtig ausdrücken, denn so wirklich gut in Delphi bin ich noch nicht von daher fällt das beschreiben doch zum Teil recht schwer.
procedure...
var I:integer; begin for I := 1 to high(oberflächen) do begin // hier kommt die if bedinung mit den Panel.visible abfragen hin end; end; |
Re: Inhalt von Array nutzen
Wie ist denn das Array definiert?
Wie man auf die Elemente eines Arrays zugreift weißt du? Wie man eine If-Abfrage macht auf? Und wie man .Visible ausließt/setzt, sollte auch bekannt sein (ist ja "nur" ein Boolean). Also selbst mit wenig Wissen kann ich da grad kein Problem erkennen. :gruebel: |
Re: Inhalt von Array nutzen
Hi,
Delphi-Quellcode:
Gruß oki
begin
for I := 1 to high(oberflächen) do begin if Assigned(oberflächen[I]) and (oberflächen[I] is TPanel) then (Oberflächen[I] as TPanel).Visible := False; end; [edit] himitsu war schneller und ich hab mir hier die Prüfung auf Visible gespart, da ich davon ausgehe, dass alle Panels unvisible geschaltet werden sollen. [/edit] |
Re: Inhalt von Array nutzen
Zitat:
Es wird mit sicherheit kein Problem sein :) im nachhinein denk ich mir wieder "Man wieso bist du da nicht selbst draufgekommen" :D @oki: Wenn ich die If Bedingung richtig deute, wird nachgesehen ob das Array (Oberfläche[I]) ein TPanel ist. Aber er soll schaun ob es sichtbar ist. Denn wenn das so ist soll es unsichtbar werden. LG JumpFrog PS: Achja ich das Array is vom Typ string, ich weiß nicht ob das richtig ist, aber in meinen Augen waren die Namen von den Panels ja nicht weiter als Zeichenketten. EDIT: oki hat editet somit hat sich die Aussage über seinen Quellcode erledigt :) Trotzdem bringt er mir den Fehler Inkompartibler Typ (String und TPanel). Gibt es einen Datentyp Tpanel? ó.o |
Re: Inhalt von Array nutzen
nun ja, eigentlich wollt ich es ja nicht direkt einfach so verraten,
denn so schwer isses ja nicht
Delphi-Quellcode:
wenn man davon ausgeht, daß nur TPanel im Array drinen und alles "besetzt" ist, dann kann man sich die Prüfungen auf Vorhandensein und Typ sparen.
for I := 1 to high(oberflächen) do
if (oberflächen[I] as TPanel).Visible then (oberflächen[I] as TPanel).Visible := False; // oder for I := 1 to high(oberflächen) do (oberflächen[I] as TPanel).Visible := False; // oder for I := 1 to high(oberflächen) do (oberflächen[I] as TPanel).Hide; und falls oberflächen als Array of TPanel definiert ist, dann könnte man auch das as TPanel ganz weglassen
Delphi-Quellcode:
[edit]
for I := 1 to high(oberflächen) do oberflächen[I].Hide;
wenn das Array nur die Namen enthält, dann mußt du mit ![]() ![]() und TPanel ist kein Datentyp, das ist der Object-Typ des Panels. |
Re: Inhalt von Array nutzen
Kleine Performanceoptimierung:
Delphi-Quellcode:
Der 'as' Operator prüft nochmals, ob das Objekt passt, das wurde aber vorher schon über 'is' geprüft.
for I := 1 to high(oberflächen) do begin
if Assigned(oberflächen[I]) and (oberflächen[I] is TPanel) then TPanel(Oberflächen[I]).Visible := False; // <<-- AS ist überflüssig, weil vorher mit IS geprüft wurde. end; |
Re: Inhalt von Array nutzen
aber ich wette, du kannst es immer noch nich kompilieren wenn da "ä" im code steht. nur buchstaben des englischen alphabets dürfen benutzt werden... ;)
|
Re: Inhalt von Array nutzen
Zitat:
|
Re: Inhalt von Array nutzen
selbst Japanisch ist erlaubt (quasi fast der ganze Unicodebereich)
auf den Delphitagen konnten dieses sich auch Besitzer eines älteren Delphis davon überzeugen |
Re: Inhalt von Array nutzen
also ich kann machen was ich will aber ich bekomm immerwieder nen Fehler...
Zitat:
Delphi-Quellcode:
und hier noch das erstellte array...
oberflaechen: array[1..100] of string;
um ehrlich zu sein verstehe ich das so, dass wie es schon da steht, es inkompatible Typen sind. Leider weiß ich nicht was ich daran ändern kann ^^ |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 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