webForumDet fria alternativet

Glos program..

5 svar · 426 visningar · startad av Alvar s

Alvar sMedlem sedan mars 2000398 inlägg
#1

Frågor markerade med * betyder att det är bra om du laddar hem källkoden här och svarar utifrån den...

1*: Hör gör man så att man kan skriva små och stora bokstäver blandade i en edit? ( nu måste man ju skriva exakt som man själv skriver.. )

2: Kan man använda en bild till en "button" ? Dvs: Bilden ska vara inuti "button:en" ( men intrycknings effekten ska vara kvar... )

3*: Kan man använda bilder till rättningen? Dvs: När jag har 1 rätt visas bild1.jpg och när jag har 2 rätt visas bild bild2.jpg etc... ( i stället för text som inte ser lika bra ut... )

4*: Kan man göra så att orden som är med slumpas fram från en annan fil? ( med kryptering så att man inte kan fuska... )

------------------
One technique mastered is better than one hundred sampled.

the proclaimerMedlem sedan aug. 200088 inlägg
#2

2: du kan ju prova SpeedButton eller BitBtn?!

MatteMedlem sedan aug. 20002 975 inlägg
#3

1. I Edit1's event OnExit lägger du in följande kod:
procedure TForm1.Edit1Exit(Sender: TObject);
begin
With sender as TEdit do Text:=AnsiLowerCase(Text);
end;
Du kan sedan använda samma procedure till alla dina Edit.

3. Lägg en Image på din TForm. Ladda sedan in aktuell bild med Image1.Picture.LoadFromFile.
Alternativt kan du lägga in alla dina bilder i varsin Image där du sätter visible till False.
Du ska kanske tänka på hur det blir om du har 30 eller 50 glosor. Kanske det istället går att hitta andra vägar att göra ditt program roligare än en särskild bild beroende på antal rätt.

4. Det är rekommendabelt att lägga glosorna i en separat fil. Du kan t.ex lägga dom i en typad fil.
Under Type lägger du in något i stil med det här:
Glostyp=Record
Ord1:String[20];
Ord2:String[20];
Svargrad:Integer;
Anvand:Boolean;
End;
Under Var lägger du in något i stil med det här:
Glosfil: File Of Glostyp;
GlosArray: Array of Glostyp:
Läs in dina glosor i en Array och slumpa från Array'en.
Lämpligtvis har du ett separat program för att skriva glosor till filen.
Vad det gäller kryptering är jag nollställd, men du kan exempelvis ändra ordningstalet för bokstäverna med 10 när du läser till och från filen.

Alvar sMedlem sedan mars 2000398 inlägg
#4

1*: Jag fick det inte att funka :( ( dvs: jag klarar det inte ;) ) Kan du visa med med källkoden?

4*: Fattar inget här heller :) Kan du visa med källkoden... ?

5*: På form2 kan ju vissa ord komma flera gånger, hur gör man så att dom endast får komma upp en gång?

6: Om jag har en ComboBox med 3 alternativ, hur gör jag för att en kod ska köras för en viss rad? ( viss text dvs.. )

7: "edt1.text:= '';" / Hur ska man skriva inom "" för att man ska kunna skriva 2 olika saker men ändå få rätt?

Lämpligtvis har du ett separat program för att skriva glosor till filen.

Hur gör man? :)

------------------
One technique mastered is better than one hundred sampled.

MatteMedlem sedan aug. 20002 975 inlägg
#5

1.
För Edit1 funkar det ju.
För Edit2’s Event OnExit väljer du Edit1Exit.
För Edit3’s Event OnExit väljer du Edit1Exit.

4.
Du ska nu få ett separat program att skriva in dina glosor med.
Lägg in följande under Type i Form1’s unit:
type
Glostyp=Record
Ord1:String[25];
Ord2:String[25];
Svargrad:Integer;
Anvand:Boolean;
End;

Lägg in följande under Var i Form1’s unit:
var
Form1: TForm1; {Finns redan, ska ej skrivas in}
Glosfil:File of Glostyp;

På Form1’s Event OnActivate skriver du in följande kod:
procedure TForm1.FormActivate(Sender: TObject);
var i,j:Integer;Glosa:Glostyp;
begin
With StringGrid1 do
begin
Cells[0,0]:='Svenska';
Cells[1,0]:='Engelska';
Cells[2,0]:='Svårighetsgrad';
RowCount:=2;
For i:=0 to 2 do cells[i,1]:='';
try
AssignFile(Glosfil,'Minaglosor.glo');
Reset(Glosfil);
While not Eof(Glosfil) do
begin
If Cells[0,1]<>'' Then RowCount:=RowCount+1;
Read(Glosfil,Glosa);
For j:=1 to Length(Glosa.Ord1) do
Glosa.Ord1[j]:=Chr(ord(Glosa.Ord1[j])-10);
For j:=1 to Length(Glosa.Ord2) do
Glosa.Ord2[j]:=Chr(ord(Glosa.Ord2[j])-10);
Cells[0,RowCount-1]:=Glosa.Ord1;
Cells[1,RowCount-1]:=Glosa.Ord2;
Cells[2,RowCount-1]:=IntToStr(Glosa.Svargrad);
end;
CloseFile(Glosfil);
except
Rewrite(Glosfil);
CloseFile(Glosfil);
end;
SetFocus;
end;
end;

Lägg en TstringGrid på Form1.
Skriv in följande Properties för StringGrid1:
ColCount = 3
FixedCols = 0
FixedRows = 1
Options-GoEditing = True
Scrollbars = ssVertical
Ställ in lämpligliga Kolumnbredder för Stringgrid1.
Lägg in följande på Event OnKeyDown:
procedure TForm1.StringGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
If Key=VK_DOWN then
With StringGrid1 do
If Row=RowCount-1
then RowCount:=RowCount+1;
end;
Lägg in följande på Event OnKeyPress:
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
If Key=#13 Then
With StringGrid1 Do
If Col<2 Then Col:=Col+1 Else
Begin
If Row=RowCount-1 then RowCount:=RowCount+1;
Row:=Row+1;
Col:=0;
End;
If StringGrid1.Col=2 Then
Begin
If (Key<>#13) and (Key<>#8) and (Key<>#27) Then
If (Key<#48) or (Key>#57) Then Key:=#0;
End;
end;

Lägg en TBitBtn på form1.
Skriv in följande Properties för BitBtn1:
Kind = bkYes
Caption = &Spara
Lägg in följande kod på BitBtn1’s Event OnKlick:
procedure TForm1.BitBtn1Click(Sender: TObject);
var i,j:Integer;Glosa:Glostyp;
begin
AssignFile(Glosfil,'MinaGlosor.glo');
Rewrite(Glosfil);
With StringGrid1 do
For i:=1 to RowCount-1 do
If (Cells[0,i]<>'') and
(Cells[1,i]<>'') and
(Cells[2,i]<>'')
then begin
Glosa.Ord1:=Cells[0,i];
Glosa.Ord2:=Cells[1,i];
Glosa.Svargrad:=StrToInt(Cells[2,i]);
For j:=1 to Length(Glosa.Ord1) do
Glosa.Ord1[j]:=Chr(ord(Glosa.Ord1[j])+10);
For j:=1 to Length(Glosa.Ord2) do
Glosa.Ord2[j]:=Chr(ord(Glosa.Ord2[j])+10);
Write(Glosfil,Glosa);
end;
CloseFile(Glosfil);
Close;
end;
Lägg ytterligare en TBitBtn på Form1.
Skriv in följande Properties för BitBtn2:
Kind = bkCancel
Caption = Avbryt
Lägg in följande kod på BitBtn2’s Event OnKlick:
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
Close;
end;

Nu är det dags att använda glosorna i ditt program.
Lägg in följande under Type i Form2’s unit:
type
Glostyp=Record
Ord1:String[25];
Ord2:String[25];
Svargrad:Integer;
Anvand:Boolean;
End;

Lägg in följande under Var i Form2’s unit:
var
Form2: Tform2; {Finns redan, ska ej skrivas in}
Glosfil:File of Glostyp;
Gloslista:Array of Glostyp;
SlumpGlosor:Array[1..20] of Glostyp;

På Form1’s Event OnActivate skriver du in följande kod:
procedure TForm1.FormActivate(Sender: TObject);
var i:Integer;Glosa:Glostyp;
begin
try
AssignFile(Glosfil,'Minaglosor.glo');
Reset(Glosfil);
While not Eof(Glosfil) do
begin
Read(Glosfil,Glosa);
For i:=1 to Length(Glosa.Ord1) do
Glosa.Ord1:=Chr(ord(Glosa.Ord1)-10);
For i:=1 to Length(Glosa.Ord2) do
Glosa.Ord2:=Chr(ord(Glosa.Ord2)-10);
Glosa.Anvand:=False;
SetLength(Gloslista,Length(Gloslista)+1);
Gloslista[High(Gloslista)]:=Glosa;
end;
CloseFile(Glosfil);
except
Rewrite(Glosfil);
CloseFile(Glosfil);
end;
end;

Lägg sedan till följande procedure till Unit2 för att ta fram en slumpad lista på 20 ord. Där finns en spärr för att inte använda samma ord 2 gånger förrän programmet startar igen. Använd den slumpade Array’en för att hämta glosord och rätta.
procedure Slumpaord;
Var i,j,k,L,EjAnvanda:Integer;
begin
EjAnvanda:=0;
For i:=0 to High(Gloslista) do
If not Gloslista.Anvand Then EjAnvanda:=EjAnvanda+1;
For i:=1 to 20 do
Begin
SlumpGlosor.Ord1:='';
SlumpGlosor.Ord2:='';
End;
Randomize;
For i:=1 to 20 do
If EjAnvanda>0 then
Begin
j:=1+Random(EjAnvanda);
L:=0;
k:=0;
While L<j do
begin
If not Gloslista[k].anvand Then L:=L+1;
If L<j Then k:=k+1;
End;
EjAnvanda:=EjAnvanda-1;
Gloslista[k].Anvand:=True;
SlumpGlosor:=Gloslista[k];
End;
end;

5.
Se 4.

6.
Comboboxens Event OnChange eller onClick.
Om du vill flytta över text: Edit1.Text:=Combobox1.Items[Combobox1.ItemIndex]
Om du vill välja procedure:
Case ComboBox1.ItemIndex of
0: ….
1: ….
2: ….
End;

7.
Man får leta i strängen efter ”;” och om man hittar ”;” så får man ta ut ordet som finns före och göra en jämförelse. Ta bort strängen t.o.m. ”;” och kör sedan om proceduren.

[Redigerat av Matte den 04 nov 2000]

Alvar sMedlem sedan mars 2000398 inlägg
#6

1: Jag lyckades efter mycket testande att skapa en "procedure" :) Programmet gick igång... men det funkade inte :( Måste man göra nåt speciellt förutom att skriva in koden?

4: Fattar inget nu heller :) Kan du göra en källkods fil? :)

5: Se 4…

6: Förstog inte här heller :) Hur får man in text på andar rader.. ? Gick inte med Items/Tstrings :(

7: Fattade inte här heller :e ( jag är inte så bra på det här än ;) ) Om jag vill att ordet "hej" och "tja" ska vara rätt, hur gör jag då? ( endast dom 2 dvs.. )

8: Finns det nån bra bok jag borde läsa? :) ;)

------------------
One technique mastered is better than one hundred sampled.

132 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)