Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Schiebregler (Sierpinski Dreieck) (https://www.delphipraxis.net/122810-delphi-schiebregler-sierpinski-dreieck.html)

Julezyyy 22. Okt 2008 12:49


Delphi Schiebregler (Sierpinski Dreieck)
 
Delphi Schieberegler



Hallo,

kann mir jemand bei der Frage helfen, wie ich ein Schieberegler in Delphi programmieren kann?

Anwendungsbeispiel

Sierpinski Dreieck

Dort würde ich gerne das Schieberegler für n:=zahl.value nutzen.


Vielen Dank schon ein Mal für euere tatkräfitge Unterstützung ;)


Best regards,
Julezyyy

oki 22. Okt 2008 12:54

Re: Delphi Schiebregler (Sierpinski Dreieck)
 
Hi,

ich versteh die Frage nicht ganz. Wo ist der Zusammenhang zwischen der Programmierung eines Schiebereglers und eines Sierpinski Dreiecks?

Gruß oki

DeddyH 22. Okt 2008 12:55

Re: Delphi Schiebregler (Sierpinski Dreieck)
 
Würde es nicht einfach eine Trackbar tun?

Julezyyy 22. Okt 2008 12:58

Re: Delphi Schiebregler (Sierpinski Dreieck)
 
Der Zusammenhang besteht darin, dass ich durch den Schieberegler die Anzhal der Zufallszahlen erhöhe, bzw. ernidriege, und somit ein mehr bzw. weniger klar erkenntliches Dreieck erhalte.

Was genau ist eine Trackbar?

Beschäftige mich seit 2 Wochen mit Delphi 7. Also bitte nicht alles so ernst nehmen ;)

Best regards,
Julezyyy

DeddyH 22. Okt 2008 12:59

Re: Delphi Schiebregler (Sierpinski Dreieck)
 
Schau mal auf dem Reiter Win32 der Komponentenpalette, dort gibt es eine Schieber-Komponente namens TrackBar.

Julezyyy 22. Okt 2008 13:03

Re: Delphi Schiebregler (Sierpinski Dreieck)
 
Ok, habe ich. Und mit welchem Code 'füttere' ich nun diese TrackBar, damit ich mein gewünschtes Ergebnis erhalte.

Hier mein bisheriger Code:

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    Bild: TImage;
    Abbrechen: TButton;
    Start: TButton;
    procedure AbbrechenClick(Sender: TObject);
    procedure StartClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.AbbrechenClick(Sender: TObject);
begin
  close;
end;

procedure TForm1.StartClick(Sender: TObject);
var a1,a2,a3,a4,a5,a6,b1,b2,b3,b4,b5,b6,xstart,ystart,n,zufall,x,y,anzahl : integer;
begin
  with Bild do

     // GRUND-DREICECK ZEICHNEN

    begin
     randomize;
     a1:=220; b1:=500; a2:=720; b2:=500; a3:=920; b3:=250;
     a4:=720; b4:=20; a5:=220; b5:=20; a6:=20; b6:=250; //Dreickes-Koordinaten
     canvas.MoveTo(a1,b1); // "Stift" aufsetzen
     canvas.LineTo(a2,b2); //Zeichen zu ...
     canvas.LineTo(a3,b3);
     canvas.LineTo(a4,b5);
     canvas.LineTo(a5,b5);
     canvas.LineTo(a6,b6);
     canvas.LineTo(a1,b1); // Dreieck gezeichnet (done)

     // STARTPUNKT SETZEN

     xstart:=170; ystart:=400;
     canvas.Pixels[xstart,ystart]:=clblack;
     n:=0;
      // "Regentropfen"
          anzahl:=1000000;
     repeat
      inc(n); zufall:=random(6);
      if zufall=0 then begin
                     x:=(xstart+a1) div 2; y:=(ystart+b1) div 2;
                     canvas.Pixels[x,y]:=clred;
                     xstart:=x ; ystart:= y ;
                  end;
      if zufall=1 then begin
                     x:=(xstart+a2) div 2; y:=(ystart+b2) div 2 ;
                     canvas.Pixels[x,y]:=clgreen;
                     xstart:=x ; ystart:= y ;
                  end;
      if zufall=2 then begin
                     x:=(xstart+a3) div 2 ; y:=(ystart+b3) div 2 ;
                     canvas.Pixels[x,y]:=clblue;
                     xstart:=x ; ystart:=y ;
                  end;
      if zufall=3 then begin
                     x:=(xstart+a4) div 2 ; y:=(ystart+b4) div 2 ;
                     canvas.Pixels[x,y]:=clyellow;
                     xstart:=x ; ystart:=y ;
                  end;
      if zufall=4 then begin
                     x:=(xstart+a5) div 2 ; y:=(ystart+b5) div 2 ;
                     canvas.Pixels[x,y]:=clpurple;
                     xstart:=x ; ystart:=y ;
                  end;
      if zufall=5 then begin
                     x:=(xstart+a6) div 2 ; y:=(ystart+b6) div 2 ;
                     canvas.Pixels[x,y]:=clsilver;
                     xstart:=x ; ystart:=y ;
                  end;
      until n=anzahl;
    end; // end of with
