AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Im Stringgrid oben eine neue Zeile einfügen

Ein Thema von Hallo_Thomas · begonnen am 30. Jul 2005 · letzter Beitrag vom 5. Sep 2013
Antwort Antwort
Seite 1 von 2  1 2      
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#1

Im Stringgrid oben eine neue Zeile einfügen

  Alt 30. Jul 2005, 19:08
Hallo, ich füge mit

StringGrid1.Cells[Spalte,0] := IntToStr(Zahl); eine Zahl hinzu, diese sollte bei der nächsten Eingabe um eine Zeile nach unten rutschen.

Ich dachte da, das man da am besten oben eine neue Zeile einfügt oder so?

Wie kann ich Position 0 eine Zeile einfügen bzw, das alle Zahlen um eine Zeile nach unten rutschen am effizentesen umsetzen.
  Mit Zitat antworten Zitat
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#2

Re: Im Stringgrid oben eine neue Zeile einfügen

  Alt 30. Jul 2005, 19:14
ungetestet:
Delphi-Quellcode:
procedure insertGridLine(Grid :TStringGrid; index: integer);
var i:integer;
begin
    Grid.RowCount :=Grid.RowCount +1;
    for i :=Grid.RowCount -2 downto index do
    begin
        Grid.Rows[i] :=Grid.Rows[i-1];
    end;
end;
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#3

Re: Im Stringgrid oben eine neue Zeile einfügen

  Alt 30. Jul 2005, 19:59
Fast perfekt, Danke, hat echt weiter geholfen!

getestet
Delphi-Quellcode:
procedure TForm1.insertGridLine(Grid :TStringGrid; index: integer);
var i:integer;
begin
    Grid.RowCount :=Grid.RowCount +1;
    for i :=Grid.RowCount -2 downto index do
    begin
        Grid.Rows[i] :=Grid.Rows[i-1];
        Grid.Rows[i-1].clear;
    end;
end;
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Im Stringgrid oben eine neue Zeile einfügen

  Alt 30. Jul 2005, 20:33
Was haltet ihr von diesem Code?

Delphi-Quellcode:
procedure TDemoForm.InsertRow(iRow: integer);
var
  i: integer;
begin
  with StringGrid do begin
    if iRow < FixedRows then
      raise Exception.Create('you cannot insert a fixed row');
    RowCount := RowCount + 1;
    for i := RowCount - 1 downto Succ(iRow) do
      Rows[i].Assign(Rows[i-1]);
    Rows[iRow].Clear;
  end;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#5

Re: Im Stringgrid oben eine neue Zeile einfügen

  Alt 30. Jul 2005, 20:38
@marabu:
doofes Codedesign, für den Zweck zu komplex und generell nicht so übersichtlich.
Außerdem haben wir die Lösung längst...

EDIT: sry, war nicht böse gemeint.
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Im Stringgrid oben eine neue Zeile einfügen

  Alt 30. Jul 2005, 20:44
Hai yankee,

Bitte etwas höflicher in der DP! Danke.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Im Stringgrid oben eine neue Zeile einfügen

  Alt 30. Jul 2005, 22:17
Hallo yankee,

Zitat von yankee:
Außerdem haben wir die Lösung längst...
warum habt ihr die Lösung denn nicht in diesem thread gepostet und lasst weiter euren fehlerhaften Code stehen?

Nachdenkliche Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#8

Re: Im Stringgrid oben eine neue Zeile einfügen

  Alt 30. Jul 2005, 23:51
Zitat von marabu:
warum habt ihr die Lösung denn nicht in diesem thread gepostet und lasst weiter euren fehlerhaften Code stehen?

Nachdenkliche Grüße vom marabu
Welchen fehlerhaften code? Es funzt doch alles, wir sind doch alle glücklich!
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: Im Stringgrid oben eine neue Zeile einfügen

  Alt 31. Jul 2005, 09:50
Hallo yankee,

Thomas hat deinen Code in eine procedure of object verwandelt. Das bei deinem Code fehlende Leeren der neu eingefügten Zeile hat er unglücklicherweise in die Schleife gepackt - es gehört dahinter, was aber lediglich die Performanz beeinträchtigt und keinen zusätzlichen Fehler darstellt.
In deinem Code befinden sich 3 Fehler unterschiedlicher Fehlerklassen. Der erste Fehler ist, dass du eventuell vorhandene FixedRows nicht berücksichtigst. Der zweite Fehler ist, dass du für das Kopieren der Zeileninhalte copy by assignment verwendest - reine Glückssache, dass es funktioniert. Normalerweise würdest du auf diese Weise ein Speicherleck schaffen, aber so verletzt du nur das black box Prinzip. Der dritte und letzte Fehler ist gravierend. Durch eine falsche Indizierung vernichtest du den Inhalt der letzten Zeile.

Ich wollte euch beide durch meinen ersten Beitrag nur zum Nachdenken anregen. Das hat offenbar nicht funktioniert. Schade.

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#10

Re: Im Stringgrid oben eine neue Zeile einfügen

  Alt 31. Jul 2005, 11:07
Ok, das mit dem clear ist rihtig...
mit den FixedRows: das kann ja auch absicht sein die zu verschieben. Und er hat in seinem Beispiel ja 0 genommen. Daher habe ich das mal weggelassen.

das mit dem copy by assignment: Interessiert mich jetzt aber mal. Warum ist das Glückssache? Und was macht assign anders?

Den Fehler mit der indizierung muss ich wohl einsehen. Es ist eben -1 und nicht -2.
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz