Avatar billede velle Nybegynder
08. april 2002 - 22:25 Der er 15 kommentarer

Findes der en funktion så den venter til der trykkes

Jeg synes at der burde findes en slags vente-kommando, som får programmet til ikke at køre videre før der er trykket på en eller anden knap. Gør der det?
Avatar billede dkn Nybegynder
08. april 2002 - 22:34 #1
Ja Onclick eventen bliver jo kørt. Men kan du ikke fortælle list mere om hvor dit kode ligger ligenu?
Avatar billede zerohero Nybegynder
08. april 2002 - 22:41 #2
prøv eksempelvis at indsætte denne kode i din OnFormCreate procedure...

showmessage('Klik for at gå videre');

dette resultere i at programmet starter først med videre indlæsning når der klikkes på knappen...

Håber at det var det du mente...

ZeroHero
Avatar billede freeall Nybegynder
08. april 2002 - 22:44 #3
Du laver en ny form, og så fra mainformen (TForm1), kan du skrive
Form2.ShowModal.
Nu stopper Form1 indtil Form2 er lukket. Sådan kan du event. gøre.
Avatar billede velle Nybegynder
08. april 2002 - 22:54 #4
Det er en slags quiz:

procedure Svar;
begin
if (Gaet=RigtigtSvar) then
  begin
//en hel masse gejl
  end
else
  begin
  label1.caption:= RigtigtSvar;
  VentPaaBrugerInput;
  LavNytSpoergsmaal;
  end;
end;

Altså ideen er at når brugeren svarer forkert, så bliver det rigtige svar vist, og det programmet går først videre når han klikker. Dvs. at han får lidt tid til at se hvad svaret var.
Avatar billede dkn Nybegynder
08. april 2002 - 22:56 #5
lav det som en function:

Function Svar:boolean;
begin
if (Gaet=RigtigtSvar) then
  begin
  result := true;
//en hel masse gejl
  end else
  begin
  result := false;
  label1.caption:= RigtigtSvar;
  VentPaaBrugerInput;
  LavNytSpoergsmaal;
  end;
end;


//kald
If svar then showmessage('Rigtig') else
showmessage('forkert');
Avatar billede siz23 Nybegynder
08. april 2002 - 22:58 #6
well du kunne gøre som ZeroHero svare, ved at gøre sådan her.

procedure Svar;
begin
if (Gaet=RigtigtSvar) then
  begin
//en hel masse gejl
  end
else
  begin
  ShowMessage(RigtigtSvar); 
  VentPaaBrugerInput;
  LavNytSpoergsmaal;
  end;
end;

//det vil vise det rigtige svar i en dialogbox.

håber du kunne bruge det til noget...
Avatar billede dkn Nybegynder
08. april 2002 - 23:05 #7
Function CheckSvar(Svar:string):string;
begin
if (Svar=RigtigtSvar) then
  begin
  result := '0';
//en hel masse gejl
  end else
  begin
  result := RigtigtSvar;
  label1.caption:= RigtigtSvar;
  end;
end;

Var
CheckRes:string;
begin
CheckRes := CheckSvar('Hej');
If CheckRes = '0' then showmessage('Rigtig') else
showmessage('Forkert! Rigtige svar er: '+#13#10+CheckRes);


Lavede lidt om, ved ikke om du kan forstå ideen
Avatar billede velle Nybegynder
08. april 2002 - 23:30 #8
Det dur ikke med ShowMessage(), ødelægger et ellers ok design i programmet. >>Dkn, jeg forstår dit program, men hvad gør "#10"?
Avatar billede dkn Nybegynder
08. april 2002 - 23:43 #9
#13#10 skifter linie
Avatar billede dkn Nybegynder
08. april 2002 - 23:44 #10
jeg brugte bare showmessage() som eksempel, du må selv finde ud af hvilken kode du ønsker istedet
Avatar billede hebo Nybegynder
09. april 2002 - 15:14 #11
Så brug messagedlg i stedet for..den er noget pænere
eller lav en
variabel := true;
while variabel = true do
begin
end;

og så lave et eller andet sted på formen et sted hvor brugeren kan klikke og det kalder en rutine der sætter variabel til FALSE
Avatar billede vikingterror Nybegynder
09. april 2002 - 15:23 #12
Lav det til en repeat loop der kører indtil dit svar er som du vil have det:

repeat
  // Udfør ting der skal udføres indtil der kommer et rigtigt svar
until Svar = RigtigtSvar;
Avatar billede zerohero Nybegynder
09. april 2002 - 15:46 #13
bare husk at tilføje application.processmessages hvis du ikke vil have at dit program skal låse dig ude... ;))
Avatar billede doc404 Novice
09. april 2002 - 19:12 #14
Dit 'problem' skyldes dit program design/flow...

I Windows venter man ikke på at brugeren skal gøre noget - Man gør noget når brugeren eller noget andet skaber et event. Sådan er det generelt set...

I gamle dage var det et mega problem at få 'gamle programmøre' til at tænke i event orienteret programmering istedet for sekventiel programmering.

Måske skulle du bruge 5min på at tænke over om flowet i programmet ikke kunne laves 'rigtigt'?
Avatar billede athlon-pascal Juniormester
10. april 2002 - 09:37 #15
velle>
#13: ASCII-tegn 13 - carriage return (vogn retur, til starten af linjen).
#10: ASCII-tegn 10 - line feed, new line (ny linje).

http://www.asciitable.com/
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester