---
title: "Program hjälp.."
type: "forum-thread"
url: "https://www.webforum.nu/amne/programmering/27827-program-hjälp"
topic: "Programmering"
topic_url: "https://www.webforum.nu/amne/programmering"
author: "Alvar s"
published: "2000-09-18T18:56:00.000Z"
updated: "2000-10-11T20:36:00.000Z"
replies: 38
views: 934
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/programmering/27827-program-hjälp"
---

# Program hjälp..

_Sida 1 av 2._

## #1 — Alvar s, 2000-09-18T18:56Z

Ladda först hem [denna](http://user.tninet.se/~xkk718a/programmering/delphi.zip) källkod

F1: Hur gör jag för att slumpa dom på olika platser? Om Label 1 flyttas ner vill jag att edit 1 också ska flyttas ner, om label 2 flyttas ska edit 2 ligga bredvid etc..

F2: Vilken kod ska jag använda till button1 för att programmet ska "rätta" allt? ( ser till att det står rätt saker i fälten dvs )

Permalänk: https://www.webforum.nu/p/27827

## #2 — WiNNe, 2000-09-19T21:29Z

Varför skulle man vilja ha komponenter slumpade. Är det inte bättre att designa det snyggt? Nåja.. Så här kan man enkelt göra det:

S1: 
\[snip\]
Randomize;
edit1.top:=random(xxx)
label1.top:=edit1.top;
edit1.left:=random(xxx)
label1.left:=edit1.left-50;
\[snip\]

Gör man lite mer dynamiska funktioner
rekommenderar jag att du kollar på funktioner som "FindComponent" och "ComponentCount".

S2: Här kan man göra på massor av sätt. Jag brukar skapa en Procuedure som kallas TForm1.ValidateDataInForm som kollar en del regler för fälten. Typ så här:

procedure TForm1.ValidateDataInForm;
begin
    If Length(Edit1.text) \< 6 then X2ErrorMessage('Must be at least 6 characters',Edit1);
end;
    
X2ErrorMessage är en egen procedure som visar en messagebox med ett stopptecken och hoppar sen ut ur spararutinen. Är det nån enkel validering du är ute efter så kolla in TMaskEdit, där kan man ange regler för vad som matas in i edit boxen och på så sätt slippa en speciell validerings funktion.

Permalänk: https://www.webforum.nu/p/400363

## #3 — Alvar s, 2000-09-20T18:58Z

F1:

Jag la till koden i F1 under begin men fick följande felmeddelanden:

\[Error\] Unit1.pas(34): Undeclared identifier: 'snip'
\[Error\] Unit1.pas(35): Missing operator or semicolon
\[Error\] Unit1.pas(36): Undeclared identifier: 'xxx'
\[Error\] Unit1.pas(37): Missing operator or semicolon
\[Error\] Unit1.pas(39): Missing operator or semicolon
\[Error\] Unit1.pas(41): Statement expected, but expression of type 'Set' found

Vad gör jag fel? :(

F2:

Hur ska koden se ut om jag endast vill rätta texten i edit1? Tex: Om det ska stå test i edit1 och personen har skrivit in det, ska den visa att det är rätt när den rättar, se [detta](http://user.tninet.se/~xkk718a/matte.exe) program för att se vad jag menar...

Permalänk: https://www.webforum.nu/p/400364

## #4 — WiNNe, 2000-09-21T07:25Z

\[Snip\] betyder bara att det är ett klipp i källkoden. Det ska du inte ta med när du testar.
(xxx) får du byter du ut mot till exempel (500) och då slumpar den ett tal som är max 500.

Lägg till  ytterligare en label då som visar om det är rätt. Nåt sånt här då:
if edit1.text='Test' then label2.caption:='RÄTT!';

Permalänk: https://www.webforum.nu/p/400365

## #5 — Alvar s, 2000-09-21T11:15Z

F1:

Nu får jag följande felmeddelanden:

\[Error\] Unit1.pas(36): Missing operator or semicolon
\[Error\] Unit1.pas(38): Missing operator or semicolon

Vad är fel nu då? :)

F2:

Exakt var ska jag lägga in koden: if edit1.text='Test' then label2.caption:='RÄTT!';  ?

Permalänk: https://www.webforum.nu/p/400366

## #6 — jt, 2000-09-21T11:28Z

Antagligen fattas det två semikolon i din kod.

Jag vet inte hur din kod ser ut men lägg till ; i slutet på rad 36 och 38.

Permalänk: https://www.webforum.nu/p/400367

## #7 — WiNNe, 2000-09-21T14:29Z

Slarvade visst lite där. Jo det fattas en del semikolon... :)

Permalänk: https://www.webforum.nu/p/400368

## #8 — Alvar s, 2000-09-22T16:55Z

F1: Jag fick det att funka, fast det var nog inte så jag tänkte mig... Kan man inte "randomiza" så att dom endast byter plats med varandra? ( Nu hamnade dom varsomhelst :) )

