![]() |
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. |
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) |
Re: Jalousiene Simulation!
Liste der Anhänge anzeigen (Anzahl: 1)
Delphi-Quellcode:
:thumb: :thumb:
Hallo,
danke für den Tip! Hier nochmal ganze Project dabei |
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: |
Re: Jalousiene Simulation!
Liste der Anhänge anzeigen (Anzahl: 1)
Bpl.rar
sind hoffe ich alle dateien dabei! :-) |
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. |
Re: Jalousiene Simulation!
Desweiteren wird bei mir eine Warnmeldung ausgegeben:
Du hast eine Funktion, die aber keinen Rückgabewert liefert.
Delphi-Quellcode:
Eine Funktion ist schließlich dazu da, dass sie auch einen Wert zurückliefert.
Function TForm1.Jalousiefahrt(Befehl:String):Boolean;
In deinem Fall muss die Funktion einen Boolean-Wert liefern, das tut sie aber nicht... |
Re: Jalousiene Simulation!
Delphi-Quellcode:
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.
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; 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 ? |
Re: Jalousiene Simulation!
Zitat:
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); |
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: |
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 |
Re: Jalousiene Simulation!
Kann es sein dass diese Zeile, die pacman1986 auskommentiert hat, so heißen muss?
Delphi-Quellcode:
Dann funzt das auch mit dem Sleep, wenn man auf Button3 klickt.
if Befehl = 'Stop' then Ticker('Fahrt'); // anstatt Break
Oder war das so nicht gedacht??? |
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! |
Re: Jalousiene Simulation!
Kleine Vorschläge noch:
Das hier:
Delphi-Quellcode:
würde ich ändern in:
Function TForm1.Jalousiefahrt(Befehl:String):Boolean;
Delphi-Quellcode:
Da eine Funktion ohne Rückgabewert nicht viel Sinn macht :wink: und der Compiler warnt dich hier ja auch...
procedure TForm1.Jalousiefahrt(Befehl:String);
Noch was:
Delphi-Quellcode:
...da bei dem Aufruf Ticker('Stop') ja überhaupt nichts gemacht wird...
procedure TForm1.Button3Click(Sender: TObject);
begin { Ticker('Stop'); <-- diese Zeile ist total überflüssig! } Jalousiefahrt('Stop'); end; Oder soll da später noch was dazukommen? |
Re: Jalousiene Simulation!
noch was sleep ist so merkwürdig nimm lieber delay
![]() ![]() |
Re: Jalousiene Simulation!
Martin lade dir überarbeitete Version Jalousie.rar und schau mal ob es sich verbessern lässt!
MfG |
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 |
Re: Jalousiene Simulation!
Zitat:
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 |
Re: Jalousiene Simulation!
Zitat:
Quellcode wird natürlich verbessert war auf die schnelle halt!! :-) MfG :thumb: |
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