![]() |
Programm mit Leertaste anhalten
Hi,
schreibe gerade ein Programm für die Schule, in dem ich etwas erkläre. Dies läuft allerdings mit einem bestimmten Tempo und für manche vielleicht zu schnell. Ich würde gerne, dass der Nutzer nur die Leertaste drücken muss und dann das Programm so lange angehalten wird, wie die Taste gedrückt ist. Könnte mir das bitte mal jemand erklären. Bin noch Delphi-Anfänger. Thanks... |
Re: Programm mit Leertaste anhalten
Das kann man so nicht sagen, was macht denn dein Programm ?
|
Re: Programm mit Leertaste anhalten
Ich erkläre damit Lagebeziehungen zwischen Punkt und Gerade bzw. zwei Geraden. Nach Auswahl in Drop-Down-Menü und Button-Klick wird dies in einer ListBox gemacht und nebendran wid es grafisch dargestellt. Diese Erklärung soll dann während des Drückens der Leertaste pausiert werden.
|
Re: Programm mit Leertaste anhalten
Du musst schon sagen, wie du die Ausgabe realisiertst.
|
Re: Programm mit Leertaste anhalten
Ich schreibe zeilenweise einen Text in die ListBox und mit Canvas.MoveTo und LineTo zeichne ich links neben der Box. Das läuft soweit alles hintereinander ab. Mein Info-Lehrer meinte nun, ich solle das durch drücken der Leertaste anhalten und es soll weiter gehen, wenn ich die Taste los lasse. Kann ich das irgendwie über OnKeyPress oder OnKeyDown machen oder wie? Es wäre mir auch egal, wenn ich die Taste nicht genau definieren kann. Ich will nur die Erklärung einfach unterbrechen können.
|
Re: Programm mit Leertaste anhalten
Delphi-Quellcode:
ich hoffe dir hilft das weiter... ansonsten müstest du mit Treads arbeiten was für einen Anfänger nicht einfach ist...
procedure TMainForm.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin if key = VK_SPACE then begin Label1.Caption := 'Down'; Timer1.Enabled := false; end; end; procedure TMainForm.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key = VK_SPACE then begin Label1.Caption := 'up'; Timer1.Enabled := True; end; end; procedure TMainForm.Timer1Timer(Sender: TObject); begin // Zeige Nächste Zeile an... end; wenns probleme gibt Poste mal was du hast... :mrgreen: |
Re: Programm mit Leertaste anhalten
Habe das eben mal versucht. Ich weiß ich nicht wie er sich die Zeile, in der er gerade war merken soll. Drücke ich also während die Erklärung läuft Space, so hört er nach dem ersten Zeilenblock auf. Das passiert aber egal an welcher Stelle er gerade war. Danach macht er auch weiter, aber eben immer ab der gleichen Zeile.
Ich habe nach dem ersten Block auch eine Pause in dem Programm von ein paar Sekunden. Hängt das irgendwie damit zusammen?
Delphi-Quellcode:
Die Prozedur für die Pause sieht wie folgt aus:
ListBox1.Items.Add('Zunächst zeichnet man den ersten Punkt P1(1,2) ein');
ListBox1.Items.Add('dabei ist 1 der x-Wert: man geht in Gedanken 1 nach rechts'); ListBox1.Items.Add('2 ist der y-Wert: man geht also in Gedanken 2 nach oben'); ListBox1.Items.Add('nun macht man an der Stelle einen Punkt'); Pause(6000);
Delphi-Quellcode:
procedure pause(zeit:LongInt);
var anfang:LongInt; {lange nat. Zahlen} begin anfang:=GetTickCount; while GetTickCount<anfang+zeit do Application.ProcessMessages; {nichts, nur Botschaften abarbeiten} end; |
Re: Programm mit Leertaste anhalten
Du nimmst den Code von yörsch und fügst folgendes beim Timer ein:
Delphi-Quellcode:
Den Code kannst du ja noch anpassen.
procedure TForm1.Timer1Timer(Sender: TObject);
begin case Timer1.Tag of 0: ListBox1.Items.Add('Zunächst zeichnet man den ersten Punkt P1(1,2) ein'); 1: ListBox1.Items.Add('dabei ist 1 der x-Wert: man geht in Gedanken 1 nach rechts'); 2: ListBox1.Items.Add('2 ist der y-Wert: man geht also in Gedanken 2 nach oben'); 3: begin ListBox1.Items.Add('nun macht man an der Stelle einen Punkt'); Timer1.Tag:= 0;//wenn fertig reset Timer1.Enabled := false; exit; end; end; Timer1.Tag:= Timer1.Tag+ 1; end; |
Re: Programm mit Leertaste anhalten
Vielen Dank :) . Werde das mal ausprobieren.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:26 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