Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi StringGrid (https://www.delphipraxis.net/53467-stringgrid.html)

HeliTronic 17. Sep 2005 10:13


StringGrid
 
Ich habe ein StringGrid von mit einer Größe von 5x5
und ich möchte eine Art Schiffe versenken programmieren.
In den 25 Cellen sollen 5 schiffe sein und 20 nieten.
ich hab mir das so gedacht, für die schiffe einsen zu benutzen die zufällig
in 5 cellen sind, und der rest mit nullen ausgefüllt ist. das klappt soweit.
nur man soll ja die zahlen nicht sehen. und ich weiß nicht wie ich das machen kann.
und dann noch eine frage: muss ich den quelltext in eine procedur des formblattes oder
in die procedur des stringgrids schreiben? ich habe den quelltext in die procedur
des stringgrids geschrieben.

schon mal danke für die hilfe und ich hoffe es ist einiger maßen verständlich erklärt.
greetzZ HeliTronic
:wiejetzt: << so sitz ich immer vor delphi XD
vll noch eine kleine info, ich bin schülerin und ich mache das in keinerste weise professionel ^^

faux 17. Sep 2005 10:18

Re: StringGrid
 
Du könntest ein Array machen, in dem du dieWerte einträgst und nur bei Bedarf die entsprechnden Felder ins Grid überträgst.


Zitat:

Zitat von HeliTronic
muss ich den quelltext in eine procedur des formblattes oder
in die procedur des stringgrids schreiben

Welche Code? Hängt immer davon ab, wann er ausgeführt werden soll.

punker76 17. Sep 2005 10:19

Re: StringGrid
 
Zitat:

Zitat von HeliTronic
Ich habe ein StringGrid von mit einer Größe von 5x5
und ich möchte eine Art Schiffe versenken programmieren.
In den 25 Cellen sollen 5 schiffe sein und 20 nieten.
ich hab mir das so gedacht, für die schiffe einsen zu benutzen die zufällig
in 5 cellen sind, und der rest mit nullen ausgefüllt ist. das klappt soweit.
nur man soll ja die zahlen nicht sehen. und ich weiß nicht wie ich das machen kann.

du kannst die zahlen auch als objekt in eine zelle einfügen
Delphi-Quellcode:
StringGrid1. Objects [0, 0]:= pointer (0); // spalte 0 zeile 0
StringGrid1. Objects [0, 1]:= pointer (1); // spalte 0 zeile 1

i:= integer (StringGrid1. Objects [0, 1]); // gibt die 1 zurück


Die Eigenschaft Objects enthält für jede Zelle des Gitters ein Objekt.

property Objects [ACol, ARow: Integer]: TObject;

Beschreibung

Mit Objects können Sie auf das Objekt zugreifen, das einer bestimmten Gitterzelle zugeordnet ist. Die Eigenschaften ColCount und RowCount legen die Größe des Arrays fest. ACol gibt die Spalte, ARow die Zeile der Zelle an. Die Zählung der Spalten und Zeilen beginnt bei 0.

Hinweis

Das String-Gitter ist den Objekten in diesem Array nicht übergeordnet. Wenn das String-Gitter freigegeben wird, existieren die Objekte weiter. Sie müssen von der Anwendung explizit freigegeben werden.

HeliTronic 17. Sep 2005 10:50

Re: StringGrid
 
Ah super =) nun sind die nullen und einsen nicht mehr zu sehen.
VIELEN DANK
nun frag ich mich, wie kann ich die cellen so anklicken, dass
mir gesagt wird da befindet sich ein treffer oder da befindet sich kein treffer.
ich hab das bis jetzt so:
Delphi-Quellcode:
var
i,j:integer;
begin
  for i:= 1 to 5 do
   for j:= 1 to 5 do
   IF stringgrid1.objects[j,i]=pointer(1)
     Then showmessage('TREFFER')
     Else showmessage('kein TREFFER');
end;
wenn ich dann das programm starte, und in eine celle klicke, egal welche,
dann zeigt er mir in einem fenster an: "treffer" oder "kein treffer", je nach dem ob
sich in der celle eine eins oder null befindet. er zeigt mir dann aber das fenster 25mal
hintereinander an mit eine der beiden informationen (5x treffer; 20x kein treffer).
ich möchte aber jede celle einzeln anklicken können und mir dann eine info ausgeben lassen,
ob treffer oder nicht.

Khabarakh 17. Sep 2005 11:08

Re: StringGrid
 
Wenn du das Event OnSelectCell benutzt, bekommst du per Parameter Zeile und Spalte der ausgewählten Zelle geliefert.

HeliTronic 17. Sep 2005 11:42

Re: StringGrid
 
ich hab neben dem ereignis "onSelectCell" "objects" reingeschrieben und enter gedrück.
dann öffnete sich eine procedure
Delphi-Quellcode:
procedure Objects(Sender: TObject; ACol, ARow: Integer;
      var CanSelect: Boolean);
und
Delphi-Quellcode:
procedure TForm1.objects(Sender: TObject; ACol, ARow: Integer;
  var CanSelect: Boolean);
begin

end;
aber ich weiß beim besten willen nicht, was ich zwischen begin und end zu schreiben habe, dass
das gewünschte ergebnis erreicht wird :(

faux 17. Sep 2005 11:48

Re: StringGrid
 
Zitat:

Zitat von HeliTronic
Ah super =) nun sind die nullen und einsen nicht mehr zu sehen.
VIELEN DANK
nun frag ich mich, wie kann ich die cellen so anklicken, dass
mir gesagt wird da befindet sich ein treffer oder da befindet sich kein treffer.
ich hab das bis jetzt so:
Delphi-Quellcode:
var
i,j:integer;
begin
  for i:= 1 to 5 do
   for j:= 1 to 5 do
   IF stringgrid1.objects[j,i]=pointer(1)
     Then showmessage('TREFFER')
     Else showmessage('kein TREFFER');
end;
wenn ich dann das programm starte, und in eine celle klicke, egal welche,
dann zeigt er mir in einem fenster an: "treffer" oder "kein treffer", je nach dem ob
sich in der celle eine eins oder null befindet. er zeigt mir dann aber das fenster 25mal
hintereinander an mit eine der beiden informationen (5x treffer; 20x kein treffer).
ich möchte aber jede celle einzeln anklicken können und mir dann eine info ausgeben lassen,
ob treffer oder nicht.

Mach doch einfach im onSelectCell folgendes:

Delphi-Quellcode:
if StringGrid1.Objects[ACol, ARow] = pointer(1) then
  ShowMessage('Treffer')
else
  ShowMessage('Kein Treffer');

HeliTronic 17. Sep 2005 12:01

Re: StringGrid
 
also das is ja nur noch mal für die ausgabe, das hab ich ja schon.
ich hab halt nur das problem, dass ich nich weiß wie ich mit dem ereignis
umgehen soll :( , sodass ich jede celle einzeln anklicken kann, und mir dann
gesagt wir, ja treffer oder kein treffer. das ist nun mein aktuelles problem.
:coder2:

HeliTronic 17. Sep 2005 12:07

Re: StringGrid
 
oh entschuldigung, ich hatte was überlesen
... okay dann klappt das erst mal alles so wie es soll =)
vielen dank für die hilfe...
:love:
*freu*


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:39 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