Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - StringGrid Zeilen raus löschen. Mein Weg funktioniert nicht.


20:30 - Mo 31.12.12 19:13
Titel: StringGrid Zeilen raus löschen. Mein Weg funktioniert nicht.
Also, habe folgenden Quellcode:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
type
  TMeinSG = class(TStringGrid);

procedure TMain.Button1Click(Sender: TObject);
var i: integer;
begin
  for i := 1 to StrinGrid1.RowCount do
    begin
      if pos(ED_Suche.Text, StrinGrid1.Cells[1,i]) = 0 then DeleteRow(i);
    end;
end;

procedure TMain.DeleteRow(ARow: Integer);
begin
  with TMeinSG(StrinGrid1) do
    DeleteRow(ARow);
end;


Man soll im Stringgrid einen String suchen. Wenn dieser nicht gefunden wird, soll die entsprechende Zeile rausgelöscht werden, so dass nur die "richtigen" noch da sind.

Blöd nur, dass meins nicht will. Hilfe wäre großartig. ;)


hansa - Mo 31.12.12 19:37

user profile icon20:30 hat folgendes geschrieben Zum zitierten Posting springen:

Blöd nur, dass meins nicht will. Hilfe wäre großartig. ;)


Auch blöd, wenn man die Fehlermeldung verschweigt. Oder aber, nicht sagt, dofern keine erscheint und nur nicht gemacht wird, wie gewünscht. Insofern : blöd. :mrgreen:


bummi - Mo 31.12.12 20:57


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
type
    THackGrid=Class(TCustomGrid)
      procedure DeleteRow(ARow: Longint);
    end;
{ THackGrid }
procedure THackGrid.DeleteRow(ARow: Integer);
begin
   inherited;
end;


Procedure DeleteRow(sg:TStringGrid;Index:Integer);
begin
  THackGrid(sg).DeleteRow(index);
end;

procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
  for i := StringGrid1.RowCount - 1 DownTo 1 do
    begin
      if pos(ED_Suche.Text, StringGrid1.Cells[1,i]) = 1 then DeleteRow(StringGrid1,i);
    end;
end;




procedure TForm1.FormCreate(Sender: TObject);
begin
  ReportMemoryLeaksOnShutDown := true;
end;


20:30 - Mo 31.12.12 22:12

Eine Fehlermeldung gabs nicht... Höchstens eine unvorhersebare Ausführung.
Es wurden alle bis auf die fixed gelöscht.

Danke für die Antwort! Werde ich mir noch anschauen und ausprobieren (Sieht etwas komisch aus..?)... Gibt es auch eine Erkärung, für diejenigen, die das selbe Problem haben (/werden). Wäre nett. ;)

EDIT:
So mal getestet. Nachdem ich das befragte Ergebnis von pos auf 0 gesetzt habe, funktioniert alles. Man sollte noch auf Groß und Kleinschreibung achten...