Delphi-PRAXiS
Seite 2 von 4     12 34      

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 17. Mär 2009 14:48

Re: Aus stringgrid die daten nutzen
 
entschuldigt wenn ich so viele fragen stelle

aber ist es möglich,dass wenn ich auf den button3 click das er eine celle nach der anderen
abarbeitet und die gewünschten checkboxen in der zugewiesenen zeit checked. (mit einem click auf den button)

gruß delphi-projekt

busybyte 17. Mär 2009 14:54

Re: Aus stringgrid die daten nutzen
 
Delphi-Quellcode:
var index:integer;

procedure TForm1.Button3Click(Sender: TObject);
var i,b,p_:integer; g:string; //var index:integer; //hier wird index wieder 0 bzw. nicht 0 sondern undefiniert
zeitS:String;
zeitI:integer;
begin

//ich hab hier mal die Nummer 0 genommen
zeitS:=stringgrid1.Cells[0,Index];              

//wenn du wirklich 5s schreibst dann das s entfernen
p_:=pos('s',ansilowercase(zeits));
delete(zeitS,p_,1);

zeitI:=Strtointdef(zeitS,-1); //-1 wenn Fehler

edzeit.text:=zeitS;


Timer6.Interval := 1000 * zeitI; //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                  //<--- 
If Index > stringgrid1.Rowcount -1               
then Index := 0;
Wobei die Standardtimer sehr ungenau, bei hoher Systemauslatung werden, aber das ist ein anderes Problem.

delphi-projekt 17. Mär 2009 15:15

Re: Aus stringgrid die daten nutzen
 
ok also es sieht jetzt wie folgt aus

ich habe eine stringgrid erstellt diese hat 2 spalten für zeit und richtung

Delphi-Quellcode:
stringgrid1.cells[0,0]:='Zeit';
stringgrid1.cells[1,0]:='Richtung'
so dann habe ich ein edit feld in welches ich die zeit eingebe und eine combobox wo ich die
richtungen auswählen kann

ich gebe ein 5(edit) Geradeaus(combobox)
3(edit) Rückwärts(combobox)

diese werte stehen dann in der stringgrid und durch den button3 soll nun bewirkt werden das er
in die erste celle springt sieht aha 5s lang geradeaus in der zeit sollen bestimmte checkboxen checked sein nach den 5s soll er in die nächste zelle springen dort sieht er 3s rückwärts und für diese 3s sollen dann wieder bestimmte checkboxen checked sein.

Also das mit der zeit hab ich jetzt so eingegeben

Delphi-Quellcode:
zeitS:=stringgrid1.Cells[0,Index];
zeitI:=Strtointdef(zeitS,0);
edzeit.text:=zeitS;
Timer6.Interval := 1000 * zeitI;
weil ich die "s" nicht mit eingebe aber das klappt irgendwie immer noch nicht ich tu mal meinen
gesamten quelltext ran vielleicht findet ihr den Fehler. Aber schonmal vielen dank für die vielen infos.

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
stringgrid1.Cells[0,stringgrid1.Row]:=(Edzeit.text);
stringgrid1.Cells[1,stringgrid1.Row]:=(ComboBox1.Text);
stringgrid1.Row:=stringgrid1.Row+1;
anztimer:=stringgrid1.row;
end;


procedure TForm1.Button3Click(Sender: TObject);
var i,b,p:integer;
    g:string;
    zeitS:String;
    zeitI:integer;
begin
zeitS:=stringgrid1.Cells[0,Index];
zeitI:=Strtointdef(zeitS,0);
edzeit.text:=zeitS;
Timer6.Interval := 1000 * zeitI;
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;
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;
Inc(Index);
If Index > stringgrid1.Row
then Index := 0;
end;
end.

busybyte 17. Mär 2009 15:29

Re: Aus stringgrid die daten nutzen
 
ja du arbeitest mit row ,row ist falsch
nur mit cells und rowcount arbeiten



Delphi-Quellcode:
var index:integer;

procedure TForm1.Button1Click(Sender: TObject);
var i,b,p_:integer; g:string; //var index:integer; //hier wird index wieder 0 bzw. nicht 0 sondern undefiniert
zeitS:String;
zeitI:integer;
begin
//cbData7.Checked:=True;


//ich hab hier mal die Nummer 0 genommen
zeitS:=stringgrid1.Cells[0,Index];              //<-EDIT

//wenn du wirklich 5s schreibst dann das s entfernen
p_:=pos('s',ansilowercase(zeits));
delete(zeitS,p_,1);

