AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

StringGrid

Ein Thema von HeliTronic · begonnen am 17. Sep 2005 · letzter Beitrag vom 17. Sep 2005
Antwort Antwort
Benutzerbild von HeliTronic
HeliTronic

Registriert seit: 17. Sep 2005
12 Beiträge
 
Delphi 7 Enterprise
 
#1

StringGrid

  Alt 17. Sep 2005, 11:13
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
<< so sitz ich immer vor delphi XD
vll noch eine kleine info, ich bin schülerin und ich mache das in keinerste weise professionel ^^
Ich weiß nix und ich kann auch nix
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: StringGrid

  Alt 17. Sep 2005, 11:18
Du könntest ein Array machen, in dem du dieWerte einträgst und nur bei Bedarf die entsprechnden Felder ins Grid überträgst.


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.
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Benutzerbild von punker76
punker76

Registriert seit: 11. Jan 2004
Ort: Alsdorf
98 Beiträge
 
Delphi 7 Personal
 
#3

Re: StringGrid

  Alt 17. Sep 2005, 11:19
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.
Jan Karger
Punk's not dead!!!
  Mit Zitat antworten Zitat
Benutzerbild von HeliTronic
HeliTronic

Registriert seit: 17. Sep 2005
12 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: StringGrid

  Alt 17. Sep 2005, 11:50
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.
Ich weiß nix und ich kann auch nix
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#5

Re: StringGrid

  Alt 17. Sep 2005, 12:08
Wenn du das Event OnSelectCell benutzt, bekommst du per Parameter Zeile und Spalte der ausgewählten Zelle geliefert.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von HeliTronic
HeliTronic

Registriert seit: 17. Sep 2005
12 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: StringGrid

  Alt 17. Sep 2005, 12:42
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
Ich weiß nix und ich kann auch nix
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: StringGrid

  Alt 17. Sep 2005, 12:48
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');
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Benutzerbild von HeliTronic
HeliTronic

Registriert seit: 17. Sep 2005
12 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: StringGrid

  Alt 17. Sep 2005, 13:01
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.
Ich weiß nix und ich kann auch nix
  Mit Zitat antworten Zitat
Benutzerbild von HeliTronic
HeliTronic

Registriert seit: 17. Sep 2005
12 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: StringGrid

  Alt 17. Sep 2005, 13:07
oh entschuldigung, ich hatte was überlesen
... okay dann klappt das erst mal alles so wie es soll =)
vielen dank für die hilfe...

*freu*
Ich weiß nix und ich kann auch nix
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz