Lazarus 3.2 (2024.02.28.)
Letöltés

  • Oldal:
  • 1

TÉMA:

Válasz: Edit és timer összehangolása. 2015 febr. 16 18:10 #1478

  • Ati
  • Ati profilkép Témaindító
  • Új tag
  • Új tag
  • Hozzászólások: 16
  • Köszönetek: 0
Köszönöm, így már működik !

Válasz: Edit és timer összehangolása. 2015 febr. 16 17:41 #1477

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 506
  • Köszönetek: 86
Természetesen "befagyasztja", mert a "Self" a kód ban a Form1-et jelenti (mivel annak metódusában szerepel) és nem a Timer1-et, ezért az ablakot tiltja le az időzítő leállítása helyett. (Elgépelés.)

Cseréld le a "Self.Enabled" kifejezéseket "Timer1.Enabled"-re!
Hogyan kérdezzünk okosan? / Mit kell tennünk kérdezés előtt? -- Lazarus 3.0 -- FPC 3.2-- GNU/Linux 5.15.0 x86_64

Válasz: Edit és timer összehangolása. 2015 febr. 16 15:22 #1476

  • Ati
  • Ati profilkép Témaindító
  • Új tag
  • Új tag
  • Hozzászólások: 16
  • Köszönetek: 0
