AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Progess Bar soll laden während sich ein tImage aufbaut
Thema durchsuchen
Ansicht
Themen-Optionen

Progess Bar soll laden während sich ein tImage aufbaut

Ein Thema von Daniel07A · begonnen am 15. Mai 2005 · letzter Beitrag vom 15. Mai 2005
 
Daniel07A

Registriert seit: 15. Mai 2005
12 Beiträge
 
Delphi 7 Enterprise
 
#1

Progess Bar soll laden während sich ein tImage aufbaut

  Alt 15. Mai 2005, 13:50
Hi,

Ich habe ein Programm in dem ich ein Apfelmännchen in ein tImage zeichnen lasse. Wenn ich jetzt eine Progressbar einbaue, dann soll die Progressbar laden während sich das Apfelmännchen aufbaut. Je nachdem wie viele Iterationen das Apfelmännchen hat, dauert der Aufbau länger bzw. kürzer. Die Progressbar sollte dann natürlich auch länger bzw. kürzer laden und der Ladebalken sollte voll sein wenn das Apfelmännchen komplett aufgebaut ist.

In meinem Programm habe ich die Progressbar schon eingebaut. Sie funtkioniert so, dass wenn ich auf den Button Zeichnen klicke, um das Apfelmännchen zu zeichnen, erst der ladeblaken auf 100% steigt und danach das zeichnen beginnt. Es sollte aber beides Parallel funtkionieren und aufeinander abgestimmt sein.

Hier der Quellcode:

Delphi-Quellcode:
procedure TFRM_Main.BTN_ZeichnenClick(Sender: TObject);


var
 I: Integer;
 begin
 PRB_Laden.Min:=0;
 PRB_Laden.Max:=50000;
 for I:=0 to 50000-1 do
 PRB_Laden.Position:=I;

begin
 xmax := strtofloat(FRM_Options.EDT_xmax.text);
 xmin := strtofloat(FRM_Options.EDT_xmin.text);
 ymax := strtofloat(FRM_Options.EDT_ymax.text);
 ymin := strtofloat(FRM_Options.EDT_ymin.text);
 kmax := strtoint(FRM_Options.EDT_kmax.text);
 rmax := strtoint(FRM_Options.EDT_rmax.Text);
 creal := strtofloat(FRM_Options.EDT_creal.text);
 cimag := strtofloat(FRM_Options.EDT_cimag.text);
 dx := (xmax-xmin)/500;
 dy := (ymax-ymin)/400;
for x_bild := 0 to 500 do
   for y_bild := 0 to 400 do iteration (x_bild,y_bild);
end;
end;
Hier jetzt der gesamte Code des Progs:

Delphi-Quellcode:
unit UNT_AM_Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls, jpeg, ComCtrls;

type
  TFRM_Main = class(TForm)
    BTN_Options: TBitBtn;
    BTN_Zeichnen: TBitBtn;
    IMG_Apfelmann: TImage;
    SHP_Unterteilung: TShape;
    BTN_Close: TBitBtn;
    BTN_Hilfe: TBitBtn;
    PRB_Laden: TProgressBar;
    procedure BTN_OptionsClick(Sender: TObject);
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure FormCreate(Sender: TObject);
    procedure BTN_ZeichnenClick(Sender: TObject);
    procedure BTN_CloseClick(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure IMG_ApfelmannClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;



var
  FRM_Main: TFRM_Main;

implementation

uses UNT_AM_Options;

{$R *.dfm}

var x_bild,y_bild,kmax,k,rmax,xo,xu,yl,yr : integer;
    x,xalt,y,dx,dy,creal,cimag : real;
    xmax,xmin,ymax,ymin : real;
    md : boolean;


procedure iteration(x_bild,y_bild: integer);
begin
  x := xmin + x_bild*dx;
  y := ymax - y_bild*dy;
  creal := (x_bild) *dx+xmin;
  cimag := (400-y_bild) *dy+ymin;
  k := 0;
  repeat
    xalt := x;
    x := sqr(x) - sqr(y) + creal;
    y := 2*xalt*y + cimag;
    inc(k);
  until (sqr(x)+sqr(y)>rmax) or (k>kmax);
  if k >= kmax then k:=0;
  FRM_Main.IMG_Apfelmann.canvas.pixels[x_bild+1,y_bild+1] := 16000000div(k+1);
end;

procedure TFRM_Main.BTN_OptionsClick(Sender: TObject);
begin
FRM_Options.show;
end;

procedure TFRM_Main.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var a,b : real;
begin
  a := xmin + (x-152)*(xmax-xmin)/500;
  b := ymax - (y-8)*(ymax-ymin)/400;
  FRM_Options.EDT_xmin.Text := floattostrf(a,fffixed,10,8);
  FRM_Options.EDT_ymax.Text := floattostrf(b,fffixed,10,8);
  xo := x; yl := y; xu := x; yr := y;
  md := true;
end;

procedure TFRM_Main.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  md := false;
end;

procedure TFRM_Main.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var a,b : real;
begin
  if md then
   begin
     a := xmin + (x-152)*(xmax-xmin)/500;
     b := ymax - (y-8)*(ymax-ymin)/400;
     FRM_Options.EDT_xmax.Text := floattostrf(a,fffixed,10,8);
     FRM_Options.EDT_ymin.Text := floattostrf(b,fffixed,10,8);
     IMG_Apfelmann.canvas.Pen.Mode := pmnotxor;
     IMG_Apfelmann.canvas.Rectangle(xo,yl,xu,yr);
     IMG_Apfelmann.canvas.Rectangle(xo,yl,x,y);
     IMG_Apfelmann.canvas.Pen.Mode := pmcopy;
     xu := x; yr := y;
   end;
end;

procedure TFRM_Main.FormCreate(Sender: TObject);
begin
 md := false;
end;


procedure TFRM_Main.BTN_ZeichnenClick(Sender: TObject);


var
 I: Integer;
 begin
 PRB_Laden.Min:=0;
 PRB_Laden.Max:=50000;
 for I:=0 to 50000-1 do
 PRB_Laden.Position:=I;

begin
 xmax := strtofloat(FRM_Options.EDT_xmax.text);
 xmin := strtofloat(FRM_Options.EDT_xmin.text);
 ymax := strtofloat(FRM_Options.EDT_ymax.text);
 ymin := strtofloat(FRM_Options.EDT_ymin.text);
 kmax := strtoint(FRM_Options.EDT_kmax.text);
 rmax := strtoint(FRM_Options.EDT_rmax.Text);
 creal := strtofloat(FRM_Options.EDT_creal.text);
 cimag := strtofloat(FRM_Options.EDT_cimag.text);
 dx := (xmax-xmin)/500;
 dy := (ymax-ymin)/400;
for x_bild := 0 to 500 do
   for y_bild := 0 to 400 do iteration (x_bild,y_bild);
end;
end;

procedure TFRM_Main.BTN_CloseClick(Sender: TObject);
begin
 FRM_Main.Close;
 FRM_Options.Close;
end;

procedure TFRM_Main.BitBtn1Click(Sender: TObject);

procedure TFRM_Main.IMG_ApfelmannClick(Sender: TObject);
begin

end;

end.

Hoffe ihr versteht mich

Gruß Daniel
  Mit Zitat antworten Zitat
 


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 09:10 Uhr.
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