Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi StringGrid horizontal, vertikal und diagonal füllen (https://www.delphipraxis.net/48395-stringgrid-horizontal-vertikal-und-diagonal-fuellen.html)

Eagelone 24. Jun 2005 15:00


StringGrid horizontal, vertikal und diagonal füllen
 
Hallo,

ich möchte ein Stringgrid gern mit Buchstaben füllen und zwar horizontal, vertikal udn diagonal.

Ich habe ein Edit-Fenster wo ein Wort drin steht. Dieses Wort wird bei mir in die einzelnen Buchstaben aufgeteilt und jeweils ein Buchstabe soll in eine Zelle.

Horizontal geht dies ja mit:

Delphi-Quellcode:
            for i := 1 to length(s) do begin
               StrinGrid1.Cols[i-1].Add(s[i]);
Aber wie geht das vertikal und diagonal und alles rückwärts?
Man kann ja das irgendwie mit einem "case of" laufen lassen, oder?

Außerdem soll die Anfangsstelle jeweils über einen Zufall laufen!

Ich würde mich über Tipps für mein Problem freuen! DANKE!

Grüße,
Eagelone

BenjaminH 24. Jun 2005 15:03

Re: StringGrid horizontal, vertikal und diagonal füllen
 
Diagonal
Delphi-Quellcode:
x:=0;
for y:=0 to Length(s) do
Begin
  Inc(x);
  StrinGrid1.Cells[x,i].Add(s[y]);
End;
Vertikal
Delphi-Quellcode:
for x:=0 to Length(s) do
Begin
  StrinGrid1.Rows[x].Add(s[x]);
End;
Um das rückwärts zu machen musst du einfach jedes to durcc downto ersetzen, Start und Endwert umdrehen und möglicherweise auch das Inc durch Dec ersetzen

Khabarakh 24. Jun 2005 16:07

Re: StringGrid horizontal, vertikal und diagonal füllen
 
Zitat:

Zitat von BenjaminH
Diagonal
Delphi-Quellcode:
x:=0;
for y:=0 to Length(s) do
Begin
  Inc(x);
  StrinGrid1.Cells[x,i].Add(s[y]);
End;

Der Stringinhalt beginnt mit dem Index 1 :wink: .
Und warum nicht einfach
Delphi-Quellcode:
for i := 1 to Length(s) do
  StrinGrid1.Cells[i - 1, i - 1].Add(s[i]);
:zwinker: ?

[add]
Zitat:

Um das rückwärts zu machen musst du einfach jedes to durcc downto ersetzen, Start und Endwert umdrehen und möglicherweise auch das Inc durch Dec ersetzen
Das sollte nicht funktionieren, da du dadurch sowohl die Felder umgekehrt füllst, als auch den Stringinhalt umdrehst. Zum Umdrehen einfach jeweils
Delphi-Quellcode:
.Add(s[i]);
durch
Delphi-Quellcode:
.Add(s[Length(s) - i + 1]);
ersetzen.

Eagelone 25. Jun 2005 10:16

Re: StringGrid horizontal, vertikal und diagonal füllen
 
Thx für die Hilfe,

aber als Fehlermeldung erhalte ich Folgendes: Record, object or class type required

Wie kann ich dieses Fehler beheben? Die einzelnen Befehle liegen in einem case of....

DANKE!

Eagelone 25. Jun 2005 13:59

Re: StringGrid horizontal, vertikal und diagonal füllen
 
Gut, hab es jetzt raus: Statt dem "Add" mus ein := hin...

Jetzt fehlt es nur noch, dass ich das schreiben auch für:
// diagonal oben recht nach links unten
// diagonal unten links nach rechts oben
benötige.


Wie kann ich außerdem ein StringGrid auf einen Inhalt überprüfen?

Big THX!


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