AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi E2362 Auf protected-Symbol TCustomGrid.DeleteRow kann nicht zugegriffen werden
Thema durchsuchen
Ansicht
Themen-Optionen

E2362 Auf protected-Symbol TCustomGrid.DeleteRow kann nicht zugegriffen werden

Ein Thema von Kralle · begonnen am 17. Dez 2014 · letzter Beitrag vom 17. Dez 2014
Antwort Antwort
Kralle

Registriert seit: 31. Okt 2004
Ort: Bremerhaven
349 Beiträge
 
Delphi XE7 Professional
 
#1

E2362 Auf protected-Symbol TCustomGrid.DeleteRow kann nicht zugegriffen werden

  Alt 17. Dez 2014, 18:51
Moin,

obige Fehlermeldung
Zitat:
E2362 Auf protected-Symbol TCustomGrid.DeleteRow kann nicht zugegriffen werden
macht mir Stress.
Ich wollte eigentlich nur folgendes machen:
Code:
if strngrd1.Row >= strngrd1.FixedRows then strngrd1.DeleteRow(strngrd1.Row);
um eine Zeile in einem StringGrid eine Zeile zu löschen.

Aber, schon in der IDE wird
Code:
.DeleteRow
als fehlerhaft gekennzeichnet.

In den Tipps im WWW zum Thema
Zitat:
Zeile in eine StrinGrid löschen
wird
Code:
.DeleteRow
genutzt.
Ist das jetzt ein XE7 Problem?
Wie umgehe ich das Problem?

Gruß Heiko
OS: Linux Mint 20 Cinnamon (64-Bit), Windows 10 Professional, Delphi XE7 Pro SP1 +(Mobilpack & FireDAC), Lazarus 2.1 (Freepascal 3.3.1),
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: E2362 Auf protected-Symbol TCustomGrid.DeleteRow kann nicht zugegriffen werden

  Alt 17. Dez 2014, 19:01
Hast du schon in die Dokumentation geschaut?

Warum nicht? F1 kaputt, Internet kaputt, Brille kaputt?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Kralle

Registriert seit: 31. Okt 2004
Ort: Bremerhaven
349 Beiträge
 
Delphi XE7 Professional
 
#3

AW: E2362 Auf protected-Symbol TCustomGrid.DeleteRow kann nicht zugegriffen werden

  Alt 17. Dez 2014, 19:24
Hallo,

mit
Delphi-Quellcode:

// Quelle: [URL="http://stackoverflow.com/questions/16351109/how-do-i-delete-a-tstringgrid-row"]http://stackoverflow.com/questions/16351109/how-do-i-delete-a-tstringgrid-row[/URL]
procedure DeleteRow(Grid: TStringGrid; ARow: Integer);
var
  i: Integer;
begin
  for i := ARow to Grid.RowCount - 2 do
    Grid.Rows[i].Assign(Grid.Rows[i + 1]);
  Grid.RowCount := Grid.RowCount - 1;
end;
bekomme ich die Zeilen wie gewünscht gelöscht.

Auch diesen Trick habe ich gefunden:
Delphi-Quellcode:
type
    THackGrid=class(TCustomGrid);

[...]
THackGrid(strngrd1).DeleteRow(zeile);
Nur scheint der anstatt wirklich zu löschen die entsprechenden Zeilen nur aus dem definierten Bereich der Tabelle zuverschieben.
Wenn
Code:
RowCount
z.B. erst 6 ist, dann zwei Zeilen damit gelöscht werden und man dann
Code:
RowCount
auf 8 erhöht, dann tauchen dort die gelöschten Inhalte wieder auf

Aber, warum ist bei dem einfachen TStringGrid das ich auf das Formular ziehe, das Löschen gesperrt.
Ich habe keine Option zum Entsperren gefunden. Aber was nützt eine Option die nicht nutzbar ist?

Gruß Heiko
OS: Linux Mint 20 Cinnamon (64-Bit), Windows 10 Professional, Delphi XE7 Pro SP1 +(Mobilpack & FireDAC), Lazarus 2.1 (Freepascal 3.3.1),
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#4

AW: E2362 Auf protected-Symbol TCustomGrid.DeleteRow kann nicht zugegriffen werden

  Alt 17. Dez 2014, 19:49
Nur scheint der anstatt wirklich zu löschen die entsprechenden Zeilen nur aus dem definierten Bereich der Tabelle zuverschieben.
Die Methode DeleteRow löscht die Reihe nicht wirklich, sondern verschiebt diese nur ans Ende und setzt dann RowCount auf RowCount-1


Aber, warum ist bei dem einfachen TStringGrid das ich auf das Formular ziehe, das Löschen gesperrt.
Weil die Entwickler von Delphi dies so vorgesehen haben.

Aber was nützt eine Option die nicht nutzbar ist?
Sie ist doch nutzbar, aber eben nicht in TStringGrid oder TCustomGrid.

Ich habe keine Option zum Entsperren gefunden.
Die Option zum Entsperren einer Protected-Methode heisst anlegen einer neuen Klasse.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#5

AW: E2362 Auf protected-Symbol TCustomGrid.DeleteRow kann nicht zugegriffen werden

  Alt 17. Dez 2014, 20:15
'protected' heißt nicht 'gesperrt', sondern 'geschützt'. Und zwar geschützt gegen Aufrufe von außen. Vermutlich weil DeleteRow so komisch umgesetzt wurde, haben sich die Entwickler gedacht:"Na, lieber nicht öffentlich machen, sonst kommt ein Programmierer vielleicht auf die Idee, das Grid zur Datenhaltung zu missbrauchen, anstatt es nur zur Darstellung von Information zu benutzen". Nur so ne Idee.
  Mit Zitat antworten Zitat
Kralle

Registriert seit: 31. Okt 2004
Ort: Bremerhaven
349 Beiträge
 
Delphi XE7 Professional
 
#6

AW: E2362 Auf protected-Symbol TCustomGrid.DeleteRow kann nicht zugegriffen werden

  Alt 17. Dez 2014, 20:55
N'abend,

Die Methode DeleteRow löscht die Reihe nicht wirklich, sondern verschiebt diese nur ans Ende und setzt dann RowCount auf RowCount-1
Okay, dann ist die Methode also eh nicht das was der Name verspricht.

Sie ist doch nutzbar, aber eben nicht in TStringGrid oder TCustomGrid.

Die Option zum Entsperren einer Protected-Methode heisst anlegen einer neuen Klasse.
Okay, aber durch obige Aussage kann ich mir das sparen.
Dann mache ich das also lieber für die Procedure die ich weiter oben gepostet habe.

Schönen Abend noch.
Gruß Heiko
OS: Linux Mint 20 Cinnamon (64-Bit), Windows 10 Professional, Delphi XE7 Pro SP1 +(Mobilpack & FireDAC), Lazarus 2.1 (Freepascal 3.3.1),

Geändert von Kralle (17. Dez 2014 um 21:13 Uhr) Grund: Beantwortet
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 19:39 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