Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Aus stringgrid die daten nutzen (https://www.delphipraxis.net/130970-aus-stringgrid-die-daten-nutzen.html)

delphi-projekt 16. Mär 2009 22:43


Aus stringgrid die daten nutzen
 
Hallo habe folgendes Problem ich möchte aus dem stringgrid die zeiten nutzen und sie in einem timer aktiv machen also ich gebe in die stringgrid zb die zeiten 5,3,4,9,6s ein dann soll zuerst die zeit 5s aktiviert werden und bestimmte checkboxen in der zeit sollen angesprochen werden. Dann soll er automatisch in die nächste celle rücken wo die zeit 3 steht und in dieser zeit sollen wieder bestimmte checkboxen checked sein usw.

bei dem quelltext klappt das prinzipiell schon aber er geht nicht von einer celle in die nächste er nimmt immer die zuletzt eingetragene.

könnt ihr mir sagen wie ich den quelltext ändern muss damit es klappt

Danke delphi-projekt


Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var i,b:integer; g:string;
begin
Timer6.Interval := 1000 * strtoint(edzeit.text);
g:= stringgrid1.Cells[1,stringgrid1.Row];
g:=(ComboBox1.Text);
Timer6.Enabled:=True;
if g ='Geradeaus'
then
begin
cbStrobe.checked:=false;
cbData1.checked:=false;
cbData3.checked:=true;
cbData5.checked:=true;
cbData7.checked:=true;
end;
if g= 'Rückwärts'
then
begin
cbStrobe.checked:=false;
cbData3.checked:=false;
cbData1.checked:=true;
cbData5.checked:=true;
cbData7.checked:=true;
end;
if g= 'Geraderechts'
then
begin
cbStrobe.checked:=false;
cbData5.checked:=false;
cbData1.checked:=false;
cbData3.checked:=true;
cbData7.checked:=true;
end;
if g= 'Geradelinks'
then
begin
cbStrobe.checked:=false;
cbData7.checked:=false;
cbData1.checked:=false;
cbData3.checked:=true;
cbData5.checked:=true;
end;
end;

end.

nahpets 17. Mär 2009 08:28

Re: Aus stringgrid die daten nutzen
 
Hallo,

mit
Delphi-Quellcode:
g:= stringgrid1.Cells[1,stringgrid1.Row];
sprichst Du immer eine bestimmte Zelle an, das wird sich so auch nie ändern. Wenn Du die Zeilen wechseln willst, musst Du mit einem Index auf die Zeilen zugreifen. Du musst Dir also irgendwo merken, welchen Wert Du zuletzt benutzt hast und dann diesen Index erhöhen für die nächste Benutzung.
Delphi-Quellcode:
Inc(Index);
If Index > stringgrid1.Row then Index := 0;
g:= stringgrid1.Cells[1,Index];

delphi-projekt 17. Mär 2009 09:56

Re: Aus stringgrid die daten nutzen
 
Danke erstmal für die Antwort, ich habe den Quelltext jetzt so geändert es passiert jetzt aber
gar nichts Muss ich nochwas beachten?
weil derzeit zählt der gar nicht.
gruß delphi-projekt

hier nochmal die änderung

Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var i,b:integer; g:string; index:integer;
begin
Timer6.Interval := 1000 * strtoint(edzeit.text);
Timer6.Enabled:=True;
Inc(Index);
If Index > stringgrid1.Row
then Index := 0;
g:= stringgrid1.Cells[1,Index];
if g ='Geradeaus'
then
begin
cbStrobe.checked:=false;
cbData1.checked:=false;
cbData3.checked:=true;
cbData5.checked:=true;
cbData7.checked:=true;
end;

Keldorn 17. Mär 2009 10:02

Re: Aus stringgrid die daten nutzen
 
du hast index lokal in der buttonklick deklariert.
Bei jedem aufrufen der Buttonclick ist index dann wieder 0

Warum rückst du deinen Code nicht ein? liest sich absolut schrecklich. Auch würde ich es für sinnvoll halten, wenn du deinen Komponenten nicht bloß Namen wie cbData1 gibst.

Gruß Frank

delphi-projekt 17. Mär 2009 14:12

Re: Aus stringgrid die daten nutzen
 
Sorry ich bin noch delphi anfänger ich hab gerade keine ahnung was du damit meinst wenn ich den code einrücken soll

meinst du das so

Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var i,b:integer; g:string; var index:integer;
begin
Timer6.Interval := 1000 * strtoint(edzeit.text);
Timer6.Enabled:=True;
if g ='Geradeaus'
then
begin
Inc(Index);
If Index > stringgrid1.Row
then Index := 0;
g:= stringgrid1.Cells[1,Index];
cbStrobe.checked:=false;
cbData1.checked:=false;
cbData3.checked:=true;
cbData5.checked:=true;
cbData7.checked:=true;
end;

busybyte 17. Mär 2009 14:19

Re: Aus stringgrid die daten nutzen
 
var index:integer;

procedure TForm1.Button3Click(Sender: TObject);
var i,b:integer; g:string; //var index:integer; //hier wird index wieder 0 bzw. nicht 0 sondern undefiniert
begin
Timer6.Interval := 1000 * strtoint(edzeit.text);
Timer6.Enabled:=True;
if g ='Geradeaus'
then
begin
Inc(Index);
If Index > stringgrid1.Row
then Index := 0;
g:= stringgrid1.Cells[1,Index];
cbStrobe.checked:=false;
cbData1.checked:=false;
cbData3.checked:=true;
cbData5.checked:=true;
cbData7.checked:=true;
end;

delphi-projekt 17. Mär 2009 14:23

Re: Aus stringgrid die daten nutzen
 
Danke,
also ich habe es genauso gemacht aber der tut nicht die checkboxen checked machen
da passiert gar nichts.

muss ich nun noch was beachten?

Gruß delphi-projekt

Keldorn 17. Mär 2009 14:27

Re: Aus stringgrid die daten nutzen
 
nee, unter Einrückung verstehe ich

Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var i,b:integer;
    g:string;
    index:integer;
begin
  Timer6.Interval := 1000 * strtoint(edzeit.text);
  Timer6.Enabled:=True;
  if g ='Geradeaus' then
    begin
      Inc(Index);
      If Index > stringgrid1.Row then Index := 0;

      g:= stringgrid1.Cells[1,Index];
      cbStrobe.checked:=false;
      cbData1.checked:=false;
      cbData3.checked:=true;
      cbData5.checked:=true;
      cbData7.checked:=true;
    end;
end;
halt alles, was zusammengehört, einrücken, saß man das sofort erkennt (z.B. Anweisungsblöcke der if-Anweisung). dein erster quelltext ist gruselig, weil nicht ersichtlich ist, welches end zu welchem begin gehört.

Quelltext ist nur eingerückt von deinem Code. scheint mir jetzt auch sinnfrei zu sein, da du
Zitat:

if g ='Geradeaus' then
stehen hast, ohne das g irgendwas zu gewiesen wird

Wenn du das mit dem index so durchziehen möchtest, mußt Du ihn als globale Variable deklarieren (ist aber nicht optimal, du kannst mal nach globalen Variablen im Forum suchen ;-) ) oder z.B. im private-Abschnitt der Form. Aus dem Var-Teil der Buttonclick muß es raus. Bei jedem click ist index wieder 0.

