AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit Memo und Tastendruck

Ein Thema von Beatmaster S · begonnen am 17. Mai 2004 · letzter Beitrag vom 17. Mai 2004
Antwort Antwort
Benutzerbild von Beatmaster S
Beatmaster S

Registriert seit: 17. Apr 2003
7 Beiträge
 
#1

Probleme mit Memo und Tastendruck

  Alt 17. Mai 2004, 12:09
Hallo zusammen,

ich versuche gerade ein Klickadventure zu schreiben. Die Dialoge werde in einem Memofeld dargestellt.Wenn man die ENTER-Taste drückt, soll der Dialog fortgeführt werden. Leider funktioniert das ganze aber gar nicht so, wie ich das haben will

Anstatt immer nachfolgende Textzeilen auszugeben, wird immer wieder nur die erste textzeile erneut ausgegeben, wenn man die ENTER-Taste drückt. Habt ihr eine Idee woran das liegen könnte?

Code:
procedure memo1keypress(Sender: Tobject; var key: char);
begin
 if key = #13 then begin
  weiter:= true;
 end;
end;
Code:
procedure personklick (Sender: Tobject);
begin
 weiter:= false;

 memo1.lines.add('hallo');
 while weiter = false do begin
  delay(1);
 end;
 weiter:= false;

 memo1.lines.add('hiho');
 while weiter = false do begin
  delay(1);
 end;
 weiter := false;
 
 
 memo1.lines.add('was geeeeeeht?');
 while weiter = false do begin
  delay(1);
 end;
 weiter := false;

 {..und so weiter das Ganze...}
end;
Ich bin langsam echt am Verzweifeln. Vielleicht bin ich auch auf nem ganzen falschen Weg. Bitte um Hilfe.
Schon mal Danke im Voraus!

Gruß Beatmaster
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Probleme mit

  Alt 17. Mai 2004, 12:11
Hai Beatmaster S,

bitte geben deiner Frage einen etwas aussagekräftigeren Titel. Danke
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.017 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

Re: Probleme mit Memo und Tastendruck

  Alt 17. Mai 2004, 12:45
Versuch es mal statt Delay mit Application.ProcessMessages.
Dieser Befehl sorgt dafür, dass die Nachrichten des Programmes
weiter verarbeitet werden.
Stefan
  Mit Zitat antworten Zitat
Silenoz84

Registriert seit: 11. Mai 2004
Ort: Frankfurt
18 Beiträge
 
#4

Re: Probleme mit Memo und Tastendruck

  Alt 17. Mai 2004, 12:49
Servus,

also irgendwie gefällt mir der Code so nicht wirklich wie du das machst, irgendwas streubt sich da in mir wenn ich das sehe, kanns aber nicht wirklich sagen was?! Naja schau dir mal die Möglichkeit an, vieleicht hilft dir die auch weiter:

Code:
   ...
   var DialogPos: Integer; //Irgendwo in nem Public bereich deklarieren, so dass die entsprechende
                           //Prozedur und dass Tastenereignis darauf zugreifen können!
   ...
   procedure Dingsbums;
   begin
      case DialogPos of
           1: memo1.lines.add('blablbu');
           2: memo1.lines.add('lalala');
           3: memo1.lines.add('hgfhgf');
           4: memo1.lines.add('hgsgjdgh');
           5: memo1.lines.add('jdhgjgdhjhgd');
      end;
   end;
   ...
   procedure TastenDingsbums;
   begin
      Wenn Tastencode = 13 dann //Keine Ahnung wie das jetz heißt
           inc(DialogPos); //inkrementiere um 1
   end;
Hat noch die ein oder andere Macke, nur vom Ansatz find ich's halt en bissl effizienter (ich wette irgendjemand fällt dazu noch was um einiges besseres ein... )

Kannst mir aber mal erklären was des Delay macht? Hab das in der Hilfe nicht gefunden! Hält es das System für ne Sekunde an oder was?

*greetZ* Sile

P.S.: Wenn dein Adventure fertig ist, musst du es unbedingt hier posten!!!


//Edit: Wow, da war Stevie schneller... also hält Delay das System an (immer sehr übel)!
I bin einfach mit der g'sammt Situation unzufrieden...
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Probleme mit Memo und Tastendruck

  Alt 17. Mai 2004, 12:55
