![]() |
stringgrid auslesen
Ich will wahlergebnisse, die in einer stringgrid eingegeben werden, als integerwerte prüfen und am ende abspeichern.
Mache ich alles mit edit-Feldern klappt es, ist aber umständlich. Eine stringgrid, die nur Zahlen annimmt, ist vorhanden. Wenn ich eine Zelle Zahlen eingebe und bevor ich zur nächsten Zelle gehe, soll die Zahl als integer-wert in ein array übernommen werden (Wahlergebnisse[1..15]) und überprüft werden. und das klappt nicht. Zum Auslesen einzelner Zellen ..... |
AW: stringgrid auslesen
Quellcode?
|
AW: stringgrid auslesen
Mit den beiden Prozeduren können nur in der 1. Spalte des stringgrid zahlen eingegeben werdeen.
Sie erscheinen auf dem Bildschirm. Diese eingegebenen Zahlenwerte will ich auslesen und in einem array einfangen, um sie weiter zu bearbeiten. Mit der dritten prozedur soll das auslesehn geschehen, aber wie??? procedure TForm11.StringGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin with StringGrid1 do if Col = 1 then Stringgrid1.Options := Stringgrid1.Options + [goEditing]+ [goTabs] else Stringgrid1.Options := Stringgrid1.Options - [goEditing]-[goTabs]; end; procedure TForm11.StringGrid1KeyPress(Sender: TObject; var Key: Char); begin if not (key in ['0'..'9']) then begin beep; key := #0; end; end; procedure tform11.dateneingeben(sender:TObject); var i:integer; begin with stringgrid1 do begin for i:=3 to 15 do ...???...cells[1,i]...??? end; end; |
AW: stringgrid auslesen
Delphi-Quellcode:
Besser wäre es allerdings, zuerst die Daten in das array zu übernehmen, und dieses dann im Stringgrid anzuzeigen.
MyArray[a,b]:=tryStrtoInt(Stringgrid1.Cells[x,y]);
Gruß K-H |
AW: stringgrid auslesen
So klappt das noch nicht.
Ich will neue Wahlergebnisse direkt in eine stringgrid eingeben und sie dann in einem array wahlsatz[1..1] abspeichern. In der Procedure tabelleformatieren wird die stringgrid vorbereitet und mit "struktur" die Partzeinamen etc. angezeigt. In col1 sollen dann die Zahlenwerte eingegeben werden. Die Prozeduren stringgrid1keydown und sringgrid1keypressed sollen nur die Eingaben von ganzen Wahlen ermöglichen. UNKLAR die Procedur dateneingeben, die so nicht korrekt ist. Hier sollen die Werte eingegeben werden und sie dann im array dann zu speichern. procedure tform11.tabelleFormatieren(sender:TObject); var i:integer; BEGIN with stringgrid1 do begin rowcount:=16; colcount:=2; form2.wahldatstruktur(sender); cells[0,0]:='Parteien'; cells[1,0]:='Wahlergebnis'; for i:=1 to 15 do cells[0,i]:=struktur[i]; colwidths[0]:=8*groupbox5.Width div 30; colwidths[1]:=6*groupbox5.Width div 30; END; END; procedure TForm11.StringGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin with StringGrid1 do if Col = 1 then Stringgrid1.Options := Stringgrid1.Options + [goEditing]+ [goTabs] else Stringgrid1.Options := Stringgrid1.Options - [goEditing]-[goTabs]; end; procedure TForm11.StringGrid1KeyPress(Sender: TObject; var Key: Char); begin if not (key in ['0'..'9']) then begin beep; key := #0; end; end; procedure tform11.dateneingeben(sender:TObject); var i:integer; begin with stringgrid1 do for i:=3 to 15 do tryStrtoInt(Stringgrid1.Cells[1,i],wahlsatz[i]); //klappt so noch nicht end; |
AW: stringgrid auslesen
Ich weiß ja nicht was alles in Dein Array soll, das sollte für Dein 2 * 16 Grid passen ...
Delphi-Quellcode:
type
Twahlsatz=Array[0..1,0..15] of Integer; var wahlsatz:Twahlsatz; |
AW: stringgrid auslesen
a. Im wahlsatz array stehen nur wahlergebnisse und Kürzel für Zeit und Land.
Mein Problem ist wie ich Eingaben in stringgrid in das array "herüberschiebe". b.In den alten edit-Feldern konnte ich definieren, durch die returntaste zum nächsten Feld zu gelangen - ist dies auch in stringgrid möglich? |
AW: stringgrid auslesen
Ich würde ein Array of Record nehmen und zuweisen, ich weiß nicht wo genau Du hängst ...
bei Form1.KeyPreview:=true; könntest Du wenn das Stringgrid den Fokus hat ganz billig so vorgehen um aus Enter ein Tab zu machen....
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin if key=13 then Key := 9; end; |
AW: stringgrid auslesen
Das Auslesen klappt jetzt. Es bleiben allerdings noch drei Fragen
Ich habe in dem verkürzten Programm die zu berechnenden Felder grau markiert. Hier sollte keine Eingabe möglich sein, sondern eine berechnete Ausgabe (Wahlberechtigte- Wähle= Nichtwähler usw.) a. Wie "überspringe" ich bei Eingabe dieses graue Feld?? b. Mit der Returntaste komme ich immer noch nicht zum nächsten Feld. c. Eigentlich möchte ich bei Verlassen jedes Feldes z.B. die Sonstigen berechnen (und anzeigen), um mögliche Fehler abzufangen (z.B. Eingabe größer mögliche Sonstige usw).Wie kann ich nach Verlassen eines Feldes solche Überprüfroutinen (etwa als Überprüfprozedur) einfügen? |
AW: stringgrid auslesen
a.) procedure TForm2.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);
b.)dann versuchs mal so
Delphi-Quellcode:
c.) könnte man zum Beispiel hier machen
procedure TForm2.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin // Annahme 1 Col Fixed , fehlen nochj sonderbehandlungen für gesperrte und zu hohe Rows if Key=#13 then begin if TStringGrid(Sender).Col= TStringGrid(Sender).ColCount -1 then begin TStringGrid(Sender).Col:=1; TStringGrid(Sender).Row:= TStringGrid(Sender).Row + 1; end else TStringGrid(Sender).Col := TStringGrid(Sender).Col + 1; end; end; procedure TForm2.StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer; const Value: string); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:40 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