Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - prüfen ob form aktiv ist ...!?


einfach112 - Di 05.09.06 19:26
Titel: prüfen ob form aktiv ist ...!?
Hallo ! hoffe das ich hier an der richtigen stelle bin...

Hier zu meinem problem....
Ich bin gerade dabei ein kleines spiel zu programmieren....
Hierbei wird mit Punktestand gearbeitet ...
Später soll es so sein das man die Punkte online in eine Datenbank eintragen kann.....
Damit man aber nun nicht einfach den Punktestand faken kann müsste ich wissen ob meine Form
Ich nenne es jetzt einfach mal "aktiv" ist.

Damit meine ich ob im Oberen bereich meiner Form (die Standartmässig blau ist und den Namen des Programms enthält) gerade blau ist oder ob zu einem anderen Task gewechselt wurde....
Ich habe schon versucht ALT+Tab zu sperren während des Spiels ... aber es gibt da ja auch noch anderen möglichkeiten ....

Von daher würde mir schon reichen wie ich prüfen kann ob meine Form oben Blau also "Aktiv" ist oder nicht
Dachte zunächst ich könnte ganz einfach arbeiten mit TForm1.FormActivate(Sender: TObject);
aber leider zählt das ja schon ab dem moment wo ich meine Form starte....

hoffe es hat jemand verstanden was ich nun brauche....

Bin wie immer über nette Antworten SEHR DANKBAR...
MfG
Einfach112


elundril - Di 05.09.06 19:38

mach ne Variable:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
var aktiv:boolean;

procedure Tform1Activate (sender:TObject)
begin
  aktiv:=true;
end;

procedure Tform1Deactivate (sender:TObject)
begin
  activ:=false;
end;

procedure abprüfung
begin
  if aktiv then
    machwas
  else machwasanderes;
end;

mfg el


einfach112 - Mi 06.09.06 00:42
Titel: .... geht leider nicht....
Danke für die Antwort aber leider gehts so nicht oder habe ich da was falsch verstanden ?
ich habe es jetzt mal so gemacht :


Delphi-Quelltext
1:
2:
3:
  var
  Form1: TForm1;
  aktiv:boolean;



Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.FormActivate(Sender: TObject);
begin
aktiv:=true;
end;



Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.FormDeactivate(Sender: TObject);
begin
aktiv:=false;
end;



Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.Timer4Timer(Sender: TObject);
begin
if aktiv = false then
showmessage('Das verlassen des Spielfeldes ist verboten !');
end;


timer4 steht im intervall auf 50 und ist aktiv sobald das spiel anfängt ...
Also theo müsste doch alles richtig sein oder ?!
aber showmessage kommt nie zum zuge ...
habe ich irgendwas vergessen ?
habe zur sicherheit mal getestet und bei oncreate noch ein
aktiv:=true; gemacht damit das prog einen startwert hat ....
naja aber wie gesagt es passiert nix ?!
Jemand eine Idee ?
MfG
Einfach112


Blackheart666 - Mi 06.09.06 08:24


Delphi-Quelltext
1:
if not Form1.Active then Caption:=('Fenster nicht Aktiv !');                    


Tastaro - Mi 06.09.06 10:34


Delphi-Quelltext
1:
2:
3:
4:
if screen.ActiveForm = Self then
begin
   ...
end;


Beste Grüße
Tastaro


jaenicke - Mi 06.09.06 10:49
Titel: Re: prüfen ob form aktiv ist ...!?
user profile iconeinfach112 hat folgendes geschrieben:
Dachte zunächst ich könnte ganz einfach arbeiten mit TForm1.FormActivate(Sender: TObject);
aber leider zählt das ja schon ab dem moment wo ich meine Form starte....

Die Lösungen, die bereits gepostet wurde, sollten ja schon reichen, aber hier möchte ich doch noch richtigstellen, dass das nicht notwendigerweise so ist! Du kannst, wenn du die Prozedur FormActivate bereits erstellt hast, diese im Objektinspektor aus OnActivate löschen. Dann kannst du an einer beliebigen Stelle das Event wieder auf diese Prozedur lenken:

Delphi-Quelltext
1:
Form1.OnActivate := FormActivate;                    

und wieder entfernen:

Delphi-Quelltext
1:
Form1.OnActivate := nil;                    


einfach112 - Mi 06.09.06 16:21
Titel: THX THX THX
jo super es läuft ! vielen dank euch allen .! !