![]() |
Inhalt von Stringrid auf einmal löschen
ich möchte mit einem Button den Inhalt aller Zeilen und Spalten auf einmal löschen, habe gesucht, aber noch nichts gefunden.
Ich kann zwar die gesamte Zeile eines Grid löschen, das will ich aber nicht. Danke für Eure Hilfe. |
Re: Inhalt von Stringrid auf einmal löschen
Hai tom_po,
meinst Du so etwas?:
Delphi-Quellcode:
procedure ClearStringGrid (sg : TStringGrid);
var ndx: Integer; begin with sg do begin for ndx := FixedRows to Pred(RowCount) do begin Rows[ndx].Clear; end; end; end; procedure TDemoForm.btn_ClearClick(Sender: TObject); begin ClearStringGrid(StringGrid1); end; |
Re: Inhalt von Stringrid auf einmal löschen
Zunächst danke Sharky für deine hilfe
Hab's probiert, bekomme aber dann diesen Kompilierfehler: "[Fehler] loteunit.pas(41): Ungenügende Forward- oder External-Deklaration: 'Tlote.ClearStringGrid'" weisst du woran es liegt? |
Re: Inhalt von Stringrid auf einmal löschen
Hi!
Du hast sicherlich versucht, die Prozedur oben bei den Prozeduren der Klasse Tlote einzutragen. Wenn du das tust (warum auch immer), dann müsstest die erste Zeile der eigentlichen Prozedur lauten:
Delphi-Quellcode:
Nur dann ist sie auch wirklich "Bestandteil" der Klasse.
procedure Tlote.ClearStringGrid (sg : TStringGrid);
Ciao Frederic |
Re: Inhalt von Stringrid auf einmal löschen
Zitat:
Ich glaube tom_po hat die Procedure so im Code stehen:
Delphi-Quellcode:
Aber sie nicht im Type-Abschnitt der Klasse eingetragen.
procedure Tlote.ClearStringGrid (sg : TStringGrid);
Delphi-Quellcode:
Wobei das eigentlich nicht notwendig ist. Es reicht wenn die Procedure von mir im Quellcode vor dem ersten Aufruf steht.
Type = class(TForm)
. . . private { Private-Deklarationen } procedure ClearStringGrid (sg : TStringGrid);[/ public { Public-Deklarationen } end; Sie muss keine Methode der Klasse sein. |
Re: Inhalt von Stringrid auf einmal löschen
Hi!
nein, dann käme: Zitat:
Ciao Frederic |
Re: Inhalt von Stringrid auf einmal löschen
ich hatte wirklich das tlote bei der procedure vergessen, sorry.
bekomme jetzt aber diesen fehler: [Fehler] loteunit.pas(473): Nicht genügend wirkliche Parameter |
Re: Inhalt von Stringrid auf einmal löschen
Hi!
Wie genau rufst du die Prozedur denn auf? Und was steht in Zeile 473? Ciao Frederic |
Re: Inhalt von Stringrid auf einmal löschen
dir procedure rufe ich über button2 auf:
Delphi-Quellcode:
in der zeile 473 steht das
procedure Tlote.Button2Click(Sender: TObject);
begin clearstringgrid; end;
Delphi-Quellcode:
über der aufruf mit dem button steht meine procedure:
clearstringgrid;
Delphi-Quellcode:
fehlermeldung:
procedure tLote.ClearStringGrid (sg : TStringGrid);
var ndx: Integer; begin with sg do begin for ndx := FixedRows to Pred(RowCount) do begin Rows[ndx].Clear; end; end; end; [Fehler] loteunit.pas(473): Nicht genügend wirkliche Parameter |
Re: Inhalt von Stringrid auf einmal löschen
Hi,
du musst als Parameter dein Stringgrid mitgeben:
Delphi-Quellcode:
ClearStringGrid(NameDeinesStringGrids);
|
Re: Inhalt von Stringrid auf einmal löschen
super, spider, vielen dank, das war's
klappt super hatte zwischenzeitlich noch einen anderen vorschlag zum löschen bekommen:
Delphi-Quellcode:
was hälst du davon?
procedure tlote.ClearGrid(var Grid: TStringGrid);
var i: integer; begin for i := 0 to Grid.RowCount - 1 do Grid.Rows[i].Clear; end; |
Re: Inhalt von Stringrid auf einmal löschen
habe doch noch ein Problem:
ich habe ja in der ersten Zeile des Stringrids Menu-Name eingetragen, die ich nicht löschen will, habe aber auch in der ersten Spalte eine fortlaufende Nummer eingetragen, die ich auch nicht löschen will, wie mache ich das? |
Re: Inhalt von Stringrid auf einmal löschen
Delphi-Quellcode:
sollte ungefähr so gehen, nicht getestet.
procedure tLote.ClearStringGrid (sg : TStringGrid);
var r_ndx,c_ndx: Integer; begin with sg do begin for r_ndx := FixedRows +1 to Pred(RowCount) do for c_ndx := FixedColls +1 to Pred(CollCount) do cells[c_ndx,r_ndx] := ''; end; end; Grüße Klaus |
Re: Inhalt von Stringrid auf einmal löschen
Die einfachste Lösung besteht darin, mit zwei Schleifen jede Zelle einzeln zu löschen:
Delphi-Quellcode:
Gruß Hawkeye
with Grid do
for ndy := FixedRows to RowCount - 1 do for ndx := FixedCols to ColCount - 1 do Cells[ndx, ndy] := ''; //Edit @Klaus01: sehe gerade, daß du deinen Beitrag korrigiert hast. Es heißt trotzdem "Cols" und das Cells-Array ist nullbasiert :wink: |
Re: Inhalt von Stringrid auf einmal löschen
super jetzt habe ich es so wie ich es wollte:
Delphi-Quellcode:
procedure tLote.ClearStringGrid (sg : TStringGrid);
var ndx,ndy: Integer; begin with sg do for ndy := FixedRows to RowCount - 1 do for ndx := FixedCols to ColCount - 1 do Cells[ndx, ndy] := ''; end; Hawkeye219, kannst du noch kurz mir deine meinung über diese alternative sagen, bitte:
Delphi-Quellcode:
procedure tlote.ClearGrid(var Grid: TStringGrid);
var i: integer; begin for i := 1 to Grid.RowCount - 1 do Grid.Rows[i].Clear; grid.Cols[i].Clear; end; |
Re: Inhalt von Stringrid auf einmal löschen
Die Alternative dürfte nicht funktionieren, sie enthält mehrere Fehler:
|
Re: Inhalt von Stringrid auf einmal löschen
[edit] Sorry, ich hab nicht gesehen, dass es eine zweite Seite gibt :oops: [/edit]
|
Re: Inhalt von Stringrid auf einmal löschen
Danke für die Hilfe
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz