Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Gibt es die Möglichkeit diesen Code zu optimieren...? (https://www.delphipraxis.net/17825-gibt-es-die-moeglichkeit-diesen-code-zu-optimieren.html)

barnti 10. Mär 2004 10:46


Gibt es die Möglichkeit diesen Code zu optimieren...?
 
Hi,

ich würde gern wissen, ob hier noch Optimierung (wegen Codewiederholung) betrieben werden kann:

Delphi-Quellcode:
...
 with Panel_Login do
  begin
    Left:=  Pleft;
    top:=   Ptop;
    Width:= Pwidth;
    height:= Pheight;
  end;

  with Panel_Home do
  begin
    Left:=  Pleft;
    top:=   Ptop;
    Width:= Pwidth;
    height:= Pheight;
  end;

  with Panel_Dataview do
  begin
    Left:=  Pleft;
    top:=   Ptop;
    Width:= Pwidth;
    Height:= Pheight;
  end;
Ich dachte an so etwas wie eine Schleife über ein Array in dem die Komponenten (Panels) stehen.

Ist das möglich. Wenn ja, wie lautet der Ansatz?

Sharky 10. Mär 2004 10:49

Re: Gibt es die Möglichkeit diesen Code zu optimieren...?
 
Hai barnti,

in deinem Code würden die 3 Panels ja direckt übereinander liegen. Ist das so gewünscht?

barnti 10. Mär 2004 10:51

Re: Gibt es die Möglichkeit diesen Code zu optimieren...?
 
@sharky

Genau. Auf der rechten Seite mainer Anwendung befindet sich die Navigation, mit der man jeweils eines der Panels sichbar machen kann. Funktioniert so praktisch wie ein 'Tabsheet'.

MathiasSimmack 10. Mär 2004 10:52

Re: Gibt es die Möglichkeit diesen Code zu optimieren...?
 
Wenn es gewünscht ist, dann Ja: Ein Array mit den Namen der Panels wäre möglich, und dann schau dir "FindComponent" an.

Sharky 10. Mär 2004 10:54

Re: Gibt es die Möglichkeit diesen Code zu optimieren...?
 
Einfach eine Procedue verwenden:

Delphi-Quellcode:
procedure TForm1.SetPannel (value : TPanel);
begin
  with value do
  begin
    Left:=  Pleft;
    top:=   Ptop;
    Width:= Pwidth;
    height:= Pheight;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Pleft := 100;
  Ptop := 100;
  Pwidth := 200;
  Pheight := 200;
  SetPannel(Panel1);
  SetPannel(Panel2);
  SetPannel(Panel3);
end;

stoxx 10. Mär 2004 10:59

Re: Gibt es die Möglichkeit diesen Code zu optimieren...?
 
schau Dir auch mal

Panel1.SetBounds();

an. Das ist ein Befehl, und damit geht das setzen ausserdem schneller.

barnti 10. Mär 2004 11:04

Re: Gibt es die Möglichkeit diesen Code zu optimieren...?
 
Hallo Leute,

danke für die rege Beteiligung.

Ich fasse mal zusammen. Dann hätte ich die folgenden Möglichkeiten:

1. Array, in dem die Komponentennamen stehen. Darüber iterieren

2. Prozeduraufruf mit der Kompotente und deren Maße

3. SetBounds

Wie sieht es mit der Performance aus? Wie wenn sich die Zahl der zu setzenden Komponenten erhöht.
Wie kann ich das richtig einschätzen? Mein Tip: Methode 3...

Vjay 10. Mär 2004 11:11

Re: Gibt es die Möglichkeit diesen Code zu optimieren...?
 
Setbounds wird die geschwindigkeit erhöhen, da du nicht für jedes panel 4x das WIndowRect veränderst.

Iterieren wird die geschwindigkeit verlangsamen, da Schleifen unweigerlich sprünge enthalten.

Die Geschwindigkeitsunterschiede dürften aber als unrelevant angesehen werden.

Es sei denn du führst beim Panelresize noch aktionen aus etc.

Sharky 10. Mär 2004 11:11

Re: Gibt es die Möglichkeit diesen Code zu optimieren...?
 
Hai barnti,

.SetBounds setzt intern auch "nur" die Parameter für die Position.

Jens Schumann 10. Mär 2004 11:23

Re: Gibt es die Möglichkeit diesen Code zu optimieren...?
 
Zitat:

Zitat von Sharky
Hai barnti,

.SetBounds setzt intern auch "nur" die Parameter für die Position.

Es kommt aber nur ein Paint. Wenn die Eigenschaften Left, Top, Width und Height einzeln
gesetzt werden wird das Panel (bzw. jede visuelle Komponente) 4-mal gezeichnet.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:08 Uhr.
Seite 1 von 2  1 2      

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-2025 by Thomas Breitkreuz