Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Problem mit TTimer bei aktivierung durch einen TButton! (https://www.delphipraxis.net/131815-problem-mit-ttimer-bei-aktivierung-durch-einen-tbutton.html)

Coolkakashi 31. Mär 2009 19:10


Problem mit TTimer bei aktivierung durch einen TButton!
 
Also ich bräuchte mal Hilfe jungs :D

Delphi-Quellcode:
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;
Ich bekomme hier immer wieder einen Fehler an dem ersten End! Delphi meint inkompatible typen bollean und integer! Need help :D Thx


mfg CoolKakashi


[edit=Matze][delphi]-Tags repariert. MfG, Matze[/edit]

jaenicke 31. Mär 2009 19:19

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';

Nelphin 31. Mär 2009 19:21

Re: Problem mit TTimer bei aktivierung durch einen TButton!
 
Delphi-Quellcode:
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;
Semikolons nicht vergessen und Hochkommas bei false und true sind falsch.

So müsste es gehen.

Gruß

W.

DeddyH 31. Mär 2009 19:22

Re: Problem mit TTimer bei aktivierung durch einen TButton!
 
Ich glaube, Du meintest das eher so:
Delphi-Quellcode:
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;
P.S.: Willkommen in der DP :dp:

[edit] Kleine Anmerkung noch: Du solltest Logik und Darstellung trennen [/edit]

Coolkakashi 31. Mär 2009 19:40

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?

DeddyH 31. Mär 2009 19:46

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.

Coolkakashi 31. Mär 2009 20:03

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 :)

Coolkakashi 31. Mär 2009 20:34

Re: Problem mit TTimer bei aktivierung durch einen TButton!
 
Delphi-Quellcode:
procedure Tmess_form.t_timerTimer(Sender: TObject);
var temperatur : extended;
begin
randomize;
temperatur := random


end;
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? :)

blink182 31. Mär 2009 20:50

Re: Problem mit TTimer bei aktivierung durch einen TButton!
 
wenn du randomize einmal beim FormCreate aufrufst reicht das ;)

Delphi-Quellcode:
temperatur := random
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.ä.
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

Coolkakashi 31. Mär 2009 21:00

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^^

blink182 31. Mär 2009 21:05

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);

Coolkakashi 31. Mär 2009 22:00

Re: Problem mit TTimer bei aktivierung durch einen TButton!
 
Delphi-Quellcode:
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
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.

blink182 31. Mär 2009 22:25

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