2: Fick detta att funka oxå, men kan man inte ha en rättning som visar exakt hur många rätt man har och har man alla rätt kör den en viss kod? ( som i matte programmet.. )

F3: Om Det finns 4 kapitel, och man väljer en "länk" till en ny form/kapitel och klarar alla frågorna, kan man göra så att det syns på den första formen ( skulle vara bra om det lagrades nånstans.. )

Permalänk: https://www.webforum.nu/p/400369

## #9 — WiNNe, 2000-09-23T12:37Z

F1: Om du bara ska byta plats mellan dem är det väl bättre att bara slumpa ut captionen till labeln och texten till editboxen istället?

Det kan man göra på en massa olika sätt. Jag skulle nog löst det med nån funktionsanrop som placerar ut texten rätt, ungefär så här: 

Function RandomLabels : string;
Var i : integer;
Begin
   i:=random(3)+1;
   Case i of 
    1 : result:='Kalle';
    2 : result:='Pelle';
    3 : result:='Lisa';
   end;
End;

\[snip\]
label1.caption:=RandomLabels;
\[snip\]

du måste då också (kanske) hantera att du inte får upp samma label två gånger.

F2: Du måste hålla reda på hur många rätt man har bara.

\[snip\]
Var correct : integer;
\[snip\]
If edit1.text='55' then 
begin
   label3.caption:='RÄTT';
   correct := correct+1;
end;
\[snip\]
label14.caption:='Antal rätt:' + inttostr(correct);
\[snip\]

F3: Om man vill lagra variabler som nås i hela programmet ska du göra dem globala, lägg dem efter Form1 : TForm1; i din första form och lägga sedan till form1 i Uses i de andra formulären bara.

Permalänk: https://www.webforum.nu/p/400370

## #10 — Alvar s, 2000-09-24T09:46Z

F1:

På första raden blir det följande fel: \[Error\] Unit1.pas(36): Statement expected but 'FUNCTION' found

Var ska jag klistra in: label1.caption:=RandomLabels; ?

F2:

34: procedure TForm1.Button1Click(Sender: TObject);
35: Var correct : integer;
36: begin
37: If edit1.text='55' then
38: begin
39: label3.caption:='RÄTT';
40: correct := correct+1;
41: end;
42:
43: end;
44: 
45: procedure TForm1.Label14Click(Sender: TObject);
46: begin
47: If edit1.text='55' then
48: begin
49: label14.caption:='Antal rätt:' + inttostr(correct);
50: end;
51: 
52: end;
53:
54: end.

Jag fick följande fel:

\[Hint\] Unit1.pas(40): Value assigned to 'correct' never used
\[Error\] Unit1.pas(49): Undeclared identifier: 'correct'

Vad är fel? :) / Hur gör man för att en knapp ska vara "visible = false" och så "visible = true" när man klarat alla frågorna?

F3:

Fattar inget :)

Kan du förklara lite mer.. ?

F4: Efter att man svarat rätt på en fråga vill jag att den blir "enabled = false" Hur skriver man?

Permalänk: https://www.webforum.nu/p/400371

## #11 — WiNNe, 2000-09-24T12:23Z

F1,1: Vet inte exakt vad du gjort fel men antar att du har nåt som är före FUNCTION.

F1,2: Där du vill att den körs ifrån.

F2: Du kan inte ha variablen "correct" i den ena funktionen bara , den måste vara global om man ska göra sådär. Lägg den under deklarationen av formuläret: Var Form1 : TForm1; istället.

F3: Vet inte hur man kan beskriva det bättre, se F2 ovan åsså.

F4: Du har ju nästan fixat det redan.
komponentensnamn.enabled:=false;
exempel: label1.enabled:=false;

Permalänk: https://www.webforum.nu/p/400372

## #12 — Alvar s, 2000-09-25T14:21Z

F1:

Var ska denna kod köras?: 

Function RandomLabels : string;
Var i : integer;
Begin
i:=random(3)+1;
Case i of 
1 : result:='Kalle';
2 : result:='Pelle';
3 : result:='Lisa';
end;
End;

Hur skriver man för att en kod ska köras så fort programmet startar?

F2: Nu fick jag det här att funka oxå :) Men...

Problem 1:

Såhär ser koden ut nu:

If edit1.text='55' then
begin
edit1.enabled:=false;
correct := correct+1;

label14.caption:='Antal rätt: ' + inttostr(correct);

När jag "disablat" edit1 och trycker på button1 (rättningen) så får jag poäng för frågan jag redan svarat på... Hur fixas jag det här? ( så att man endast får 1 rätt för en fråga )

Problem/Fråga 2:

Om jag har 15 frågor, hur gör man för att den ska köra en viss kod så fort man fått 15 rätt?

