![]() |
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 |
Re: Aus stringgrid die daten nutzen
Delphi-Quellcode:
Wobei die Standardtimer sehr ungenau, bei hoher Systemauslatung werden, aber das ist ein anderes Problem.
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; |
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:
so dann habe ich ein edit feld in welches ich die zeit eingebe und eine combobox wo ich die
stringgrid1.cells[0,0]:='Zeit';
stringgrid1.cells[1,0]:='Richtung' 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:
weil ich die "s" nicht mit eingebe aber das klappt irgendwie immer noch nicht ich tu mal meinen
zeitS:=stringgrid1.Cells[0,Index];
zeitI:=Strtointdef(zeitS,0); edzeit.text:=zeitS; Timer6.Interval := 1000 * zeitI; 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. |
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 |
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?
|
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. |
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. |
Re: Aus stringgrid die daten nutzen
Ich geb's auf :roll:
|
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 |
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:
in Deinem Fall bleibt aber ZeitS leer weil Du
edzeit.text:=zeitS;
das nicht übernommen hast.
Delphi-Quellcode:
zeitS:=stringgrid1.Cells[0,Index];
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:47 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