Ansonsten weiß ich nicht wirklich, was genau Du tun willst (habe mir aber auch die anderen threads von Dir nicht ganz durchgelesen). Evtl ist es besser, du hängst mal das gnaze projekt dran, damit man sieht, was du eigentlich machen willst.

busybyte 17. Mär 2009 14:30

Re: Aus stringgrid die daten nutzen
 
Doch hat er aber erst nachdem er die if abfrage stellt,dann geht's latürnich nicht
Delphi-Quellcode:
var index:integer;

procedure TForm1.Button3Click(Sender: TObject);
var i,b:integer; g:string; //var index:integer; //hier wird index wieder 0 bzw. nicht 0 sondern undefiniert
begin
Timer6.Interval := 1000 * strtoint(edzeit.text);
Timer6.Enabled:=True;

g:= stringgrid1.Cells[1,Index];

if g ='Geradeaus'
then
begin
cbStrobe.checked:=false;
cbData1.checked:=false;
cbData3.checked:=true;
cbData5.checked:=true;
cbData7.checked:=true;
end;
Inc(Index);
If Index > stringgrid1.Row
then Index := 0;
lol 3mal editiert

delphi-projekt 17. Mär 2009 14:42

Re: Aus stringgrid die daten nutzen
 
Vielen vielen dank es klappt jetzt zumindest das er immer weiter zählt,

nun ist das problem mit der zeit ich möchte die zeit aus der stringgrid nehmen.
also in der ersten celle steht 5s dann soll für 5s eine bestimmte checkbox checked sein
in der 2 celle steht 3s und nach den 5s soll er mit den 3s weiterarbeiten.
ich weiß nicht wie ich das vereinbaren muss.


bei dem quelltext nimmt er immer die letzte zahl wie muss ich das denn ändern?


Delphi-Quellcode:
Timer6.Interval := 1000 * strtoint(edzeit.text);


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:59 Uhr.
Seite 1 von 4  1 23     Letzte »    

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