Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Wie geht das mit den Methodenzeigern (https://www.delphipraxis.net/107947-wie-geht-das-mit-den-methodenzeigern.html)

sebi87 5. Feb 2008 07:51


Wie geht das mit den Methodenzeigern
 
Hallo Leute,

ich bin am verzweifeln, ich hab eine Methodenzeiger
Delphi-Quellcode:
type TFormatOnGetText = procedure(Sender: TField; var Text: String; DisplayText: Boolean) ;
dann hab ich eine Variable definiert
Delphi-Quellcode:
_FormatOnGetText: TFormatOnGetText ;
Ok soweit alles klar und jetzt will ich diesem Zeiger eine Procedure
Delphi-Quellcode:
procedure (Sender: TField; var Text: String; DisplayText: Boolean) ;
begin
  Text := FormatFloat('000000', Sender.AsInteger);
end;
übergeben aber das bekomme ich nicht hin.
Kann mir da jemand helfen?


Grüßle Sebastian

sirius 5. Feb 2008 08:01

Re: Wie geht das mit den Methodenzeigern
 
Zitat:

Zitat von sebi87
Hallo Leute,

ich bin am verzweifeln, ich hab eine Methodenzeiger

Nein, das ist ein Funktionszeiger.

Zitat:

Zitat von sebi87
dann hab ich eine Variable definiert

ok.

Zitat:

Zitat von sebi87
Ok soweit alles klar und jetzt will ich diesem Zeiger eine Procedure

Was willst du jetzt übergeben? Methode oder Prozedur/Funktion?

sebi87 5. Feb 2008 08:29

Re: Wie geht das mit den Methodenzeigern
 
Zitat:

Nein, das ist ein Funktionszeiger.
Ok das würde erkären waurm das nicht geht.

Wie muss ich den Zeiger definieren wenn ich die Procedure
Delphi-Quellcode:
procedure (Sender: TField; var Text: String; DisplayText: Boolean) ;
begin
  Text := FormatFloat('000000', Sender.AsInteger);
end;
Wie muss ich dann den Zeiger auf die Procedure definieren?

Grüßle Sebastian

xaromz 5. Feb 2008 08:35

Re: Wie geht das mit den Methodenzeigern
 
Hallo,
Zitat:

Zitat von sebi87
Ok das würde erkären waurm das nicht geht.

nein, tut ess nicht.

Zitat:

Zitat von sebi87
Wie muss ich dann den Zeiger auf die Procedure definieren?

Die Definition des Zeigers ist schon korrekt. Du hast eine Prozedur und einen Prozedur-Zeiger. Oder ist das in Wirklichkeit eine Methode? Dann musst Du den Pointer so schreiben:
Delphi-Quellcode:
type TFormatOnGetText = procedure(Sender: TField; var Text: String; DisplayText: Boolean) of object;
Gruß
xaromz

sebi87 5. Feb 2008 08:38

Re: Wie geht das mit den Methodenzeigern
 
Und wie übergebe ich diesem Procedurzeiger
Delphi-Quellcode:
type TFormatOnGetText = procedure(Sender: TField; var Text: String; DisplayText: Boolean)
(Ist doch ein Procedurzeger)
meine Procedure?

Dani 5. Feb 2008 08:41

Re: Wie geht das mit den Methodenzeigern
 
Vor allem solltest du deiner Prozedur mal nen Namen geben:

Delphi-Quellcode:
procedure MachWas(Sender: TField; var Text: String; DisplayText: Boolean) ;
begin
  Text := FormatFloat('000000', Sender.AsInteger);
end;

{...}

_FormatOnGetText := MachWas;

Nuclear-Ping 5. Feb 2008 08:42

Re: Wie geht das mit den Methodenzeigern
 
Zum Beispiel:
Delphi-Quellcode:
type
  TForm1 = class (TForm)
    // ...
  private
    procedure MyFormatOnGetText(Sender: TField; var Text: String; DisplayText: Boolean);
    // ...
  end;

// ...

implementation

procedure TForm1.MyFormatOnGetText(Sender: TField; var Text: String; DisplayText: Boolean);
begin
  // ... Dein Code
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  _FormatOnGetText := MyFormatOnGetText;
end;
Wenn _FormatOnGetText eine globale Variable ist, mußt du glaube oben bei der Deklaration das "... of object" weglassen und die Prozedur aus der Klasse rausnehmen.

taaktaak 5. Feb 2008 08:46

Re: Wie geht das mit den Methodenzeigern
 
Moin, Moin,
hast du nicht mit TFormatOnGetText einen neuen Ereignistyp deklarieren wollen, der deine Variable _FormatOnGetText lesen/schreiben soll? Wenn dem so ist, dann fehlt doch die published-Deklaration

Delphi-Quellcode:
published
  property OnGetText : TFormatOnGetText read _FormatOnGetText write _FormatOnGetText
Oder habe ich das jetzt falsch verstanden?
Gruß Ralph

Muetze1 5. Feb 2008 08:47

Re: Wie geht das mit den Methodenzeigern
 
Zitat:

Zitat von Nuclear-Ping
Wenn _FormatOnGetText eine globale Variable ist, mußt du glaube oben bei der Deklaration das "... of object" weglassen und die Prozedur aus der Klasse rausnehmen.

Der letzte Teil stimmt, aber es hat nichts damit zu tun, ob es als globale Variable oder lokal definiert ist zu tun.

sebi87 5. Feb 2008 08:49

Re: Wie geht das mit den Methodenzeigern
 
Allso
was ich eigentlich machen wollte, einen Globalen DB-Handler schreiben der die Ausagbe meiner Datenbank bein AfterOpen Ereignis der Query Formatiert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:02 Uhr.
Seite 1 von 2  1 2      

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