Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Komponenten Eigenschaften zusammenfassen (https://www.delphipraxis.net/119356-komponenten-eigenschaften-zusammenfassen.html)

julchen 25. Aug 2008 11:25


Komponenten Eigenschaften zusammenfassen
 
Hallo,

ich arbeite momentan mit TabSheets, will jedoch nicht immer schreiben, welche gerade sichtbar oder unsichtbar sein sollen, weil sich auch noch viel ändern kann/könnte.
Gibt es so etwas in der Art:
Delphi-Quellcode:
// einmalige Deklaration:
1: TabSheet1.Visible := true + TabSheet1.TabVisible := true;
2: TabSheet2.Visible := true + TabSheet2.TabVisible := true;
3: TabSheet3.Visible := true + TabSheet2.TabVisible := true;
4: TabSheet4.Visible := true + TabSheet2.TabVisible := true;

1: TabSheet1.Visible := false + TabSheet1.TabVisible := false;
2: TabSheet2.Visible := false + TabSheet2.TabVisible := false;
3: TabSheet3.Visible := false + TabSheet2.TabVisible := false;
4: TabSheet4.Visible := false + TabSheet2.TabVisible := false;

procedure ...
begin
   // sichtbar sollen gerade sein:
   Tabsheets.Visible := 1,2;
   // der Rest ist unsichtbar!
Kann man die Eigenschaften zusammenfassen, um nicht soviel zu schreiben?
Hoffe, Ihr habt eine Lösung und versteht mein Problem!

mkinzler 25. Aug 2008 11:50

Re: Komponenten Eigenschaften zusammenfassen
 
Was soll die Zuweisung bringen?

julchen 25. Aug 2008 12:21

Re: Komponenten Eigenschaften zusammenfassen
 
Nichts! Soll nur verdeutlichen, wie ich es mir dachte, wie es gehen könnte!

Deep-Sea 25. Aug 2008 12:42

Re: Komponenten Eigenschaften zusammenfassen
 
Zitat:

Zitat von julchen
Hoffe, Ihr [...] versteht mein Problem!

Nicht so ganz ^^ ...

Zitat:

Zitat von julchen
1: TabSheet1.Visible := true + TabSheet1.TabVisible := true;

Und was auch immer das werden soll, es geht nicht. sowas wie A := B := C ging in Delphi noch nie ...

Also: Du willst eine Funktion, die nur die TabSheets eines PageControls anzeigt, deren Index du als Parameter übergibst?
Dann: Funktion mit einem Parameter vom Typ Array of Integer und dann in der Funktion alle TabSheets durchgehen und Visible auf True setzen, wenn der Index in der Liste steht, andernfalls auf False. :wink:

Hawkeye219 25. Aug 2008 12:51

Re: Komponenten Eigenschaften zusammenfassen
 
Hallo julchen,

kannst du mit Mengen in Delphi umgehen?

Delphi-Quellcode:
type
  TByteSet = set of Byte;

type
  TForm1 = class(TForm)
    [..]
  private
    procedure SetVisibleTabs (const aVisible : TByteSet);
  end;

procedure TForm1.SetVisibleTabs (const aVisible : TByteSet);
begin
  TabSheet1.TabVisible := 1 in aVisible;
  TabSheet2.TabVisible := 2 in aVisible;
  TabSheet3.TabVisible := 3 in aVisible;
  TabSheet4.TabVisible := 4 in aVisible;
  // hier erweitern, falls es mehr Tabs gibt
end;

procedure TForm1.Button1Click (Sender: TObject);
begin
  SetVisibleTabs ([2, 3]); // nur Tabs 2 und 3 sind sichtbar
end;
Gruß Hawkeye

Deep-Sea 25. Aug 2008 12:57

Re: Komponenten Eigenschaften zusammenfassen
 
Zitat:

Zitat von Hawkeye219
// hier erweitern, falls es mehr Tabs gibt

Oder eine Schleife nutzen :warn: :mrgreen:

DeddyH 25. Aug 2008 12:59

Re: Komponenten Eigenschaften zusammenfassen
 
Was für eine Schleife? FindComponent? Davon würde ich abraten, da dies bereits intern eine Schleife benutzt und somit die Performance in den Keller geht.

Deep-Sea 25. Aug 2008 13:02

Re: Komponenten Eigenschaften zusammenfassen
 
Zitat:

Zitat von DeddyH
Was für eine Schleife? FindComponent? Davon würde ich abraten, da dies bereits intern eine Schleife benutzt und somit die Performance in den Keller geht.

Nein natürlich nicht FindComponent. TTabSheets sind normalerweise auf einem PageControl - zumindest bei meinem Delphi :P Und das hat ya die Eigenschaft Pages :wink:

DeddyH 25. Aug 2008 13:03

Re: Komponenten Eigenschaften zusammenfassen
 
Achja, stimmt, dann hast Du natürlich Recht. :roll:

julchen 25. Aug 2008 14:11

Re: Komponenten Eigenschaften zusammenfassen
 
Zitat:

Zitat von Hawkeye219
Delphi-Quellcode:
type
  TByteSet = set of Byte;

type
  TForm1 = class(TForm)
    [..]
  private
    procedure SetVisibleTabs (const aVisible : TByteSet);
  end;

procedure TForm1.SetVisibleTabs (const aVisible : TByteSet);
begin
  TabSheet1.TabVisible := 1 in aVisible;
  TabSheet2.TabVisible := 2 in aVisible;
  TabSheet3.TabVisible := 3 in aVisible;
  TabSheet4.TabVisible := 4 in aVisible;
  // hier erweitern, falls es mehr Tabs gibt
end;

procedure TForm1.Button1Click (Sender: TObject);
begin
  SetVisibleTabs ([2, 3]); // nur Tabs 2 und 3 sind sichtbar
end;

VIELEN DANK :thumb:
Das ist genau das, was ich gebraucht habe!
Ich wusste nicht, dass die Menge das Zauberwort für solche Probleme ist!
Mit vielen Grüssen, Julchen


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf