Ja, maar je houdt hier dus zelf een tellertje bij waar de laatste punten geschreven zijn. Waarom zou je dan "de laatst gevulde" rij in je StringGrid willen zoeken????
Je kunt dan veel beter zoiets doen:
Delphi Code:
procedure TFmain.btnTERUGClick(Sender: TObject);
begin
Dec(varGift);
StringGrid1.Rows[(varGift * 2) - 1].Clear; // punten weg
StringGrid1.Rows[(varGift * 2)].Clear; // totaal weg
end;
Nu ga je alleen nog een ander probleem krijgen. Je hebt ook varSpeler1Totaal e.d. waar je de totaalpunten in bij houdt. Die moet je dus ook aflagen in plaats van de punten alleen verwijderen.
En inmiddels wordt het veeeeeeel beter om het punten-mechanisme te gaan scheiden van je GUI (i.e. StringGrid). Want nu doe je alles in een event (btnBEWAARPUNTENClick). Het bijwerken van je punten integer en het vullen van je stringgrid.
Het is dus beter om een aparte Array van records bij te gaan houden. Je maakt dan een aparte routine voor AddPunten(speler1, speler2, speler3, speler4: integer) en een VerwijderPunten(Spel: Integer);
Verder heb je 1 routine VulGrid die gewoon je hele grid opnieuw vult met alle punten.
pseudo code:
Delphi Code:
procedure btnBEWAARPUNTENClick
begin
if QuestionDlg
begin
AddPunten(s1, s2, s3, s4);
VullGrid;
end;
end;
procedure btnTERUGClick
begin
VerwijderPunten(High(puntenArray));
VulGrid;
end;
Op dit moment zul je echt wat code uit elkaar moeten gaan trekken naar nuttige functies want anders groeit je code tot een groot waterhoofd.
Bookmarks