AGB  ·  Datenschutz  ·  Impressum  







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

StringGrid - Aktuelle Zeile löschen

Ein Thema von Sturmrider · begonnen am 9. Mai 2006 · letzter Beitrag vom 26. Jul 2007
 
marabu

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

Re: StringGrid - Aktuelle Zeile löschen

  Alt 10. Mai 2006, 08:00
Guten Morgen.

Die Typvereinbarung für die Klasse TGridCracker steht ja schon an einer brauchbaren Stelle. Im auskommentierten Click-Handler machst du aber mehr als nur eine Zeile in einem Grid löschen. Du prüfst, ob in der vorletzten Spalte der letzten Zeile im SpielplanGrid ein 'H' (Heimspiel?) eingetragen ist. Wenn ja, dann entfernst du die letzte Zeile aus dem SpielfeldGrid, bevor du dann die letzte Zeile aus dem SpielplanGrid auch entfernst. Beide Grids dimensionierst du neu, indem du die Gridabmessungen grob an den Zellbereich anpasst. Ich versuche mal behutsam ein paar Änderungen an deinem Click-Handler:

Delphi-Quellcode:
procedure TFSpielplan01.BitBtnEintragLoeschenClick(Sender: TObject);
var
  i, iSF, iSP: Integer;
  test: String;
begin
  iSP := Pred(StringGrid1.RowCount);
  if StringGrid1.Cells[3, iSP] = 'Hthen
  begin
    iSF := Pred(FSpielfeld.StringGrid1.RowCount);
    DeleteRow(FSpielfeld.StringGrid1, iSF);
    ResizeGrid(FSpielfeld.StringGrid1);
  end;
  DeleteRow(StringGrid1, iSP);
  ResizeGrid(StringGrid1);
end;
Die Bedingungen unter denen eine Aktion ausgeführt werden darf, solltest du außerhalb des Aktionscodes prüfen. Ob x > 0 ist, prüfst du in deinem Code eh zu spät, der Zugriff auf die Zelle mit dem 'H' ist da schon ungeprüft gescheitert.

Hier noch die Routine ResizeGrid:

Delphi-Quellcode:
procedure ResizeGrid(sg: TStringGrid);
var
  iCol, iRow: Integer;
begin
  with sg do
  begin
    Width := ColCount * GridLineWidth + Ord(BorderStyle) * 3;
    for iCol := 0 to Pred(ColCount) do
      Width := Width + ColWidths[iCol];
    Height := RowCount * GridLineWidth + Ord(BorderStyle) * 3;
    for iRow := 0 to Pred(RowCount) do
      Height := Height + RowHeights[iRow];
  end;
end;
Noch ein paar allgemeine Ratschläge: Versuche deinen Variablen sprechende Namen zu geben - nicht StringGrid1 sondern SpielplanGrid. Und informiere dich mal über Actions.

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
 


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 08:41 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