AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Schnelles erstellen von Objekten
Thema durchsuchen
Ansicht
Themen-Optionen

Schnelles erstellen von Objekten

Ein Thema von ATS3788 · begonnen am 10. Jan 2016 · letzter Beitrag vom 11. Jan 2016
Antwort Antwort
Benutzerbild von ATS3788
ATS3788

Registriert seit: 18. Mär 2004
Ort: Kriftel
646 Beiträge
 
Delphi XE Starter
 
#1

Schnelles erstellen von Objekten

  Alt 10. Jan 2016, 08:43
Hallo erst mal frohes neues Jahr

Ich habe da eine kleine "Procedure"
und erstelle TShape Objekte.
Das dauert doch recht lange.
Meine frage, wie macht man so etwas besser schneller ?


Delphi-Quellcode:

const
cX = 10;
cY = 10;

_X = 320;
_Y = 240;
var
x, y: Integer;
counter : Integer;
begin
 try
    ScBox.Visible := False;
counter := 1;

    for x := 1 to _X do
      for y := 1 to _Y do begin
     shape := TShape.Create(ScBox);
     shape.Name := 'shape' + IntToStr(counter);
     shape.Parent := ScBox;
     shape.Width := cX;
     shape.Height := cY;
     shape.Brush.Color := clPurple;
     shape.Shape := stRectangle;

     shape.Left := x * cX;
     shape.Top := y * cY;

     if counter mod 150 = 0 then begin
     Shape1.Brush.Color := Random($ffffff);
     StPan1.Caption := ' Pixel : ' + IntToStr(counter);
     Application.ProcessMessages;
     end;

     inc(counter);
      end;

finally
    ScBox.Visible := True;

 end;
end;
Martin MIchael
  Mit Zitat antworten Zitat
bepe

Registriert seit: 17. Okt 2006
119 Beiträge
 
#2

AW: Schnelles erstellen von Objekten

  Alt 10. Jan 2016, 09:27
Beim zuweisen des Parents wird etwas getriggered das z.B. dafür sorgt, dass das Alignment korrekt umgesetzt wird. Bei knapp 77 tausend Objekten kann sich der Zeitbedarf entsprechend summieren... (Meine) Faustregel: Bei visuellen Komponenten so sparsam sein wie es nur geht.

Zeichne einfach selber. Wie genau kommt darauf an was du vor hast. Geht es darum Pixel vergrößert darzustellen, dann fang damit an die Koordinaten in ein Array zu schreiben um dieses später zu durchlaufen. Geht es nur um ein Schachbrettmuster dann zeichne in deinen Schleifen einfach Linien.

mfg,
bp
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
969 Beiträge
 
Delphi 6 Professional
 
#3

AW: Schnelles erstellen von Objekten

  Alt 10. Jan 2016, 10:24
Beim zuweisen des Parents wird etwas getriggered das z.B. dafür sorgt, dass das Alignment korrekt umgesetzt wird. Bei knapp 77 tausend Objekten kann sich der Zeitbedarf entsprechend summieren... (Meine) Faustregel: Bei visuellen Komponenten so sparsam sein wie es nur geht.

Zeichne einfach selber. Wie genau kommt darauf an was du vor hast. Geht es darum Pixel vergrößert darzustellen, dann fang damit an die Koordinaten in ein Array zu schreiben um dieses später zu durchlaufen. Geht es nur um ein Schachbrettmuster dann zeichne in deinen Schleifen einfach Linien.
Das Alignment kann man bei einer ScrollBox vorübergehend ausschalten:

Delphi-Quellcode:
  ScrollBox1.DisableAlign;
  try

    //...

  finally
    ScrollBox1.EnableAlign;
  end;
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Schnelles erstellen von Objekten

  Alt 10. Jan 2016, 12:35
Hier findest du ein etwas älteres Beispiel von mir zu dem Thema:
http://www.delphipraxis.net/132375-p...-beta-6-a.html
Dort zeige ich wie man so etwas zeichnen und mit der Maus ansteuern kann.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
HeZa

Registriert seit: 4. Nov 2004
Ort: Dortmund
182 Beiträge
 
Delphi 10 Seattle Professional
 
#5

AW: Schnelles erstellen von Objekten

  Alt 11. Jan 2016, 10:22
Auf den ersten Blick erscheint mir das Application.ProcessMessages überflüssig. Evtl. stattdessen am Ende der Schleife, Parent.Invalidate aufrufen.

Aber vielleicht solltest du tatsächlich nochmal deine Motivation überprüfen warum du TShape verwenden willst (und nicht wie z.B. vorgeschlagen alles selbst zeichnest).
  Mit Zitat antworten Zitat
Benutzerbild von ATS3788
ATS3788

Registriert seit: 18. Mär 2004
Ort: Kriftel
646 Beiträge
 
Delphi XE Starter
 
#6

AW: Schnelles erstellen von Objekten

  Alt 11. Jan 2016, 10:25
Danke meine Delphianer

Ich habe das Problem nun ganz anders gelöst,
aber es war eine Frage die ich mir schon immer
stellte und das mit dem Parent macht Sinn Danke.
Martin MIchael
  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:56 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