Üdv. Lazarusba kéne olyat csinálnom hogy van agy Ttimerem és ha bepipálom a checkboxot akkor az óra elindul és 1 perc mulva leáll, meg olyat hogy csinálok hogy a Tbutton ra kattintva megszámolja hányszor kattintottam rá ez az 1 perc alatt?
Dobsz a formra egy checkboxot, egy buttont, egy timert meg 2 labelt.
A Timer interval propertyjét 60000-re állítod majd csinálsz valami ilyesmi kódot:
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
ExtCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
cbStartStop: TCheckBox;
Label1: TLabel;
Label2: TLabel;
Ora: TTimer;
procedure Button1Click(Sender: TObject);
procedure cbStartStopChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure OraTimer(Sender: TObject);
private
{ private declarations }
fClickCounter: integer;
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.cbStartStopChange(Sender: TObject);
begin
if cbStartStop.Checked then
begin
fClickCounter:=0;
Ora.Enabled:=True;
Button1.Enabled:=True;
end
else Ora.Enabled:=False;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
fClickCounter:=0;
Ora.Enabled:=False;
Button1.Enabled:=False;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Application.ProcessMessages;
inc(fClickCounter);
Label2.Caption:=IntToStr(fClickCounter);
end;
procedure TForm1.OraTimer(Sender: TObject);
begin
//Label2.Caption:=IntToStr(fClickCounter);
Button1.Enabled:=False;
cbStartStop.Checked:=False;
end;
end.
a gombnyomásnál az applicationapplication az micsoda?
és miért kell 2 label?
Az Application.ProcessMessages igazából nem szükséges oda, általában akkor célszerű használni, ha olyan műveletet csinálunk, amitől a program kezelőfelülete nem reagál, tehát olyan, mintha lefagyna. Az ilyen művelet elé betett Application.ProcessMessages hatására a GUI újra válaszképes lesz. Leegyszerűsítve talán ennyit elég mondani erről.
A két label azért kell, mert én az egyikbe írtam a kattintások száma szöveget, a másikba pedig kiírattam, hogy mennyit kattintottam.
ShowMessge segítségével is pont úgy írod ki az eredményt, mint label-ba (ShowMessage(IntToStr(fClickCounter));).
Nálam így néz ki a form:
Mint a videón látod, minden kattintást azonnal kiír a program.
A gomb addig nem aktív, amíg az órát nem indítjuk el a checkboxxal és ismét inaktív lesz, amint az idő lejár és természetesen ekkor a checkboxból is kikerül a pipa.
A programban az még nem megoldott, hogy ha a timer futása alatt kattintunk a checkboxra, akkor megszakítsa a számlálást. Tehát van még mit neked is fejleszteni benne.
az nekem nem kell :),és amit először írál (kész programot) abba hova rakjam a showmessaget?
a kész forráskódot nem tudnád beírni? :d a többit már fejleszteném én
köszi :)
Tessék, innen letöltheted: [link]
Egy picit még piszkálgattam, így lehet, hogy sok fölösleget találsz majd benne. A ShowMessage a kikommentezett label helyére kellhet.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!