Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem mit Events (https://www.delphipraxis.net/127456-problem-mit-events.html)

Angelnoir 13. Jan 2009 17:28


Problem mit Events
 
Hallo!

Also zuerst sei gesagt, dass ich seit 2 Jahren Turbo Pascal programmiert habe und mich jetzt auf meine Facharbeit vorbereite. Diese sollte in Delphi sein.
Teilweise hab ich mich minimal mit Java beschäftigt.

So, nun zu meiner Frage:
Es mag ziemlich banal erscheinen, aber auch nach 2-tägigem Forum durchsucen und ausprobieren habe ich keine Lösung gefunden.
Ich schreibe einen Text in ein Label und der Text soll geändert werden, wenn man auf einen Button klickt. (Hintergrund des Ganzen ist ein RPG, das ich in TP programmiert habe und jetzt versuche ähnlich in Delphi zu realisieren)

Delphi-Quellcode:
procedure TDialogFrame.Button1Click(Sender: TObject);
begin
   weiter:=true;
end;

procedure TDialogFrame.Dialog1;

begin
   weiter:=false;
   Mann1Lbl.Caption:='Hey! Du da, mach die Augen auf, es wird Zeit!';
   SpielerLbl.Caption:='...';
   If weiter then
      Mann1Lbl.Caption:='Verdammter, verschlafener Kerl, wach endlich auf!';
end;
Irgendwie ist mir klar, dass das nicht gehen kann. Aber wie fange ich denn dan so ein Event ab?
Wäre für Hilfe dankabr, kann auch irgendein Anfänger-Delphi-Tutorial sein :-D

MfG
Angelnoir

MSSSSM 13. Jan 2009 17:35

Re: Problem mit Events
 
Ein Timer, den auf z.B. 10 Sekunden stellen, und im TimerEvent Timer.Enabled:=false; und weiter:=true

Marius

Sir Rufo 13. Jan 2009 18:08

Re: Problem mit Events
 
Ich hoffe ja mal nicht, dass du davon ausgehst, dass der Text "Verdammter, ..." irgendwann mal erscheint.
Zitat:

Zitat von Angelnoir
Delphi-Quellcode:
procedure TDialogFrame.Button1Click(Sender: TObject);
begin
   weiter:=true;
end;

procedure TDialogFrame.Dialog1;

begin
   weiter:=false; // <-- wenn das gemacht wird ...
   Mann1Lbl.Caption:='Hey! Du da, mach die Augen auf, es wird Zeit!';
   SpielerLbl.Caption:='...';
   If weiter then // <-- ... dann wird das hier nie ausgeführt
      Mann1Lbl.Caption:='Verdammter, verschlafener Kerl, wach endlich auf!';
end;

Vielleicht suchst du ja so etwas ...

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, AdvDateTimePicker;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    FWeiter: Boolean;
    procedure SetWeiter(const Value: Boolean);
  public
    { Public-Deklarationen }
    property Weiter : Boolean read FWeiter write SetWeiter;
  end;

var
  Form1: TForm1;

implementation

uses
  DateUtils;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Weiter := True;
end;

procedure TForm1.SetWeiter(const Value: Boolean);
begin
  FWeiter := Value;
  if
    Weiter
  then
    Label1.Caption := 'Weiter ist True'
  else
    Label1.Caption := 'Weiter ist False';
end;

end.

Angelnoir 13. Jan 2009 18:42

Re: Problem mit Events
 
Dass das nicht ausgeführt wird, war mir klar :shock:
Ich hatte gehofft irgendwas zu finden um die Prozedur solange zu unterbrechen bis halt der Button geklickt wird. So etwas wie ein booleascher Ausdruck den der Knopf erzeugt.

Und dass meine eine Prozedur nicht auf meine andere wartet, ist mir auch schon aufgefallen^^
Ist halt alles etwas sehr neu, wenn man aus der hübschen DOS-Welt kommt :-D

P.S.: Ach ich werd mal mit eurenVorschlägen experimentieren, vielen Dank schonmal :)

Sir Rufo 13. Jan 2009 18:52

Re: Problem mit Events
 
Die Applikation wartet immer, bis ein Event ausgelöst wird (z.B. Button drücken).

Du musst der Applikation nicht beibringen zu warten, sondern dann zu reagieren, wenn sie soll ;)
Das Warten kann die von Haus aus schon.

Angelnoir 13. Jan 2009 22:02

Re: Problem mit Events
 
Aber wie sage ich meiner Prozedur Dialog jetzt, dass sie auf nen Button Click warten soll?
Am besten begrabe ich meine Ideen und machs anders :coder2:

taaktaak 13. Jan 2009 22:16

Re: Problem mit Events
 
warum nicht so ...
oder habe ich da was falsch verstanden?

Delphi-Quellcode:
procedure TDialogFrame.Button1Click(Sender: TObject);
begin
  Mann1Lbl.Caption:='Verdammter, verschlafener Kerl, wach endlich auf!';
end;

procedure TDialogFrame.Dialog1;
begin
  Mann1Lbl.Caption:='Hey! Du da, mach die Augen auf, es wird Zeit!';
  SpielerLbl.Caption:='...';
end;

Angelnoir 13. Jan 2009 22:27

Re: Problem mit Events
 
Ja, das ist schon das, was ich will... nur sollten darauf eigentlich noch weite Dialogstücke folgen^^
Meine erste idee war es mitzuzählen, wie oft man schon auf den Button geklickt hat und je nachdme unterschiedliche Sachen anzeigen lassen
Haltet ihr das für zu kompliziert oder umständlich?

taaktaak 13. Jan 2009 22:38

Re: Problem mit Events
 
Hmm, dann alle Texte in OnClick(), einen Unit-lokalen Zähler definieren, diesen mit jedem Click erhöhen und je nach Zählerstand einen Text anzeigen (und nicht vergessen, den Zähler irgendwann wieder zurück setzen)

Angelnoir 13. Jan 2009 22:40

Re: Problem mit Events
 
Ja genau sowas hatte ich mir gedacht :)
Dankeschön für die Hilfe


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:25 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz