Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Jalousiene Simulation! (https://www.delphipraxis.net/69732-jalousiene-simulation.html)

Pinki 19. Mai 2006 11:46


Jalousiene Simulation!
 
Hallo,ich bin ziemlich Anfänger.Ich möchte gerne ein Proggi der Jalousiene simulieren soll schreiben.
Anhand des editierten wertes sollen dementsprechend die Position dargestellt werden(Höhe der Lamelle)

:) So sieht er aus.Funzen tut er leider nicht. :wall:
Hat einer ein Vorschlag für mich.Benutze Delphi 5

Vielen Dank im Voraus
Grüss :thumb:

Delphi-Quellcode:
unit JLS;

interface


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

type
  TForm1 = class(TForm)

    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Edit1: TEdit;
    Image1: TImage;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    Function Ticker(Befehl:String) :Boolean;
    Function Jalousiefahrt(Befehl:String):Boolean;
   



  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
        TLammelle = packed Record
                                 Active : Boolean;
                                 Stellwert: Byte;
                                 LammelleZahl:Byte;
                                 end;
var
  Form1: TForm1;
  Rect:TRect;
implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var h,j,I:Integer;
begin
h:=54;
I:=StrToInt(Edit1.Text);
if I>=10 then I:=9;
Image1.Canvas.Brush.Style:=bsSolid;
Image1.Canvas.Brush.Color:=clBlack;
Image1.Canvas.Rectangle(32,64,150,164);
for j:=1 to 10 do
    begin
h:=h+10;

Image1.Canvas.Brush.Style:=bsSolid;
Image1.Canvas.Brush.Color:=clBlack;
Image1.Canvas.Rectangle(32,h,150,h+I);

    end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Jalousiefahrt('Fahr');
end;

Function TForm1.Jalousiefahrt(Befehl:String):Boolean;
var h,j,I:Integer;
begin
h:=54;
I:=9;
Image1.Canvas.Brush.Style:=bsSolid;
Image1.Canvas.Brush.Color:=clBlack;
Image1.Canvas.Rectangle(32,64,150,164);
for j:=1 to 10 do
begin
h:=h+10;
Image1.Canvas.Brush.Style:=bsSolid;
Image1.Canvas.Brush.Color:=clBlack;
Image1.Canvas.Rectangle(32,h,150,h+I);

if Befehl ='Stop' then break;
end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Ticker('Stop');
Jalousiefahrt('Stop');
end;

{Function DrawLamelle(x1,y1,x2,y2:Integer):Boolean;
begin
Image1.Canvas.Rectangle(x1,y1,x2,y2);
end; }

Function TForm1.Ticker(Befehl:String):Boolean;
var i:Integer;

begin
if Befehl<>'Stop' then
for i:=0 to 2 do
begin
Sleep(100);
Application.ProcessMessages;
Result:=True;
end
else
Result:=False
end;
end.

pacman1986 19. Mai 2006 12:34

Re: Jalousiene Simulation!
 
1) Willkommen in der dp :dp:
2) bitte häng das ganze Project an nur mit der dpr kann keiner was anfangen
3) verwende bitte delphi tags(oben wenn du ein beitrag verfasst button mit delphi-code druf)

Pinki 19. Mai 2006 12:40

Re: Jalousiene Simulation!
 
Liste der Anhänge anzeigen (Anzahl: 1)
Delphi-Quellcode:
Hallo,
danke für den Tip!
Hier nochmal ganze Project dabei
:thumb: :thumb:

pacman1986 19. Mai 2006 12:46

Re: Jalousiene Simulation!
 
Hi :D nochmal das ist nicht das ganze Project was du da lieferst ist die dpr datei
was fehlt ist nocht die .pas datei .res .dfm ..... pack einfach alles mitausnahme von der exe in ein arschiv. und die delphi tags oben um den delphi code verwenden dann liest es sich besser :mrgreen:

:thumb:

Pinki 19. Mai 2006 13:22

Re: Jalousiene Simulation!
 
Liste der Anhänge anzeigen (Anzahl: 1)
Bpl.rar
sind hoffe ich alle dateien dabei!
:-)

Martin K 19. Mai 2006 13:36

Re: Jalousiene Simulation!
 
