Hallo,
ich dreh hier noch frei !
Warum wird beim Beenden des Forms eine "ungültige Zeigeroperation" angezeigt.
Lasse ich da
AddObjects oder das
SG.QSortIndexed; weg, klappt es.
Ich will doch einfach nur mit dem normalen Objects arbeiten!
Was jemand, was beim TAdvStringGrid zu tun ist?
PS:
Bitte keine allgemeinen Phrasen.
Ich kenne mich mit dem TAdvStringGrid aus.
Objects wird intern in CellProperties gespeichert.
Wie ich mich da schon so geärgert habe, dass die das normale Objects überschrieben haben.
Delphi-Quellcode:
unit Unit74;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, BaseGrid, AdvGrid;
type
TForm1 =
class(TForm)
SG: TAdvStringGrid;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
procedure Sort;
procedure AddObjects;
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
type
TIdItem =
class
Id: Integer;
constructor Create(AId: Integer);
end;
{ TIdItem }
constructor TIdItem.Create(AId: Integer);
begin
Self.Id := AId;
end;
procedure TForm1.AddObjects;
var
iRow: Integer;
begin
for iRow := 0
to SG.RowCount-1
do
begin
SG.Objects[0,iRow] := TIdItem.Create(iRow);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
AddObjects;
Sort;
end;
procedure TForm1.FormDestroy(Sender: TObject);
var
iRow : Integer;
begin
(*
for iRow := 0 to SG.RowCount-1 do
begin
SG.Objects[0,iRow] := nil;
end;
*)
inherited ;
end;
procedure TForm1.Sort;
var
iFixedRowsOrg : Integer;
iFixedRootersOrg : Integer;
iRow: Integer;
begin
SG.BeginUpdate;
iFixedRowsOrg := SG.FixedRows;
iFixedRootersOrg := SG.FixedFooters;
try
SG.FixedRows := 2;
SG.FixedFooters := 2;
SG.SortIndexes.Clear;
SG.SortIndexes.Add(1);
SG.SortIndexes.Add(2);
//SG.SortSettings.NormalCellsOnly := True;
SG.SortSettings.SingleColumn:= False;
//SG.SortSettings.IgnoreCase:= False;
(*
for iRow := 0 to SG.RowCount-1 do
begin
SG.Objects[0,iRow] := nil;
end;
*)
SG.QSortIndexed;
finally
SG.FixedRows := iFixedRowsOrg;
SG.FixedFooters := iFixedRootersOrg;
SG.EndUpdate;
end;
end;
end.