AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

stringgrid auslesen

Ein Thema von Hartfrid Krause · begonnen am 25. Nov 2011 · letzter Beitrag vom 28. Nov 2011
Antwort Antwort
Seite 1 von 2  1 2      
Hartfrid Krause

Registriert seit: 20. Feb 2007
90 Beiträge
 
Delphi XE6 Professional
 
#1

stringgrid auslesen

  Alt 25. Nov 2011, 09:34
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 .....
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#2

AW: stringgrid auslesen

  Alt 25. Nov 2011, 09:37
Quellcode?
  Mit Zitat antworten Zitat
Hartfrid Krause

Registriert seit: 20. Feb 2007
90 Beiträge
 
Delphi XE6 Professional
 
#3

AW: stringgrid auslesen

  Alt 25. Nov 2011, 12:49
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;
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: stringgrid auslesen

  Alt 25. Nov 2011, 13:59
MyArray[a,b]:=tryStrtoInt(Stringgrid1.Cells[x,y]); Besser wäre es allerdings, zuerst die Daten in das array zu übernehmen, und dieses dann im Stringgrid anzuzeigen.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Hartfrid Krause

Registriert seit: 20. Feb 2007
90 Beiträge
 
Delphi XE6 Professional
 
#5

AW: stringgrid auslesen

  Alt 27. Nov 2011, 11:33
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;
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#6

AW: stringgrid auslesen

  Alt 27. Nov 2011, 12:22
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;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Hartfrid Krause

Registriert seit: 20. Feb 2007
90 Beiträge
 
Delphi XE6 Professional
 
#7

AW: stringgrid auslesen

  Alt 27. Nov 2011, 13:12
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?
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#8

AW: stringgrid auslesen

  Alt 27. Nov 2011, 13:40
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;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Hartfrid Krause

Registriert seit: 20. Feb 2007
90 Beiträge
 
Delphi XE6 Professional
 
#9

AW: stringgrid auslesen

  Alt 28. Nov 2011, 14:19
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?
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#10

AW: stringgrid auslesen

  Alt 28. Nov 2011, 15:15
a.) procedure TForm2.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);
b.)dann versuchs mal so
Delphi-Quellcode:
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;
c.) könnte man zum Beispiel hier machen
procedure TForm2.StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer; const Value: string);
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:01 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