Hai Beatmaster S,

warum nicht einfach so:

Delphi-Quellcode:
var
 icount : Integer;
 sl : TStringList;

procedure TForm1.FormCreate(Sender: TObject);
begin
  sl := TStringList.Create;
  sl.Add('Hallo');
  sl.Add('Halli');
  sl.Add('*blubb*');
  icount := 0;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  FreeAndNil (sl);
end;

procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13 then
  begin
    if (icount < sl.Count) then
    begin
      Memo1.Lines.Add(sl.Strings[icount]);
      INC (icount);
    end;
  end;
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.017 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

Re: Probleme mit Memo und Tastendruck

  Alt 17. Mai 2004, 12:57
Zitat von Silenoz84:
//Edit: Wow, da war Stevie schneller... also hält Delay das System an (immer sehr übel)!
Das hat es zumindest in Pascal immer gemacht. Ich meine, dass es diese Funktion bei Delphi garnicht mehr gibt, aber irgendwie ist sie schon implementiert worden. Hab ich auch schon bei mnir gemacht allerdings so:

Delphi-Quellcode:
procedure Delay(cardinal: ms);
var
  Ticks: cardinal;
begin
  Ticks := GetTickCount;
  while GetTickCount < (Ticks + ms) do
    Application.ProcessMessages;
end;
P.S.: Der Ansatz von Beatmaster scheint mir auch ein wenig "pascallastig" zu sein...
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von Beatmaster S
Beatmaster S

Registriert seit: 17. Apr 2003
7 Beiträge
 
#7

Re: Probleme mit Memo und Tastendruck

  Alt 17. Mai 2004, 13:29
Das der Quellcode total Banane war, wusste ich. Ich hatte es kurz darauf auch (wegen der Übersichtlichkeit) in eine Case-Abfrage geschrieben. Mittlerweile hab ich sogar geherausgefunden waran es genau lag, dass es nicht funktioniert hat

Das Prob is nämlich, dass wenn das Memofeld nicht ausgewählt ist auch die ENTER-Taste nicht "aktiviert" ist. Gibt es denn irgendetwas, dass Tasten immer aktiviert sind, egal wo man sich befindet?

Das Delay gibt es bei meinem Deplhi auch nich mehr. Aber da ich das noch wo anderst brauche hab ich das Eingefügt.

Vielen Dank für die schnelle Hilfe. Ich werde wohl eine Stringlist fahren (wie mein IT-Lehrer immer zu sagen pflegt ). Am Übersichtlichsten und da es ja mindestens 40 verschiedene Gespräche gibt, geht das so schneller. Danke nochmal.

PS: Wäre aber nett, wenn mir jemand noch obige Frage beantworten könnte
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.017 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

Re: Probleme mit Memo und Tastendruck

  Alt 17. Mai 2004, 13:37
Zitat von Beatmaster S:
Das Prob is nämlich, dass wenn das Memofeld nicht ausgewählt ist auch die ENTER-Taste nicht "aktiviert" ist. Gibt es denn irgendetwas, dass Tasten immer aktiviert sind, egal wo man sich befindet?
Das geht mit der zumindest mit der Entertaste nicht, aber du könntest die KeyPress-Funktion allen möglichen Komponenten zuordnen, die auch ein OnKeyPress-Event haben.
Stefan
  Mit Zitat antworten Zitat
Simon Joker

Registriert seit: 6. Sep 2002
2 Beiträge
 
#9

Re: Probleme mit Memo und Tastendruck

  Alt 17. Mai 2004, 14:33
Setze KeyPreview deiner Form auf true, dann werden alle Tastendrücke erst in den Formevents verarbeitet.
Auf Tasten wie Enter, Tab usw. wird nicht im KeyPress-Event sondern reagiert in KeyDown/KeyUP!

Cu Simon
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.017 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#10

Re: Probleme mit Memo und Tastendruck

  Alt 17. Mai 2004, 14:37
Zitat von Simon Joker:
Setze KeyPreview deiner Form auf true, dann werden alle Tastendrücke erst in den Formevents verarbeitet.
Auf Tasten wie Enter, Tab usw. wird nicht im KeyPress-Event sondern reagiert in KeyDown/KeyUP!

Cu Simon
Oh, wieder was gelernt...
Stefan
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:10 Uhr.
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