Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Überprüfen ob ein Ergeigniss existiert? (https://www.delphipraxis.net/68269-ueberpruefen-ob-ein-ergeigniss-existiert.html)

Karstadt 27. Apr 2006 08:58


Überprüfen ob ein Ergeigniss existiert?
 
Hallo. Wie kann ich überprüfen ob eine Ereignisbehandlungsroutine existiert?

z.B. Button1.OnClick? Wenn es keine gibt will ich eine zuweisen...wie geht die Überprüfung?

mkinzler 27. Apr 2006 09:05

Re: Überprüfen ob ein Ergeigniss existiert?
 
Wenn keine Routine existiert, hat die Propertzy den Wert NIL.

Dale 27. Apr 2006 09:07

Re: Überprüfen ob ein Ergeigniss existiert?
 
Hallo,

falls keine Ereignisbehandlungsroutine existiert, dann müsste die Abfrage
Delphi-Quellcode:
Assigned(Button1.OnClick) = False
sein.

Gruß Dale

Karstadt 27. Apr 2006 09:58

Re: Überprüfen ob ein Ergeigniss existiert?
 
Delphi-Quellcode:
var I : Integer;
begin
  With Formular do
  begin
    for i:= 0 to ComponentCount-1 do
    begin
      IF (Components[i] is TDBGrid) Then
      begin
        //TDBGrid(Components[i]).Font.Size := 15;
        IF not Assigned(TDBGrid(Components[i]).OnDrawColumnCel) Then
        TDBGrid(Components[i]).OnDrawColumnCell := DbGrib_DrawColumnCell_Einstellung;
      end;
[Fehler] hauptfenster.pas(375): Undefinierter Bezeichner: 'OnDrawColumnCel'

Warum?

mkinzler 27. Apr 2006 10:00

Re: Überprüfen ob ein Ergeigniss existiert?
 
Schau mal in Zeile 10, dort hast du nen Tippfehler

sh17 27. Apr 2006 10:03

Re: Überprüfen ob ein Ergeigniss existiert?
 
Cell mit ll

Karstadt 27. Apr 2006 10:10

Re: Überprüfen ob ein Ergeigniss existiert?
 
:duck:


oh oh...

Eine weitere Frage... Wenn ich schon bei ONCLICK was eingegeben haben kann ich das per code erweitern.

Delphi-Quellcode:
var I : Integer;
begin
  With Formular do
  begin
    for i:= 0 to ComponentCount-1 do
    begin
      IF (Components[i] is TDBGrid) Then
      begin
        //TDBGrid(Components[i]).Font.Size := 15;
        IF not Assigned(TDBGrid(Components[i]).OnDrawColumnCell) Then
        TDBGrid(Components[i]).OnDrawColumnCell := DbGrib_DrawColumnCell_Einstellung
        //elseOnDrawColumnCell + DbGrib_DrawColumnCell_Einstellung geht das?
      end;

mkinzler 27. Apr 2006 10:11

Re: Überprüfen ob ein Ergeigniss existiert?
 
Nein eine (Ereignis-)Property zeigt auf eine Methode ( sie ist eien Referenz)

sh17 27. Apr 2006 10:18

Re: Überprüfen ob ein Ergeigniss existiert?
 
Du kannst aber in Deiner Routine

Delphi-Quellcode:
DBGrid1.DefaultDrawColumnCell(Rect,Datacol,Column,State);
aufrufen

Karstadt 27. Apr 2006 10:51

Re: Überprüfen ob ein Ergeigniss existiert?
 
und was bringt mir das?

sh17 27. Apr 2006 11:05

Re: Überprüfen ob ein Ergeigniss existiert?
 
ok, hab ich falsch verstanden.

Ich dachte, Du wolltest die Standardzeichenroutine des DBGrids erweitern.

Du willst aber eine bereits zugewiesene Zeichenroutine um eine andere erweitern.

Da müsstes Du in DrawColumnCell auf einen eigenen Handler zugreifen, der Deine verschiedenen Zeichenroutinen verwaltet und die jeweils aktiven aufruft.

Oder? :?:

Karstadt 28. Apr 2006 11:22

Re: Überprüfen ob ein Ergeigniss existiert?
 
Zitat:

Zitat von sh17
ok, hab ich falsch verstanden.

Ich dachte, Du wolltest die Standardzeichenroutine des DBGrids erweitern.

Du willst aber eine bereits zugewiesene Zeichenroutine um eine andere erweitern.

Da müsstes Du in DrawColumnCell auf einen eigenen Handler zugreifen, der Deine verschiedenen Zeichenroutinen verwaltet und die jeweils aktiven aufruft.

Oder? :?:


Ich möchte das so realisieren...wenn DBGrid einen Ereignis hat, dann soll der erweitert werden.


DrawColumnCell
begin
//irgendwas
end;

und dann soll das erweitert werten

DrawColumnCell := neuesEreignis:

Ergebniss:

DrawColumnCell
begin
//irgendwas UND
neuesEreignis
end;

sh17 28. Apr 2006 11:58

Re: Überprüfen ob ein Ergeigniss existiert?
 
dann müsste ja so etwas gehen:

Delphi-Quellcode:
TMyHandler
  OnDrawCells : Liste
  procedure AddDrawPoc
  procedure RemoveDrawProc
  procedure SetEnabled(ProcSoundso, Value)
  procedure Draw()
end;

..
procedure TMyHandler.draw
begin
  for alle Proc in OnDrawCells do
  if proc.active then
    proc
end;


DBGrid.OnDrawCell...
begin
  Handler.Draw();
end;
Mal so aus der hohlen Hand.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:06 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