![]() |
Problem mit TTimer bei aktivierung durch einen TButton!
Also ich bräuchte mal Hilfe jungs :D
Delphi-Quellcode:
Ich bekomme hier immer wieder einen Fehler an dem ersten End! Delphi meint inkompatible typen bollean und integer! Need help :D Thx
begin
if btn_startend.Caption = 'Start' then begin btn_startend.Caption := 'Stop'; t_timer.Enabled := 'true' end else begin btn_startend.Caption := 'Start'; t_timer.Enabled := 'false' end end; mfg CoolKakashi [edit=Matze][delphi]-Tags repariert. MfG, Matze[/edit] |
Re: Problem mit TTimer bei aktivierung durch einen TButton!
Nimm bei true und false einmal die Anführungszeichen weg, das sind boolsche Werte und keine Strings...
Die Fehlermeldung ist ja wohl eher inkompatibel zwischen Boolean und String... Außerdem geht das kürzer auch so:
Delphi-Quellcode:
t_timer.Enabled := btn_startend.Caption = 'Start';
if t_timer.Enabled then btn_startend.Caption := 'Stop' else btn_startend.Caption := 'Start'; |
Re: Problem mit TTimer bei aktivierung durch einen TButton!
Delphi-Quellcode:
Semikolons nicht vergessen und Hochkommas bei false und true sind falsch.
procedure TForm1.Button1Click(Sender: TObject);
begin if button1.Caption = 'Start' then begin button1.Caption := 'Stop'; timer1.Enabled := true; end else begin button1.Caption := 'Start'; timer1.Enabled := false; end; end; So müsste es gehen. Gruß W. |
Re: Problem mit TTimer bei aktivierung durch einen TButton!
Ich glaube, Du meintest das eher so:
Delphi-Quellcode:
P.S.: Willkommen in der DP :dp:
if btn_startend.Caption = 'Start' then
begin btn_startend.Caption := 'Stop'; t_timer.Enabled := true; //ohne Hochkommata end else begin btn_startend.Caption := 'Start'; t_timer.Enabled := false; //dto. end; [edit] Kleine Anmerkung noch: Du solltest Logik und Darstellung trennen [/edit] |
Re: Problem mit TTimer bei aktivierung durch einen TButton!
Cool vielen dank an euch :) Jetzt nochmal ne kleine Frage! Ich möchte jetzt zb, das Zufallswerte in die Zellen von StringGrid eingetragen werdenm wenn der Timer läuft!
Also zb Temperatur = random; Aber wo gehört das hin? In die Form oder mit zum Button? |
Re: Problem mit TTimer bei aktivierung durch einen TButton!
Auch wenn ich es nicht recht verstanden habe würde ich mal denken, ins Timer-Ereignis.
|
Re: Problem mit TTimer bei aktivierung durch einen TButton!
Gemeint war das so : Wenn ich den Button Start drücke, startet auch der Timer! Dieser soll dann zufallszahlenwerte in eine Spalte von Stringgrid eintragen!
Wie mach ich das genau? Die Werte sollen random sein. Bräuchte hilfe, wie ich das mit dem random gut hinbekomme und wie ich die werte dann in der zeile ausgeben kann. Danke :) |
Re: Problem mit TTimer bei aktivierung durch einen TButton!
Delphi-Quellcode:
So habe ich das bis jetzt! Im Unterricht hatten wa den begriff Randomize, wozu der nochma gu war weiß ich net!Aber wie gehts jetzt weiter? :)
procedure Tmess_form.t_timerTimer(Sender: TObject);
var temperatur : extended; begin randomize; temperatur := random end; |
Re: Problem mit TTimer bei aktivierung durch einen TButton!
wenn du randomize einmal beim FormCreate aufrufst reicht das ;)
Delphi-Quellcode:
das liefert dir Werte zwischen 0 und 1, ist die Frage ob du die nun haben möchtest oder bsp Werte von 0 bis 100 o.ä.
temperatur := random
dann je nach dem wie viele Zeilen du hast sollte gefüllt werden und danach halt nicht mehr (Timer ausstellen?) bzw neue Zeilen im Grid erzeugt werden. vllt solltest du noch eine integer Variable für die aktuelle Position im Stringgrid einführen, die sich also die Zeile merkt. Und dann solltest du halt immer die die Zahl in die Nächste Zeile eintragen Stringgrid1.Cells[0,Position]:=floattostr(temperatur); mfg blink182 |
Re: Problem mit TTimer bei aktivierung durch einen TButton!
@blink: Vielen Dank! ;) Aber das temperatur := random; kann ich nicht weglassen, da es ansonsten zu einer fehlerschleife kommt und delphi sich aufhängt xD
Also unsere aufgabe war es, dass dort zufallswerte eingetragen werden! Anschließend sollten wir diese in einem bereich festlegen: -15 bis 40C° ! Unsere neue Aufgabe lauutet einen Button einzubauen, der wie eine Heizung fungiert und sobald man ihn drückt, soll die Temperatur ansteigen. Nochmal nen paar Fragen^^ Wie lege ich fest, wieviele nachkommastellen die random zahl haben soll und wie sollte man sich das mit der heizung vorstellen? Thx nochmal für die hilfe^^ |
Re: Problem mit TTimer bei aktivierung durch einen TButton!
mhm du kannst die Zahl Runden in dem du die RoundTo-Funktion aus der Unit Math nutzt, die musst du dann einbinden.
Aber wäre es nicht Sinnvoller nur ganze Zahlen zu nehmen? d.h. nachher einfach Random(55)-15 zu nehmen, somit hättest du dann eine Temperatur und im Timer würde ich dann einfach den wert nur immer um irgendeinen Summanden erhöhen, ich glaube das würde das erleichtern ;) E: zum Thema Heizung, vllt wäre es auch "schön" wenn du eine ProgressBar einbaust, deren Property "Orientation" auf pbVertical und dann Breite und Höhe anpassen, sowie Min und Max-Werte. Zu dem kannst du dann auch die Farbe ändern abhängig von der Temperatur
Delphi-Quellcode:
const
BAR_CONST = $0409; begin SendMessage(ProgressBar1.Handle, BAR_CONST, 0, clRed); |
Re: Problem mit TTimer bei aktivierung durch einen TButton!
Delphi-Quellcode:
Ka was ich machen soll, komm einfach net klar :( Hab selbst vergessen wie ich die Round funktion richtig einsetze, und auch nicht, wie ich einen bereich bei random festlege! :( sry das ich so grotten bin.
procedure Tmess_form.btn_heizungClick(Sender: TObject);
begin if btn_heizung.Caption = 'Heizung' then begin btn_heizung.Caption := 'Läuft...'; end else begin btn_heizung.Caption := 'Heizung'; end end; const BAR_CONST = $0409; begin SendMessage(pgr_bar.Handle, BAR_CONST, 100, clRed); end |
Re: Problem mit TTimer bei aktivierung durch einen TButton!
E: ich helf dir mal privat weiter :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:08 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