![]() |
Nur mal so als Idee
Man könnte doch auch einfach ein StringGrid nehmen und dort für die amerikanische Variante 5 x 5 Felder oder für die englische Variante 3 x 9 Felder anlegen. In die so entstandenen Zellen schreibt man die Zahlen rein, die man braucht, oder auch einen Jokernamen und kann dann sehr leicht beim Klick auf das StringGrid rausfinden, welchen Wert der Benutzer angeklickt hat. Vor vielen Jahren hab ich das mal so ähnlich bei einem Lottozahlenprogramm gemacht, allerdings mit Grafiken, die beim OnDraw dort reingezeichnet werden. Beim Klick auf eine Zelle wird geprüft, ob die Zelle bereits angeklickt wurde, wenn nein, wird eine zweite Grafik in diese Zelle gemalt, die dunkler ist als Zeichen dafür, dass die aktiviert wurde, und es wird natürlich auch geprüft, wie viele Felder angeklickt werden dürfen je nach Spielart. Das OnClick-Handling sieht dann so aus:
Delphi-Quellcode:
Nun ist Bingo nicht Lotto, hat demnach auch keine feststehende Zahlenreihe von 1-49 und muss da natürlich anders programmiert werden. Man könnte die Zahlenreihe in einem Record speichern, für den man dann ein Array anlegt, nur mal so als Idee.
procedure TForm1.StrGrid_SpielDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
var Zahl : Integer; begin Zahl := SpaltZeilToZahl(ACol,ARow); // in dieser Function wird die Zahl anhand von Spalte und Zeile ermittelt if Zahl < 1 then Exit; FeldZeichnen(StrGrid_Spiel.Canvas,Rect,Zahl); // diese procedure zeichnet eine bestimmte Grafik in die Zelle end; |
AW: Bingo Karte
Form1 hat da nichts zu suchen, und Du castest falsch herum. So sollte es klappen (ungetestet, da im Editor getippt):
Delphi-Quellcode:
var
Pan : string; Panel: TPanel; begin if Sender is TPanel then begin Panel := TPanel(Sender); Pan := Panel.Caption; If Pan = Ziehung then begin Panel.Enabled := false; Panel.Color := clRed; end; end; |
AW: Bingo Karte
Super genau das habe ich gesucht. Vielen Dank.
Eine Frage hab ich noch. Wo muss ich die Allgemeine Procedur den schrieben, die ich dann in den Events der Panels benutze? hab die bis jetzt immer einfach direkt nach der Implementation geschrieben:
Delphi-Quellcode:
Aber so bekomme ich eine Fehlermeldung wegen dem sender.
implementation
{$R *.lfm} { TForm1 } procedure TestB; var Pan : string; Panel : TPanel; begin if sender is TPanel then Begin Panel := TPanel(sender); Pan := 'B'+Panel.Caption; If Pan = Ziehung then begin Panel.Enabled := false; Panel.Color := clRed; end; end; end; |
AW: Bingo Karte
Schau Dir doch mein Beispiel noch einmal genau an, da gibt es auch keine parameterlose reguläre Prozedur.
|
AW: Bingo Karte
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz