Autor Beitrag
klezmor
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 558


delphi 6 personal delphi 2005 personal
BeitragVerfasst: Fr 14.03.08 14:58 
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:
ausblenden 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) = 0then
  begin
   Stringgrid1.Cells[0,count div 2]:=inttostr(count div 2); //-->dient zur nummerierung der Reihen
   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

_________________
"Beware of bugs in the above code; I have only proved it correct, not tried it." Donald Knuth
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: 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:
ausblenden 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

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
klezmor Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 558


delphi 6 personal delphi 2005 personal
BeitragVerfasst: Fr 14.03.08 17:13 
user profile iconXion 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.
user profile iconXion hat folgendes geschrieben:

2. eine kleine for-schleife:
ausblenden 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.
user profile iconXion 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?
user profile iconXion 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

_________________
"Beware of bugs in the above code; I have only proved it correct, not tried it." Donald Knuth