zeitI:=Strtointdef(zeitS,-1); //-1 wenn Fehler

edzeit.text:=zeitS;


Timer1.Interval := 1000 * zeitI; //strtoint(edzeit.text);
Timer1.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.Colcount
then Index := 0;
end;



procedure TForm1.FormCreate(Sender: TObject);
var
  cnt1: Integer;
begin
Stringgrid1.FixedCols:=0;
for cnt1 := 0 to Stringgrid1.RowCount - 1 do
Stringgrid1.Cells[0,cnt1]:=inttostr(cnt1);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
cbData7.Checked:=False;
Timer1.Enabled:=False;

end;

Und ein Post weiter oben editiere ich noch den Fehler

delphi-projekt 17. Mär 2009 15:45

Re: Aus stringgrid die daten nutzen
 
Ich habe den quelltext jetzt soweit übernommen aber sobald ich starte stehen die zahlen 1,2,3,4,5... in meiner stringgrid drin die soll ich doch aber eingeben oder habe ich was falsch in den quelltext übernommen?

busybyte 17. Mär 2009 15:51

Re: Aus stringgrid die daten nutzen
 
Das war nur zum Testen ob das Lesen und Umschalten per Timer funktioniert.

Ah so, und mit Row bestimmst du die Zeile die den Auswahlfocus erhält.
Das war vieleicht auch so gewünscht,aber dann hätte Row dem index angepasst werden müssen.

delphi-projekt 17. Mär 2009 16:06

Re: Aus stringgrid die daten nutzen
 
Und wie tu ich das nun auf mein programm beziehen. Die zeit will ich ja eingeben und die richtung auch und danach soll er celle für celle abarbeiten .

der quelltext sieht nun wie folgt aus also was muss ich nun noch umschreiben das die zeiten nicht von anfangan da sind sondern das ich die eingebe und der rechner das alles automatisch macht.
so wie vorherige seite beschrieben wie das pojekt aussieht.

vielen dank nochmal

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
b:byte;
Phase:integer;
Zeit:integer;
var
cnt1: Integer;
begin
Stringgrid1.FixedCols:=0;
for cnt1 := 0 to Stringgrid1.RowCount - 1 do
Stringgrid1.Cells[0,cnt1]:=inttostr(cnt1);
stringgrid1.cells[0,0]:='Zeit';
stringgrid1.cells[1,0]:='Richtung'
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var i,b,p:integer;
    g:string;
    zeitS:String;
    zeitI:integer;
begin
cbData7.Checked:=True;
zeitI:=Strtointdef(zeitS,-1);
edzeit.text:=zeitS;

Timer6.Interval := 1000 * zeitI;
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;
if g= 'Rückwärts'
then
begin
cbStrobe.checked:=false;
cbData3.checked:=false;
cbData1.checked:=true;
cbData5.checked:=true;
cbData7.checked:=true;
end;
Inc(Index);
If Index > stringgrid1.colcount
then Index := 0;
end;
procedure TForm1.Timer6Timer(Sender: TObject);
begin
cbData7.Checked:=False;
Timer6.Enabled:=False;
end;

end.

busybyte 17. Mär 2009 16:45

Re: Aus stringgrid die daten nutzen
 
Ich geb's auf :roll:

delphi-projekt 17. Mär 2009 16:48

Re: Aus stringgrid die daten nutzen
 
nein bitte nicht ich bin wirklich blutiger anfänger und das ist mein erstes etwas größeres projekt

erklärs mir doch bitte nochmal
was du meinst ich hab schon so viel versucht aber es klappt halt noch nicht also mach ich noch
irgendetwas falsch aber was

busybyte 17. Mär 2009 16:51

Re: Aus stringgrid die daten nutzen
 
Das füllt Deine Zellen automatisch also musst Du das löschen
Delphi-Quellcode:
for cnt1 := 0 to Stringgrid1.RowCount - 1 do
Stringgrid1.Cells[0,cnt1]:=inttostr(cnt1);


und das vermutlich auch weil Dir das anzeigt was aus dem Stringgrid gelesen wurde bzw. in der Variablen:ZeitS steht.
Delphi-Quellcode:
edzeit.text:=zeitS;
in Deinem Fall bleibt aber ZeitS leer weil Du
das nicht übernommen hast.
Delphi-Quellcode:
zeitS:=stringgrid1.Cells[0,Index];


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:28 Uhr.
Seite 2 von 4     12 34      

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