Autor Beitrag
pitko
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Fr 02.01.15 14:03 
Hallo zusammen,

ich bin gerade dabei, mit Lazarus zu beginnen und möchte ein kleines Programm schreiben.
Die TForm1 hat ein Menü, darüber möchte ich die einzelnen Seiten auf Panels aufrufen.
Es soll nun so sein, dass wenn ein neues Panel über einen Menüpunkt aufgerufen wird, das bisher
angezeigte Panel mit nicht mehr angezeigt wird.
Meine Lösung bisher ist, dass ich alle Panels mit Panelx.visible := FALSE in der Menüpunktprozedur MenuItem.onClick nicht mehr anzeige.
Bei ca. 15 Panels eine riesige Schreiberei.
Gibt es eine Möglichkeit, alle Objekte, also Panels auf der MainForm gleichzeitig zu verstecken, oder wäre hier eine
extra Prozedur hilfreicher?

Danke.
ub60
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 762
Erhaltene Danke: 127



BeitragVerfasst: Fr 02.01.15 14:29 
So mal als Idee:

ausblenden Delphi-Quelltext
1:
2:
for i:=1 to AnzahlDerPanel do
  TPanel(Findcomponent('Panel'+IntToStr(i))).Visible:=FALSE;

ub60

PS: Was Ähnliches hatten wir geade: www.entwickler-ecke....ewtopic.php?t=113782
pitko Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Fr 02.01.15 16:54 
Danke erstmal ub60,

ich habe diesen Programmteil einmal in eine bestehende (Menü) onClick Prozedur geschrieben,
eine eigene Prozedur wird - noch nicht - erkannt, ohne Fehlermeldung...

Beim Anklicken in der .exe kommt dann eine Exception.
Einloggen, um Attachments anzusehen!
ub60
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 762
Erhaltene Danke: 127



BeitragVerfasst: Fr 02.01.15 17:11 
Sinnvollerweise sollten Deine Panel dann auch Panel1 bis PanelX heißen (fortlaufend!).

Bei mir funktioniert das:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.ButtonAusClick(Sender: TObject);
var i : Integer;
begin
  for i:=1 to 6 do
    TPanel(Findcomponent('Panel'+IntToStr(i))).Visible:=FALSE;
end;

procedure TForm1.ButtonAnClick(Sender: TObject);
var i : Integer;
begin
  for i:=1 to 6 do
    TPanel(Findcomponent('Panel'+IntToStr(i))).Visible:=True;
end;

ub60

Für diesen Beitrag haben gedankt: pitko
pitko Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Fr 02.01.15 17:22 
Natürlich habe ich die Panels von Panel1 bis PanelX umbenannt, soweit hab ich ja noch mitgedacht.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Menu21Click(Sender: TObject);
var
  i: Integer;
begin
  for i:=2 to 12 do begin
    TPanel(Findcomponent('Panel'+IntToStr(i))).Visible:=FALSE;
  end;

  Panel2.Visible := TRUE;
  Panel2.Align := alTop;
end;


Hmmm, ich kann da jetzt keine großen Unterschiede entdecken ...

pitko

Moderiert von user profile iconNarses: Beiträge zusammengefasst

ub60

es funktioniert !
Vielen Dank !

Ich hatte noch keine 12 Panels angelegt, somit ist die Prozedur ins Leere gelaufen.
Wenn ich die exakte Anzahl der Panels nehme, ist alles iO.

pitko