Köszönöm a segítséget!
Az a problémám az általad írt kóddal, hogy befagyassza a programot valamiért :(
Van valami ötleted?
Köszi!

Válasz: Edit és timer összehangolása. 2015 febr. 11 18:21 #1475

  • ejbenjaro
  • ejbenjaro profilkép
  • Haladó forumozó
  • Haladó forumozó
  • Hozzászólások: 66
  • Köszönetek: 4
Valami ilyesmivel visszaszámol.
unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Spin,
  ExtCtrls, StdCtrls;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    SpinEdit1: TSpinEdit;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { private declarations }
    fMeddig: Longint;
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption:=IntToStr(SpinEdit1.Value);
  fMeddig:=SpinEdit1.Value;
  Timer1.Enabled:=True;
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if fMeddig>0 then
  begin
    dec(fMeddig);
    Label1.Caption:=IntToStr(fMeddig);
    Self.Enabled:=True;
  end
  else Self.Enabled:=False;
end;
 
end.
Mottó:
"Az ember sokszor más mint aminek látszik. De ritkán jobb..."
--
Gép : Asus P5G41T-M LX, Intel Celeron DC E3400, 4GB DDR3, 320GB SATA2, minden más integrált.
OS : Ubuntu 14.04
--
web: lassuviz.blogspot.hu/

Válasz: Edit és timer összehangolása. 2015 febr. 11 09:51 #1474

  • Ati
  • Ati profilkép Témaindító
  • Új tag
  • Új tag
  • Hozzászólások: 16
  • Köszönetek: 0
Sikerült megoldanom a vissza számlálást egy timer és egy label- al.
Az is sikerült megoldani, hogy a SpinEdit en beállított értékről számoljon vissza. Viszont vissza számlálásnál nem 0-án, hanem 1-en áll meg :(

procedure TForm1.Timer2Timer(Sender: TObject);
begin
dec(mperc);
if mperc=-1 then
begin
mperc:=SpinEdit1.Value;
end;

Label14.Caption:=IntToStr(mperc);
end;

Válasz: Edit és timer összehangolása. 2015 febr. 09 18:53 #1473

  • Ati
  • Ati profilkép Témaindító
  • Új tag
  • Új tag
  • Hozzászólások: 16
  • Köszönetek: 0
A form-ra feltettem négy SpinEdit-et (másodperc, perc, óra, nap).
Ha ezeken valamilyen értéket adok és elindítom az időzítést, szeretném ha megjelenne pl: a hátralévő idő mondjuk egy label-ben.

Válasz: Edit és timer összehangolása. 2015 febr. 09 17:40 #1472

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 506
  • Köszönetek: 86
A részletek ismerete nélkül csak alapvető dolgokat tudok javasolni, például egy másik időzítőt ami adott időközönként frissít egy TLabel.Capion-t vagy egy TProgressBar.Position-t. Ez utóbbinál a .Min és .Max is beállítandó.
A nullázást természetesen a fő időzítő indításkor el kell végezni...
Hogyan kérdezzünk okosan? / Mit kell tennünk kérdezés előtt? -- Lazarus 3.0 -- FPC 3.2-- GNU/Linux 5.15.0 x86_64

Válasz: Edit és timer összehangolása. 2015 febr. 09 10:46 #1471

  • Ati
  • Ati profilkép Témaindító
  • Új tag
  • Új tag
  • Hozzászólások: 16
  • Köszönetek: 0
Köszönöm a segítséget, tökéletesen működik!
Még egy kérdésem lenne ezzel kapcsolatban.
A folyamatot (vagy az eltelt idő vagy a hátra lévőt) hogyan jelenítenéd meg?

Válasz: Edit és timer összehangolása. 2015 febr. 07 13:27 #1470

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 506
  • Köszönetek: 86
Az időzítőt indító/leállító gomb .onClick eseménykezelőjébe ezt írd:
if Timer1.Enabled // ha fut az időzítő
    then Timer1.Enabled:=False // leállítás
    else begin // ha nem fut
      Timer1.Interval:=SpinEdit1.Value; // időzítés időközének beállítása a SpinEdit-ben található értékre
      Timer1.Enabled:=True; // időzítő indítása
    end;
Az időzítő .onTimer eseménykezelőjében pedig szép sorban írd a kérdéses port-ra a soron következő adatot...

Olvasd még el a Soros port kezelés című témát is!
Hogyan kérdezzünk okosan? / Mit kell tennünk kérdezés előtt? -- Lazarus 3.0 -- FPC 3.2-- GNU/Linux 5.15.0 x86_64
Megköszönték: Ati

Válasz: Edit és timer összehangolása. 2015 febr. 07 13:01 #1469

  • Ati
  • Ati profilkép Témaindító
  • Új tag
  • Új tag
  • Hozzászólások: 16
  • Köszönetek: 0
Ez eddig rendben van, de így nem az edit ben beállított értéket veszi alapul.
Bocsi valamiért nem jelent meg agy két sor.

Valami ilyesmit kéne megoldanom csak nem sleep-el

ComPort1.WriteStr('b');
Sleep(5000);
ComPort1.WriteStr('k');

Válasz: Edit és timer összehangolása. 2015 febr. 07 12:50 #1468

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 506
  • Köszönetek: 86
A TEdit + TUpDown helyett használj inkább egyetlen TSpinEdit-et!
Ha a kívánt érték be van állítva akkor egy gombra (például: TButton) kattintva (.onClick) induljon az időzítő...

A komponenspalettán a "System" fülön találod a TTimert (egy stopperóra az ikonja).
Indítás előtt beállítod az .Interval értékét a kívánt időhosszra (ezredmásodperc), az .onTimer eseménykezelő eljárásban pedig végrehajtod az időzített műveleteket.
Az időzítő .Enabled:=True esetén fut (ez az alapértelmezett állapot), False érték beállítása esetén megáll.
Hogyan kérdezzünk okosan? / Mit kell tennünk kérdezés előtt? -- Lazarus 3.0 -- FPC 3.2-- GNU/Linux 5.15.0 x86_64

Edit és timer összehangolása. 2015 febr. 07 12:10 #1467

  • Ati
  • Ati profilkép Témaindító
  • Új tag
  • Új tag
  • Hozzászólások: 16
  • Köszönetek: 0
Sziasztok!

Megint csak ide kényszerültem segítségért.
Szeretnék egy olyat megvalósítani, hogy a form-on van egy edit és egy updown komponensem amin időt lehet állítani 0-59 perc között.
Hogy tudom azt megvalósítani, hogy az editbe beállított érték leteltekor végre hajtson egy utasítást. pl.: kiír egy üzenetet

Köszönöm!

  • Oldal:
  • 1