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
 
Nogge

Registriert seit: 15. Jul 2004
336 Beiträge
 
Delphi 7 Professional
 
#18

Re: StringGrid - Aktuelle Zeile löschen

  Alt 26. Jul 2007, 19:54
Ich habe mir mal selbst add- und delete-Methoden für TStringGrid geschrieben, die so, wie folgt, meiner Meinung nach objekt-orientiert implementiert sind:
Delphi-Quellcode:
{
  @author
          Nogge
  @description
          TStringGridEx extends TStringGrid with two methods, which based on
          methods and properties of TStringGrid. So TStringGridEx can easily be
          used as type-cast class without creating an instance of it.
            - addRow
                  Adds a new row to the end of the StringGrid and fills a
                  specific string in each column
            - deleteRow
                  Clears the content of each column of the row specified by an
                  index and, if applicable, deletes it from the StringGrid
}

unit StringGridEx;

interface

uses Grids, SysUtils;

type
  EListError = class(Exception);

  TStringGridEx = class(TStringGrid)
  public
    function addRow(const VCols: array of String): Integer;
    (* HINT for reintroduce:
        - overrides virtual method of TCustomGrid
        - changes access right from protected to public
    *)

    procedure deleteRow(ARow: Longint); reintroduce;
  end;

implementation

function TStringGridEx.addRow(const VCols: array of String): Integer;
var
  i: Integer;
begin
  // catch exception
  if (Length(VCols) > ColCount) then
    raise EListError.CreateFmt('Col index out of bounds (%d)', [High(VCols)])
  else
  begin
    // execute code
    if (Length(Cells[0, FixedRows]) = 0) then // wenn kein Zeichen enthalten ist
    begin
      for i := Low(VCols) to High(VCols) do
        Cells[i, FixedRows] := VCols[i];
    end
    else
    begin
      RowCount := RowCount +1;
      for i := Low(VCols) to High(VCols) do
        Cells[i, RowCount-1] := VCols[i];
    end;
    Result := RowCount -1;
  end;
end;

(*
    Clears all entries (Strings[] AND Objects[]) of the specific row
*)

procedure TStringGridEx.deleteRow(ARow: Longint);
begin
  // FixedRows should not be deleted
  if (ARow < FixedRows) or (ARow >= RowCount) then
  begin
    raise EListError.CreateFmt('Row index out of bounds (%d)', [ARow]);
  end
  else
  begin
    if (RowCount-1 > FixedRows) then
      inherited DeleteRow(ARow)
    else // FixedRows is always less than RowCount
      Rows[FixedRows].Clear;
  end;
end;
Verwendungsbeispiel:
Delphi-Quellcode:
uses: [...], StringGridEx;
[...]
// als einfacher Aufruf...
TStringGridEx(StringGrid1).deleteRow(2);
// ...oder als Methode
procedure DeleteRow(sg: TStringGrid; index: Integer);
begin
  TStringGridEx(sg).deleteRow(index);
end;
Hierdurch werden alle public-Methoden und Properties der Klasse TStringGrid sowie die beiden zusätzlichen public-Methoden von TStringGridEx zur Verfügung gestellt, ohne das private-Methoden und Attribute sichtbar werden.
  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 05:34 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 by Thomas Breitkreuz