AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Find(Compo oder Prozedur?

Ein Thema von beanbear6 · begonnen am 22. Mär 2013 · letzter Beitrag vom 22. Mär 2013
Antwort Antwort
beanbear6

Registriert seit: 28. Okt 2009
Ort: Passau
170 Beiträge
 
Delphi 7 Enterprise
 
#1

Find(Compo oder Prozedur?

  Alt 22. Mär 2013, 08:20
Hallo,
vielleicht etwas doofe Frage, aber ich bin immer wieder am überlegen, was ist in der Verarbeitung schneller - Beispiel: Ich hab z.B. 20 Buttons, deren Höhe ich verändern muss.

Ich könnete nur zum einen mit ner Procedure machen:

Proc Höhe bla bla bla
begin
But01.Height := 50;
But02.Height := 50;
usw.
end;

oder das Ganze mit for x = 1 to usw. dann mit
FindComponent...

Was ist in der Geschwindigkeit besser?
Danke für jeden Tip...
Beanbear6
Reiner
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Find(Compo oder Prozedur?

  Alt 22. Mär 2013, 08:25
Jedes Teil einzeln zu suchen ist mit Sicherheit langsamer. Aber warum speicherst du dir die nicht einmal in einer Liste ab und gehst dann die Liste durch?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Find(Compo oder Prozedur?

  Alt 22. Mär 2013, 08:28
FindComponent kostet zumindest etwas Zeit, daher ist die andere Variante schneller. Du könntest Dir aber auch einmalig ein Array oder eine Liste (TComponentList z.B.) definieren, das/die zusammengehörigen Controls auf nimmt. Anschließend kannst Du dann in einer Schleife über dieses Array/ diese Liste iterieren.

[edit] 2 L8 [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
beanbear6

Registriert seit: 28. Okt 2009
Ort: Passau
170 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: Find(Compo oder Prozedur?

  Alt 22. Mär 2013, 08:32
Hallo Ihr beiden...
Wie ich das mit ner Liste machen soll - ouou ich weiß nicht wie...
Mit Array hab ich schon mal versucht, aber ebenso gescheitert...
Bin noch nicht so fit in Delphi...
Vielleicht gibts ein kleines Beispiel?? Nur so als Ansatz?
Lernen und testen möcht ich dann schon selber
Danke erstmal für die erste Info.
Gruß Reiner
Reiner
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Find(Compo oder Prozedur?

  Alt 22. Mär 2013, 08:41
Bin noch nicht so fit in Delphi...
Super, ich auch nicht

Eine einfache Liste zum Dinge dranhängen, wieder rausnehmen und etwas mit allen Dingen darin anstellen ist die TList :
  • System.Generics.Collections der uses -Klausel hinzufügen
  • Variable vom Typ TList<TButton> deklarieren, am besten als privates Feld deiner Form
  • z.B. bei onFormCreate die Liste erstellen (TList<TButton>.Create() ) und die Buttons dranhängen: meineListe.Add(Button1); meineListe.Add(Button2); [...]
  • Willst du später etwas mit den Buttons, die du in die Liste gesteckt hast tun:
    Delphi-Quellcode:
    var
       button:TButton;
    begin
       for button in meineListe do
          button.Height := 50;

    end;
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#6

AW: Find(Compo oder Prozedur?

  Alt 22. Mär 2013, 08:43
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    FMyButtonList:TList;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
 i:Integer;
begin
   for I := 0 to FMyButtonList.Count -1 do
    with TButton(FMyButtonList[i]) do
      begin
        Height := 50;
        Width := 100;
      end;

end;

procedure TForm1.FormCreate(Sender: TObject);
var
 i:Integer;
begin
      FMyButtonList:=TList.Create;
      for I := 0 to ControlCount - 1 do
          if Controls[i] is TButton then
            if TButton(Controls[i]).Tag=123 then //oder eine andere Art der Identifizierung
              FMyButtonList.add(Controls[i]);


end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
      FMyButtonList.Free;

end;

end.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Find(Compo oder Prozedur?

  Alt 22. Mär 2013, 08:44
Delphi-Quellcode:
type
  TDeinForm = class(TForm)
    ...
  private
    FButtonArray: array[0..9] of TButton;
    ...
  end;

...

procedure TDeinForm.FormCreate(Sender: TObject);
begin
  FButtonArray[0] := btnIrgendwas;
  FButtonArray[1] := btnIrgendwasAnderes;
  ...
  FButtonArray[9] := btnLetzterButton;
end;

...

procedure TDeinForm.MachWas;
var
  i: integer;
begin
  for i := Low(FButtonArray) to High(FButtonArray) do
    FButtonArray[i].Left := 20;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
beanbear6

Registriert seit: 28. Okt 2009
Ort: Passau
170 Beiträge
 
Delphi 7 Enterprise
 
#8

AW: Find(Compo oder Prozedur?

  Alt 22. Mär 2013, 10:48
Wow und uuups...
ey vieeelen Dank für Eure Mühe... Bin gleich mal
dran das zu lernen und üben und testen... Issja genial
Vielen Dank!
Gruß Reiner
Reiner
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz