Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Daten in einem Stringgrid bearbeiten
klezmor - Fr 14.03.08 14:58
Titel: Daten in einem Stringgrid bearbeiten
Ich möchte Daten über ein Editfeld eingeben, welche dann in ein Stringgrid geschrieben werden, dies funktioniert soweit ganz gut, dies ist meine Methode, falls jemand was einfacheres findet, würde ich mich auch freuen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| ...count=1; procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: Char); begin if key=#13 then begin key:=#0; inc(count); stringgrid1.Row:=count div 2; if ((count mod 2) = 0) then begin Stringgrid1.Cells[0,count div 2]:=inttostr(count div 2); Stringgrid1.Cells[1,count div 2]:=edit1.Text; end else begin Stringgrid1.RowCount:=Stringgrid1.rowcount+1; Stringgrid1.Cells[2,count div 2]:=edit1.Text; end; edit1.Clear; end; end; |
Es sollen nun noch weitere Funktion geschaffen werden, von denen ich nicht genau weiß wie man sie realisiert.:
1.In einer Reihe soll nie ncihts stehen dürfen(in einer zelle schon)
2.wenn man auf eine Reihe der ersten spalte drückt soll diese ganze Reihe gelöscht werden und die anderen Reihen von unten her nach oben aufrücken, die nummerierung sollte, dann allerdings auch wieder stimmen.
3. Die ganze erste Spalte soll nicht markiert werden können.
4. Man muss einzelne Zellen markieren können und es erscheint dann ein popupmenü
MFG Klezmor
Xion - Fr 14.03.08 16:00
1. ein einfaches
if Edit.Text<>'' then genügt nicht? Eine Zeile besteht doch nur aus dem Edit.Text und der Zahl davor *sich wundert*
2. eine kleine for-schleife:
Delphi-Quelltext
1: 2: 3:
| for A:= 1 to Stringgrid1.RowCount do Stringgrid1.Cells[1,A-1]:=Stringgrid1.Cells[1,A]; stringgrid1.Row:=stringgrid1.Row-1; |
3. hmm, problematisch, ggf. könnte man die gelockt machen (FixedRows oder wie das heißt)
4. PopUpMenu dem Grid zuweisen:
StringGrid1.PopUpMenu:=PopUpMenu1; PopUpMenu1 erstellen und entsprechend füllen. Über
DBGrid1.SelectedField kannst du das angewählte feld auslesen
klezmor - Fr 14.03.08 17:13
Xion hat folgendes geschrieben: |
1. ein einfaches if Edit.Text<>'' then genügt nicht? Eine Zeile besteht doch nur aus dem Edit.Text und der Zahl davor *sich wundert*
|
ich machs jetzt halt einfach so, dass ich auf der rechten seite überprüfe, ob auf der linken shcon was steht, wenn nein, dann gibts ne aufforderung etwas einzutragen.
Xion hat folgendes geschrieben: |
2. eine kleine for-schleife:
Delphi-Quelltext 1: 2: 3:
| for A:= 1 to Stringgrid1.RowCount do Stringgrid1.Cells[1,A-1]:=Stringgrid1.Cells[1,A]; stringgrid1.Row:=stringgrid1.Row-1; |
|
führt mich gleich zu meinem nächsten problem, nähmen wir mal an die zelle der ersten spalte der 3. reihe wäre markkiert.
Soll ich dann das onselectCell ereignis nehmen, oder das onclick ereignis? Und wie finde ich dann heraus, welche zelle dies ist, ich weiß zwar, dass ich selber einer zelle .selection zuweisen kann, aber nicht, wie ich herausfinde, welche selketiert wurde.
Xion hat folgendes geschrieben: |
3. hmm, problematisch, ggf. könnte man die gelockt machen (FixedRows oder wie das heißt)
|
kann man auch einzelne Spalten sperren?
Xion hat folgendes geschrieben: |
4. PopUpMenu dem Grid zuweisen: StringGrid1.PopUpMenu:=PopUpMenu1; PopUpMenu1 erstellen und entsprechend füllen. Über DBGrid1.SelectedField kannst du das angewählte feld auslesen |
so was wie selectedfield bräuchte ich also auch für mein Stringgrid.
und wie kann ich feststellen ob sich was an meinem stringgrid geändert hat?
MFG Klezmor
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!