Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi wie kann ich eine private, statische Methode aufrufen? (https://www.delphipraxis.net/43389-wie-kann-ich-eine-private-statische-methode-aufrufen.html)

Keldorn 3. Apr 2005 10:24


wie kann ich eine private, statische Methode aufrufen?
 
Hallo

Mein Problem ist das folgende: Ich möchte invaliderect eines Stringgrids aufrufen.
Invalidaterect ist als private Methode bei Tcustomgrid deklariert, aber eben nicht als virtual. Somit kann ich keine eigene Klasse von customgrid ableiten und invalidaterect sichtbar machen, oder :gruebel:? Gibt es da eine andere Möglichkeit, außer die entsprechende Methoden aus den Sourcen zu kopieren?

Danke Frank

Pseudemys Nelsoni 3. Apr 2005 10:32

Re: wie kann ich eine private, statische Methode aufrufen?
 
Nein gibt es nicht, denn wie du schon sagtest ist sie privat und nicht virtuell d.h entweder du schreibst sie selbst oder aenderst sie in der vcl(was ich nicht empfehlen würde, nur wenn man "bugs" beheben will, wie bei der imagelist z.b)

Keldorn 3. Apr 2005 10:35

Re: wie kann ich eine private, statische Methode aufrufen?
 
Danke, die VCl ändere ich nicht, das macht bloß Probleme bei der weitergabe.

negaH 3. Apr 2005 11:07

Re: wie kann ich eine private, statische Methode aufrufen?
 
Zitat:

Gibt es da eine andere Möglichkeit, außer die entsprechende Methoden aus den Sourcen zu kopieren?
Ja.

Delphi-Quellcode:

Windows.InvalidateRect(Grid.Handle, @Rect, 0, True);
Gruß hagen

Pseudemys Nelsoni 3. Apr 2005 11:13

Re: wie kann ich eine private, statische Methode aufrufen?
 
Na super, wie steh ich denn nun da :cry: :mrgreen:

Keldorn 3. Apr 2005 12:54

Re: wie kann ich eine private, statische Methode aufrufen?
 
Zitat:

Zitat von negaH
Zitat:

Gibt es da eine andere Möglichkeit, außer die entsprechende Methoden aus den Sourcen zu kopieren?
Ja.

Delphi-Quellcode:

Windows.InvalidateRect(Grid.Handle, @Rect, 0, True);
Gruß hagen

das ist leider nicht dasselbe. stringgrid.invalidaterect hat einen paramter gridrect (die zu zeichnenden Zellen). stringgrid.invalidaterect ermittelt die dazugehörigen Bildschirmpositionen und ruft dann Windows.InvalidateRect auf.

omata 3. Apr 2005 14:10

Re: wie kann ich eine private, statische Methode aufrufen?
 
Moin,

dann leite doch eine neue Klasse vom TStringGrid ab und kopiere die beiden Methoden die du brauchst.

Delphi-Quellcode:
  TMyStringGrid = class(TStringGrid)
  private
    procedure GridRectToScreenRect(GridRect: TGridRect;
                                   var ScreenRect: TRect; IncludeLine: Boolean);
    procedure InvalidateRect(ARect: TGridRect);
  end;
MfG
Thorsten

Keldorn 5. Apr 2005 20:39

Re: wie kann ich eine private, statische Methode aufrufen?
 
Danke, so habe ich es ja schon. Meine Frage war ja, ob es eine andere Möglichkeit gibt ;).


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:01 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-2025 by Thomas Breitkreuz