![]() |
Enter drücken soll zwei versch. Sachen machen
Ich bin's nochmal^^
Ich möchte bei meinem Lauftextgenerator gerne den Lauftext mit Enter starten und auch wieder stoppen. Mein erster Ansatz sieht so aus:
Delphi-Quellcode:
Wie kann ich der Entertaste nun zuweisen, dass sie sie aber die Prozedur BStopClick auslösen soll, wenn der Text grade am laufen ist?
procedure TForm1.EEditKeyPress(Sender: TObject; var Key: Char);
begin if (key = #13) then begin key := #0; BStartClick(Sender); end end; |
Re: Wie überprüft man, ob eine Prozedur am laufen ist oder n
Merk dir den Zustand in einer bool'schen Variable.
|
Re: Wie überprüft man, ob eine Prozedur am laufen ist oder n
Delphi-Quellcode:
Klappt aber leider nicht =/
implementation
var lauftext, buchstabe: string; tbwert: integer; LauftextActive: boolean; {$R *.dfm} procedure TForm1.TimerTimer(Sender: TObject); begin buchstabe := copy(lauftext, 1, 1); delete(lauftext, 1, 1); LLauftext.Caption := lauftext + buchstabe; lauftext := LLauftext.Caption; end; procedure TForm1.TrackBarChange(Sender: TObject); begin tbwert := TrackBar.Min + TrackBar.Max - Trackbar.Position; Timer.Interval := tbwert; ProgressBar.Position := TrackBar.Position; end; procedure TForm1.BCloseClick(Sender: TObject); begin Close; end; procedure TForm1.BStartClick(Sender: TObject); begin Timer.Interval := TrackBar.max; lauftext := EEdit.Text + ' '; setLength(lauftext, 50); LLauftext.Caption := lauftext; Timer.Enabled := true; EEdit.Visible := false; LauftextActive := true; end; procedure TForm1.BStopClick(Sender: TObject); begin Timer.Enabled := false; LLauftext.Caption := '<Hier erscheint der Lauftext>'; EEdit.Visible := true; LauftextActive := false; end; procedure TForm1.EEditKeyPress(Sender: TObject; var Key: Char); begin if LauftextActive = false then begin if key = #13 then begin key := #0; BStartClick(Sender); end; end else begin key := #0; BStopClick(Sender); end; end; end. |
Re: Wie überprüft man, ob eine Prozedur am laufen ist oder n
Also starten tut er den Lauftext noch, aber stoppen klappt immer noch nicht. Ich komm nicht drauf =/
|
Re: Wie überprüft man, ob eine Prozedur am laufen ist oder n
*gelöscht* Hier stand Mist... :oops:
|
Re: Wie überprüft man, ob eine Prozedur am laufen ist oder n
Hallo,
Ich würde einen Haltepunkt setzen, wenn LauftextActive auf true gesetzt wird, dann lässt du den Ausdruck überwachen. Nun gibts die Option "bei Änderung anhalten". Da siehst dann an welcher Stelle die Variable wieder zurückgesetzt wird. Aber meiner Meinung nach brauchst Du die variable nicht, frag doch Timer.Enabled ab. Gruß Sascha p.s.:
Delphi-Quellcode:
kann man auch so
if LauftextActive = false then
Delphi-Quellcode:
abfragen. ;-)
if not LauftextActive then
|
Re: Wie überprüft man, ob eine Prozedur am laufen ist oder n
Du meinst wohl
Delphi-Quellcode:
if not LauftextActive then
|
Re: Wie überprüft man, ob eine Prozedur am laufen ist oder n
Wo finde ich denn "Bei Änderung anhalten" ? Wenn ich rechtsklicke in der Liste überwachter Ausdrücke, dann find ich des da ned
|
Re: Wie überprüft man, ob eine Prozedur am laufen ist oder n
Also die Variable wird schon zum richtigen Zeitpunkt auf true gesetzt. Allerdings klappt das beenden mit der Entertaste und das damit verbundene zurücksetzen nicht.
Delphi-Quellcode:
Wie kann nun weiter vorgehen? Mit else scheint es nicht zu klappen
procedure TForm1.EEditKeyPress(Sender: TObject; var Key: Char);
begin if not LauftextActive then begin if key = #13 then begin key := #0; LauftextActive := true; BStartClick(Sender); end; end; end; |
Re: Enter drücken soll zwei versch. Sachen machen
Hallo Tobicaster,
im Augenblick wir im Else – Zweig ein anderer Key abgefragt außer die Return – Taste. Du musst die Abfrage umstellen: Ich zeige das mal an einem Beispiel:
Delphi-Quellcode:
Außerdem würde ich im Form die Eigenschaft KeyPreview auf TRUE umstellen, damit alle Tastatureingaben zuerst vom Form verarbeitet werden.
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin Edit1.Clear; Edit2.Clear; if key = #13 then begin key := #0; if ReturnFlag then begin Edit1.Text:= 'TRUE'; ReturnFlag:= FALSE; end else begin Edit2.Text:= 'FLASE'; ReturnFlag:= TRUE; end; end; end; Bis bald Chemiker |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10: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