Hi,
ich weiß nicht, ob es dass ist, aber du hast in der dpr-Datei deine Kalsse TForm1 deklariert obwohl sie auch in der Unit (pas-Datei) deklariert ist.

Versuch es mal hiermit (Datei JLSProject.dpr):
Delphi-Quellcode:
program JLSProject;

uses
  Forms,
  JLS in 'JLS.pas' {Form1};

{$R *.RES}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

Martin K 19. Mai 2006 13:41

Re: Jalousiene Simulation!
 
Desweiteren wird bei mir eine Warnmeldung ausgegeben:
Du hast eine Funktion, die aber keinen Rückgabewert liefert.
Delphi-Quellcode:
Function TForm1.Jalousiefahrt(Befehl:String):Boolean;
Eine Funktion ist schließlich dazu da, dass sie auch einen Wert zurückliefert.
In deinem Fall muss die Funktion einen Boolean-Wert liefern,
das tut sie aber nicht...

pacman1986 19. Mai 2006 14:01

Re: Jalousiene Simulation!
 
Delphi-Quellcode:
  if I >= 10 then I := 9;
  Image1.Canvas.Brush.Style := bsSolid;
  Image1.Canvas.Brush.Color := clBlack;
//  Image1.Canvas.Rectangle(32, 64, 150, 164);
  for j := 1 to 10 do
    begin
      h := h + 10;

      Image1.Canvas.Brush.Style := bsSolid;
      Image1.Canvas.Brush.Color := clBlack;
      Image1.Canvas.Rectangle(32, h, 150, h + I);
    end;
In diesem Code hast du ein Schwarzes viereck erstllt und mit schwarz drübergemalt naja ich versteh nicht warum also hab ich es geändert kommentier einfach aus dann hast du schonmal lammelen.

das selbe ist in der Funktion Joulosinenfahrt
Delphi-Quellcode:
  h := 54;
  I := 9;
  Image1.Canvas.Brush.Style := bsSolid;
  Image1.Canvas.Brush.Color := clBlack;
 // Image1.Canvas.Rectangle(32, 64, 150, 164);
  for j := 1 to 10 do
    begin
      h := h + 10;
      Image1.Canvas.Brush.Style := bsSolid;
      Image1.Canvas.Brush.Color := clBlack;

      Image1.Canvas.Rectangle(32, h, 150, h + I);
    //  if Befehl = 'Stop' then break;
    end;

nur das du die höhe hier vrogibst.

PS: breake versteh ich auch nicht.

also bewirken button1 und button2 das selbe

des sinn hinter dem ticker hab ich noch nicht rausgefunden da du ihn durch button3 nur stopst er aber nie an war. ich glaub du wolltest ein timer ?

Martin K 19. Mai 2006 14:07

Re: Jalousiene Simulation!
 
Zitat:

Zitat von pacman1986
also bewirken button1 und button2 das selbe

Nicht ganz!

Die Höhe der Jalousie (also wie weit sie offen ist), ist bei Button1 abhängig von der Eingabe in Edit1.

@pacman1986:
Diese Zeilen hast du weggelassen:
Delphi-Quellcode:
h:=54;
I:=StrToInt(Edit1.Text);

Pinki 19. Mai 2006 14:22

Re: Jalousiene Simulation!
 
Hallo
Martin es lag tatsächlich an der 2X Deklaration.Jetzt funktioniert es.Danke! :firejump:
Mit 'Fahr' sollte die Jalousiene runtarfahren.Und mit Button 3 den Timer stoppen anhand dessen kann ich die Position der jalu errechnen.Das ist nur quasi grafik oberfläche!Wird erweitert...

Packmann mit Farben hast du recht war versehn.eigentlich sollte der Kasten in Silber oder weiss sein.
MfG
Danke für eure Hilfe.
Der Forum ist echt Spitze. :hello:

Pinki 19. Mai 2006 14:25

Re: Jalousiene Simulation!
 
Ah,
übrigens mit Sleep funzt das nicct!
Ich brauche eine leere Schleife so wie beim Pascal Delay(x ms); oder so
MfG

Martin K 19. Mai 2006 14:31

Re: Jalousiene Simulation!
 
Kann es sein dass diese Zeile, die pacman1986 auskommentiert hat, so heißen muss?
Delphi-Quellcode:
      if Befehl = 'Stop' then Ticker('Fahrt'); // anstatt Break
Dann funzt das auch mit dem Sleep, wenn man auf Button3 klickt.
Oder war das so nicht gedacht???

Pinki 19. Mai 2006 14:47

Re: Jalousiene Simulation!
 
Liste der Anhänge anzeigen (Anzahl: 1)
So habe jetzt etwas verändert und es funzt!
Mit Button 3 soll ja Jalousien zurückgesetztwerden ganz auf.und mit Button 2 runterfahren.
Button 1 stellt auf vorgegebene Position.
:firejump:

Die Betaversion ist im Anhang!

Martin K 19. Mai 2006 15:05

Re: Jalousiene Simulation!
 
Kleine Vorschläge noch:

Das hier:
Delphi-Quellcode:
Function TForm1.Jalousiefahrt(Befehl:String):Boolean;
würde ich ändern in:
Delphi-Quellcode:
procedure TForm1.Jalousiefahrt(Befehl:String);
Da eine Funktion ohne Rückgabewert nicht viel Sinn macht :wink: und der Compiler warnt dich hier ja auch...

Noch was:
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
begin
{ Ticker('Stop'); <-- diese Zeile ist total überflüssig! }
Jalousiefahrt('Stop');
end;
...da bei dem Aufruf Ticker('Stop') ja überhaupt nichts gemacht wird...
Oder soll da später noch was dazukommen?

pacman1986 19. Mai 2006 15:06

Re: Jalousiene Simulation!
 
noch was sleep ist so merkwürdig nimm lieber delay
delay von Luckie oder delay von Hagen da friert das programm nicht ein sondern wird verzögert. und warum benutzt du keinen timer ?

Pinki 19. Mai 2006 15:07

Re: Jalousiene Simulation!
 
Martin lade dir überarbeitete Version Jalousie.rar und schau mal ob es sich verbessern lässt!

MfG

Pinki 19. Mai 2006 15:10

Re: Jalousiene Simulation!
 
Hallo Packmann !!
Die Tips sind super.
Erstmal funzt es auch mit sleep.Wird noch wesentlich verbessert dat ist quasi erst betabetabeta version 0.1 :-)
Guck dir mal die oben gepackte Jalousie.rar an!!!
Danke
Greetz

Martin K 19. Mai 2006 15:16

Re: Jalousiene Simulation!
 
Zitat:

Zitat von Pinki
Martin lade dir überarbeitete Version Jalousie.rar und schau mal ob es sich verbessern lässt!

MfG

Meinst du komplett verbessern?

Da fallen mir konkret 2 Sachen ein:
1. Den Quellcode etwas übersichtlicher gestalten, mit Einrücken
2. Anstatt Befehl: String als Parameter kannst du einfach einen Boolean-Parameter nehmen (z.B.: Fahrt: Boolean), da du ja eh nur zwei Zustände hast: ('Fahrt': Fahrt=True oder 'Stop': Fahrt=False).

MfG
Martin

Pinki 19. Mai 2006 15:23

Re: Jalousiene Simulation!
 
Zitat:

Meinst du komplett verbessern?

Da fallen mir konkret 2 Sachen ein:
1. Den Quellcode etwas übersichtlicher gestalten, mit Einrücken
2. Anstatt Befehl: String als Parameter kannst du einfach einen Boolean-Parameter nehmen (z.B.: Fahrt: Boolean), da du ja eh nur zwei Zustände hast: ('Fahrt': Fahrt=True oder 'Stop': Fahrt=False).

MfG
Martin
Es kommt dazu noch ein Timer (0...255:Byte) der beim auslösen des Befehls Stop den aktuellen Wert speichert und die Position ermittelt.Kommt noch dazu.
Quellcode wird natürlich verbessert war auf die schnelle halt!! :-)
MfG

:thumb:

Pinki 23. Mai 2006 09:58

Re: Jalousiene Simulation!
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo da bin ich mit meinem Project Jalu wieder :-D

Soweit gut habe bisschen erweitert.
Einziger Problem ist wenn die Jalu runterfährt beim Befehl'Stop' soll die jalu auch anhalten!!! :wall:
Project liegt als Anhang bei :wiejetzt:

Grüss
Pinki


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 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 by Thomas Breitkreuz