F3: Förstog den oxå, förutom hur jag ska kunna visa det på form1... Hur ska jag skriva i dom andra "formarna" för att den ska skicka en viss kod till form1 så fort den "formen" klarat alla frågorna.. ?

F4: Fixat :)

F5: Hur lägger man in en bakgrund? :)

Permalänk: https://www.webforum.nu/p/400373

## #13 — WiNNe, 2000-09-25T14:46Z

F1: 
Jisses, du e jätte-nybörjare va? :)
En funtion ska inte köras på nåt särskillt ställe, den anropas från nånannanstans.
exempel:
label1.caption:=RandomLabels; 

F2: Gör en rutin som körs varje gång
du trycker på nån rättningsknapp (eller whatever), se till att Correct nållställs före varje kontroll så fixar det sig. Sen kan du enkelt kolla om du har 15 rätt med en If sats.

F3: Anropa den första formen bara.
Form1.label1.caption:='TEST'; från form2. Är den med i Uses så hittar den form1 fint därifrån.

F5: Finns en käck komponent som heter IMAGE under fliken Additional, testa den.

Permalänk: https://www.webforum.nu/p/400374

## #14 — Alpha II, 2000-09-25T16:25Z

F5:
 Man kan ju rita en bakgrund med *canvas*.

Permalänk: https://www.webforum.nu/p/400375

## #15 — Alvar s, 2000-09-25T17:12Z

F1:

Jisses, du e jätte-nybörjare va? :) / Man kan väl inte vara bra i allt? :)

Jag ska testa senare, om jag fattat det här.. :)

F2:

Hur gör jag för att Correct ska nollställas varje gång?

Hur skriver man If satsen?

Permalänk: https://www.webforum.nu/p/400376

## #16 — WiNNe, 2000-09-25T19:37Z

Nollställa Correct gör lämpligen med "Correct:=0;" typ.

If satsen som kollar alla svaren kanske ser ut så här om man inte kommer på nåt bättre (enklast för nybörjare):

If (edit1.text='TEST') and (edit2.text='TEST2') osv...
then label99.caption:='ALLA RÄTT';

Permalänk: https://www.webforum.nu/p/400377

## #17 — WiNNe, 2000-09-26T20:18Z

Antar att du börjar få ordning på det då det inte kommit nåt nytt inlägg på ett dygn nu :)

Går antligen mycket bättre för dig än det går för Helsingborg i Champions League, fan vad synd om dem... \*snyft\*...

Permalänk: https://www.webforum.nu/p/400378

## #18 — Alvar s, 2000-09-27T17:41Z

Jag var på träning igår så jag kunde inte posta nåt inlägg då :e

Nu har jag dock inte så många problem kvar, men följande:

Hur gör man för att nollställa correct? ( var skriver man in den där koden? )

Jag får rättningen med alla rätt att funka, men INTE rättningen med +1 rätt, tar jag bort "alla rätt" rättningen funkar det... Vad beror det på? Min nuvarande "version" finns på: [http://user.tninet.se/\~xkk718a/delphi.zip](http://user.tninet.se/~xkk718a/delphi.zip)  Vad ska jag lägga till i "rättnings" knappen för att det ska funka?

Permalänk: https://www.webforum.nu/p/400379

## #19 — WiNNe, 2000-09-28T06:49Z

Så här skulle nog en nybörjare skriva det: 
\-----------------------------------------

var
  Form1: TForm1;
  correct : integer;

implementation

{$R \*.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
	Correct:=0;
	if (edit1.text='melt') then correct:=correct+1;
	if (edit2.text='wasp') then correct:=correct+1;
	if (edit3.text='sting') then correct:=correct+1;
	if (edit4.text='bite') then correct:=correct+1;
  label16.caption:='Antal rätt: ' + inttostr(correct) ;
end;

Permalänk: https://www.webforum.nu/p/400380

## #20 — Alvar s, 2000-09-29T08:45Z

F1:

Nu funkar rättningen oxå bra, men hur skriver jag för att den ska visa "alla rätt" när den klarat av alla frågorna?

F2:

Jag fattar ingenting av slumpfunktionen... :) Kan du editera filen jag har på min server och skicka upp den nånstans... ?

F3:

Jag lyckas inte med att köra kod på form1 som körs i form1 :( Kan du förklara lite mer? Var ska allt stå, ska det stå nåt speciellt etc.. Skrev in ungefär som du skrev ( tror jag iaf :) ) och efter en del ändringar fick jag programmet att gå igång, men det funkade ändå inte.. ( så nåt måste vara fel för mig :( )

F4:

Om jag öppnar form2 från form1 vill jag att form1 ska stängas och form2 ska hamna på precis samma plats som form1, hur gör man?

Permalänk: https://www.webforum.nu/p/400381

---

Tråden på webben: https://www.webforum.nu/amne/programmering/27827-program-hjälp  
Nästa sida: https://www.webforum.nu/amne/programmering/27827-program-hjälp/page2.md
