Autor |
Beitrag |
Paule90
Hält's aus hier
Beiträge: 4
|
Verfasst: Mo 05.11.07 20:05
Hi @ all
ich arbeite gerade an einem Program worin ich ein StringGrid verwende.
Ich komme eigentlich ganz gut klar, jedoch finde ich keine Lösung, wie ich eine markierte Zeile des StringGrids löschen kann.....
Wichtig ist mir das ich die markierte Zeile löschen und evtl. auch ändern kann!!!
Wenn jemand Tipps hat bitte schreiben
danke
Stefan
|
|
Kawa
      
Beiträge: 45
Erhaltene Danke: 1
|
Verfasst: Mo 05.11.07 21:21
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| procedure Zeileweg(sg: TStringAligngrid; Zeile: integer); var i: integer; begin for i :=sg.Row to sg.RowCount-1 do sg.Rows[i].Assign(sg.Rows[i+1]); sg.RowCount := sg.RowCount - 1 end;
procedure TForm1.ButtonLoesClick(Sender: TObject); var mes:Word; begin mes:=MessageDLG('Zeile wird gelöscht!',mtConfirmation,[mbYes,mbNo],0); case mes of mryes:ZeileWeg(StringGrid1, 4); end; end; |
Moderiert von Narses: Delphi-Tags hinzugefügt
|
|
Paule90 
Hält's aus hier
Beiträge: 4
|
Verfasst: Mo 05.11.07 23:20
Hi
danke Kawa, aber wird denn nicht die 4. Zeile gelöscht?
Ich wollte eigentlich, dass man die markierte Zeile löschen kann....
mfg Stefan
|
|
oldmax
      
Beiträge: 380
D3 Prof, D4 Prof
|
Verfasst: Di 06.11.07 08:00
Hi
Kleine Bemerkung:
Delphi-Quelltext 1: 2:
| for i :=sg.Row to sg.RowCount-1 do sg.Rows[i].Assign(sg.Rows[i+1]); sg.RowCount := sg.RowCount - 1 |
muß heißen -2, da -1 die oberste Zeile ist und sg.Rows[i+1] über die Granze greifen würde.
Da meine Version das Align nicht kennt, hab ich's mal so versucht und es geht:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure TMyForm.Zeileweg(Var sg: TStringgrid); var i: integer; begin for i :=sg.Row to sg.RowCount-2 do sg.Rows[i].Assign(sg.Rows[i+1]); sg.RowCount := sg.RowCount - 1 end; |
Gruß oldmax
_________________ Zier dich nich so, ich krieg dich schon....
|
|
MAC.
Hält's aus hier
Beiträge: 3
|
Verfasst: Di 06.11.07 10:07
oldmax hat folgendes geschrieben: |
Delphi-Quelltext 1:
| procedure TMyForm.Zeileweg(Var sg: TStringgrid); |
|
Was soll das var hier bewirken?
|
|
oldmax
      
Beiträge: 380
D3 Prof, D4 Prof
|
Verfasst: Di 06.11.07 10:54
Hi
War der Ansicht, Ein Übergabeparameter einer Procedure wird nur zurückgeschrieben, wenn das Var davorsteht. Gut, war ein Irrtum, geht auch ohne, es stört aber auch nicht....
Gruß oldmax
_________________ Zier dich nich so, ich krieg dich schon....
|
|
raiguen
      
Beiträge: 374
WIN 2000prof, WIN XP prof
D7EP, MSSQL, ABSDB
|
Verfasst: Di 06.11.07 11:39
Paule90 hat folgendes geschrieben: | Hi
danke Kawa, aber wird denn nicht die 4. Zeile gelöscht? |
Bei d(ies)em CodeSchnippsel von Kawa mit Sicherheit nicht Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| procedure Zeileweg(sg: TStringAligngrid; Zeile: integer); var i: integer; begin for i :=sg.Row to sg.RowCount-1 do sg.Rows[i].Assign(sg.Rows[i+1]); sg.RowCount := sg.RowCount - 1 end; | , weil der Parameter Zeile nicht verwendet wird und eigentlich auch nicht benötigt wird
Paule90 hat folgendes geschrieben: |
Ich wollte eigentlich, dass man die markierte Zeile löschen kann....
|
genau-> sg.Row ist die markierte Zeile - und das macht Delphi sogar schon von sich aus, sobald irgendwo in eine Zeile geklickt wird OnlineHilfe hat folgendes geschrieben: | Die Eigenschaft Row gibt den Index der Zeile an, die die ausgewählte Zelle enthält. |
Also werden ab der markierten Zeile alle nachfolgenden Zeilen um eins nach oben gezogen -> die markierte Zeile ist somit gelöscht.
|
|
Paule90 
Hält's aus hier
Beiträge: 4
|
Verfasst: Di 06.11.07 14:06
Noch ne Frage:
mit sg.Row erkennt Delphi die aktuelle Zeile, aber wie kann ich diese Zeile dann Selektieren?
Irgendwie mit sg.Selection := TGridRect(Rect(1, sg.Row, 7, sg.Row)) !!!????
Aber das funtzt nicht --> so wird nichts markiert
mfg Stefan
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Di 06.11.07 14:41
Hallo,
bitte erstelle für jede deiner Fragen ein separates Topic, da die Diskussion mehrerer Fragen in einem Topic für gewöhnlich für Verwirrung und Durcheinander sorgt. Daher:
*geschlossen*
Viele Grüße,
Jasocul
|
|