Autor Beitrag
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Fr 13.02.04 13:28 
Hi,

ich habe hier folgenden Code:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
unit unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls;

type
  TStringGridExt = class(TStringGrid)
  protected
    procedure InsertRow(ARow: Longint);
  end;

type
  TForm1 = class(TForm)
    S: TStringGridExt;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    {...}
  public
    {...}
  end;

type
  TStringGridExt = class(TStringGrid)
  protected
    procedure DeleteRow(ARow: Longint); reintroduce;
    procedure InsertRow(ARow: Longint);
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TStringGridExt.InsertRow(ARow: Longint);
var
  TempRow: Integer;
begin
  TempRow := Row;             // Zeile zwischenspeichern
  while ARow < FixedRows do
    ARow := ARow + 1;
  RowCount := RowCount + 1;
  MoveRow(RowCount - 1, ARow);
  Row := TempRow;
  Rows[Row].Clear;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  TStringGridExt(S).InsertRow(1);
end;

end.


Der ist nur teilweise von mir. Kann mir jemand mal erklären, was die Prozedur im protected Abschnitt genau macht ? Bzw. wie man das benutzen kann. Wenn ich ein TStringGrid auf die Form lege, hat das ja mit dem TStringGridExt nichts zu tun. Und wie komme ich nun da dran ?[/delphi]

_________________
Gruß
Hansa
CenBells
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: Fr 13.02.04 13:56 
Hallo,

du musst eine neue Komponente erstellen und dann diese auf das Formular legen. Die neue komponente enthält dann den von dir geposteten code und dann kannst du das ganz normal verwenden.

Wenn du keine neue Komponente erzeugen willst, musst du die methoden halt so abwandeln, daß du dein Stringgrid übergibst und dann auf dem übergebenen Stringgrid die methoden ausführst.

Gruß
kEn

_________________
Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.
ErnestoChe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 528

Win 2000 pro, CRUX 2.0
Delphi 6 Pers, Open K3
BeitragVerfasst: Fr 13.02.04 14:16 
Hi,

ein TStringGrid auf der Form platzieren und um die Methoden von TStringGridExt auszuführen einfach das normale Stringrid zu TStringGridExt casten:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid; 

//................................................................

TStringGridExt(StringGrid1).InsertRow(3);


MFG

- Ernesto -
CenBells
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: Fr 13.02.04 14:43 
:P

Das mit dem Typecast ist doch langweilig *G*

Gruß
Ken

_________________
Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.
J.Borchert
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 150

WIN10
XE2 Professional
BeitragVerfasst: Fr 13.02.04 20:10 
Die Anweisung "Protected" arbeitet ähnlich wie die "Private" -Deklaration. Der Zugriff auf Methoden, die hinter PROTECTED deklariert werden, kann nur über die Methoden der eigenen Klasse und über die Methoden der Nachfolger dieser Klasse erfolgen. Im Gegensatz zu PRIVATE Bestandteilen des Objekts muss muß der Zugriff jedoch nicht zwangsläufig aus der selben Unit heraus erfolgen.

Quelle: "Jetzt lerne ich Delphi" von Thomas Binzinger (Verlag Markt+Technik)

Gruß Jürgen

_________________
Wer immer macht was er schon kann, bleibt immer das, was er schon ist. "H.Ford"
hansa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Fr 13.02.04 20:25 
In diesem Fall ist protected ungefähr mit private gleichzusetzen. Ich glaube nämlich nicht, daß es nötig ist, von dem StrinGridExt noch einmal etwas abzuleiten, aber möglich wäre es schon. Aber was ist mit dem "reintroduce" ? Das ist mir nicht ganz klar.

_________________
Gruß
Hansa
J.Borchert
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 150

WIN10
XE2 Professional
BeitragVerfasst: Fr 13.02.04 20:50 
Reintroduce unterdrückt die Compiler-Warnung.

_________________
Wer immer macht was er schon kann, bleibt immer das, was er schon ist. "H.Ford"