Autor Beitrag
Peter18
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 489
Erhaltene Danke: 2


Delphi4
BeitragVerfasst: So 05.07.15 12:06 
Ein freundliches Hallo an alle

ich möchte bei TStringGrid eine Methode wieder einführen, die bei TCustomGrid noch enthalten ist. "DeleteColumn" und "DeleteRow". Irgend wann habe ich schon mal den Tipp gekriegt, wie so was geht, aber finde es nicht wieder. Vielleicht hilft ja jemand meinem Gedächnis auf die Sprünge.

Grüße von der nicht mehr ganz so heißen (25° statt 31° bei 85%) Nordsee (tropf)

Peter
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 05.07.15 15:14 
Es kommt darauf an. Wenn die Methode protected ist, kannst du eine eigene Klasse von TStringGrid ableiten und diese dort zur Verfügung stellen.
In aktuelleren Delphiversionen (2006+ glaube ich) kann man dafür auch einfach class Helfer verwenden.
Peter18 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 489
Erhaltene Danke: 2


Delphi4
BeitragVerfasst: So 05.07.15 16:04 
Hallo Sebastian,

Dank Dir für Deine Antwort. Die Ableitung habe ich schon, aber syntaktisch hapert es noch. Ich habe in Erinnerung, dass nur eine neue Deklaration unter "public" ausreicht, wird aber angemeckert. Da fehlt wohl noch was oder muß anders aufgeschrieben werden.

Grüße von der Wolkigen Nordsee bei 27°

Peter
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 06.07.15 06:59 
// EDIT begin
Ich habe mal nachgeschaut. Hier reicht letzteres:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
type
  TStringGrid = class(Grids.TStringGrid)
  end;

// ...

  StringGrid1.DeleteColumn(1);
// EDIT end

Das funktioniert nur bei einer Property. Bei Methoden musst du diese neu unter public anlegen, wenn möglich mit override (wenn die Methode virtuell ist), und dann darin die geerbten Version mit inherited aufrufen.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TNewStringGrid.Paint;
begin
  inherited;
end;
Oder wenn überschreiben nicht geht:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TNewStringGrid.Paint;
begin
  inherited Paint;
end;
Du kannst auch versuchen nur ein neues TStringGrid zu deklarieren (ohne weiteren Inhalt) und darauf zu casten um die Methoden aufzurufen.
ausblenden Delphi-Quelltext
1:
TNewStringGrid(StringGrid).DeleteColumn;					

Für diesen Beitrag haben gedankt: Peter18
Peter18 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 489
Erhaltene Danke: 2


Delphi4
BeitragVerfasst: Mo 06.07.15 14:56 
Hallo Sebastian,

Dank Dir! Nun weiß ich warum es nicht funktioniert hat! Was ich damals verfügbar gemacht habe war eine Eigenschaft, nun war es eine Methode. Und jetzt funktioniert es!

Nochmals Dank!

Grüße von der Nosdsee mit erträglichen 22° mit ein paar Wolken

Peter