Autor Beitrag
Paule90
Hält's aus hier
Beiträge: 4



BeitragVerfasst: 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..... :oops: :? :?

Wichtig ist mir das ich die markierte Zeile löschen und evtl. auch ändern kann!!!

Wenn jemand Tipps hat bitte schreiben :roll: :wink:
danke
Stefan
Kawa
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45
Erhaltene Danke: 1



BeitragVerfasst: Mo 05.11.07 21:21 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
//_____________ZEILE LÖSCHEN_________________________________________
 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 user profile iconNarses: Delphi-Tags hinzugefügt
Paule90 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 380


D3 Prof, D4 Prof
BeitragVerfasst: Di 06.11.07 08:00 
Hi
Kleine Bemerkung:
ausblenden 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:

ausblenden 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



BeitragVerfasst: Di 06.11.07 10:07 
user profile iconoldmax hat folgendes geschrieben:

ausblenden Delphi-Quelltext
1:
procedure TMyForm.Zeileweg(Var sg: TStringgrid);					



Was soll das var hier bewirken?
oldmax
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 380


D3 Prof, D4 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 374

WIN 2000prof, WIN XP prof
D7EP, MSSQL, ABSDB
BeitragVerfasst: Di 06.11.07 11:39 
user profile iconPaule90 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
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
//_____________ZEILE LÖSCHEN_________________________________________
 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

user profile iconPaule90 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 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: 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
Dieses Thema ist gesperrt, Du kannst keine Beiträge editieren oder beantworten.

Das Thema wurde von einem Team-Mitglied geschlossen. Wenn du mit der Schließung des Themas nicht einverstanden bist, kontaktiere bitte das Team.