end;


end.
Best regards,
Julezyyy

oki 22. Okt 2008 13:04

Re: Delphi Schiebregler (Sierpinski Dreieck)
 
Hi,

du wirst dir sicher eine Procedure zum berechnen und zeichnen der Dreiecke geschrieben haben. Dort gibst du als Parameter die Anzahl an. Immer wenn deine Trackbar verändert wird rufst du im Change-Ereignis der Trackbar deine Procedure neu auf und übergibst den aktuellen Wert der Trackbar als Parameter. Und fertig!

Gruß oki

DeddyH 22. Okt 2008 13:08

Re: Delphi Schiebregler (Sierpinski Dreieck)
 
Und statt der ganzen If-Abfragen solltest Du case verwenden, das ist schneller und übersichtlicher.

Julezyyy 22. Okt 2008 13:18

Re: Delphi Schiebregler (Sierpinski Dreieck)
 
Zitat:

Zitat von DeddyH
Und statt der ganzen If-Abfragen solltest Du case verwenden, das ist schneller und übersichtlicher.

Hatten wir leider noch nicht ;)


Zitat:

Zitat von oki
Hi,

du wirst dir sicher eine Procedure zum berechnen und zeichnen der Dreiecke geschrieben haben. Dort gibst du als Parameter die Anzahl an. Immer wenn deine Trackbar verändert wird rufst du im Change-Ereignis der Trackbar deine Procedure neu auf und übergibst den aktuellen Wert der Trackbar als Parameter. Und fertig!

Gruß oki

Ich kenne die zahlreichen Befehle leider nicht. Könntest du mir eine kleine Stüze geben?

Best regards,
Julezyyy

DeddyH 22. Okt 2008 13:30

Re: Delphi Schiebregler (Sierpinski Dreieck)
 
Z.B. so etwas:
Delphi-Quellcode:
unit Nix;

interface

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

type
  TForm1 = class(TForm)
    TrackBar1: TTrackBar;
    procedure TrackBar1Change(Sender: TObject);
  private
    { Private-Deklarationen }
    //private Methode, die bei Änderung der Trackbar aufgerufen wird
    procedure DoOnChange(Value: integer);
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.DoOnChange(Value: integer);
begin
  //übergebene Zahl auswerten und Farbe entsprechend setzen
  case Value of
    0,1: Color := clRed;
    2,3: Color := clGreen;
    4,5: Color := clBlue;
    6,7: Color := clYellow;
    8,9: Color := clFuchsia;
    else Color := clBtnFace;
  end;
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
  //private Methode aufrufen, dabei Position übergeben
  DoOnChange(TrackBar1.Position);
end;

end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:57 Uhr.
Seite 1 von 2  1 2      

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