AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Events weiterreichen

Ein Thema von _frank_ · begonnen am 6. Jun 2007 · letzter Beitrag vom 9. Jun 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#1

Events weiterreichen

  Alt 6. Jun 2007, 18:54
Moin,
ich bastel grade an meinem MenuEditor
code sagt mehr als 1000 Worte

Delphi-Quellcode:
  TChangeEvent = procedure (Sender: TObject;Index:Integer) of object;

  TMenuEntry=class(TComponent)
    private
      ...
      FMenu:TMenuEditor;
    ....
    published
      property SubMenu:TMenuEditor read FSubMenu write FSubMenu;
      property Menu:TMenuEditor read FMenu;
    end;

  TMenuEditor=class(TListbox)
  private
    ....
    FOnAdd,FOnDelete,FOnChange:TChangeEvent;
  protected
    procedure SetAddEvent(e:TChangeEvent);
    ...
  public
    property Entries[index:integer]:TMenuEntry read GetEntry;
  published
    property OnAdd:TChangeEvent read FOnAdd write SetAddEvent;
    ...
  end;
TMenuEditor hat TMenuEntries für jedes Element...TMenuEntry kapselt ein Element (Menüeintrag),
Das Menü ist kaskadierbar, d.h. jeder dieser Einträge kann einen weiteren editor beinhalten.
nun will ich, dass beim setzen der events des obersten TMenuEditor die events weiter unten auch gesetzt werden. dazu hab ich für die Events folgende Setter-Methode (bei den beiden anderen Events genauso nur halt mit FOnChange/FOnDelete):

Delphi-Quellcode:
procedure TMenuEditor.SetAddEvent(e:TChangeEvent);
var i:integer;
begin
  FOnAdd:=e;
  for i:=0 to items.count-1 do
  begin
    if assigned(Entries[i].Submenu) then
      Entries[i].Submenu.OnAdd:=e;
  end;
end;
leider bekomme ich beim beenden meiner Test-Applikation eine "ungültige Zeigeroperation".
ich habe die Test-anwendung mal angehängt (vererbung momentan auskommentiert).

Hoffe, jemand hat eine Idee, wie man das gewünschte (evtl. auch anders) realisieren kann.

//Edit:
habe auch schon versucht folgendes am ende der Procedure LoadMenuFromTreeview einzubauen mit gleichem ergebnis:

Delphi-Quellcode:
  Editor.OnAdd:=form1.MenuAdd;
  Editor.OnDelete:=form1.MenuDelete;
  Editor.OnChange:=form1.MenuChange;
Gruß Frank
Angehängte Dateien
Dateityp: zip menueditor_401.zip (172,4 KB, 11x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#2

Re: Events weiterreichen

  Alt 8. Jun 2007, 22:07
niemand eine idee? *push*
  Mit Zitat antworten Zitat
Benutzerbild von cruiser
cruiser

Registriert seit: 23. Dez 2003
Ort: Königsbrück/Sachsen
455 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Events weiterreichen

  Alt 8. Jun 2007, 22:08
Hatten wir doch neulich erst... hier

Okay... das is Blödsinn... aber vor dem beenden könntest du die Events auf nil setzen...
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#4

Re: Events weiterreichen

  Alt 8. Jun 2007, 22:18
Moin,

das ist keine Frage á la "Wie definiere ich ein event" oder "wie weise ich eine methode einem Event zu".
es geht um einen speziellen Fall, die rekursive zuweisung. Ich weis schon wie man die Suche benutzt, jedoch hab ich nichts gefunden, was mir weitergeholfen hat. Wenn du einen bestimmten Beitrag gefunden hast, dann verlinke bitte den.

Wie geht das mit dem durchstreichen??
=> der zitat-button ist praktisch

sicher, aber das ist in meinen Augen eher eine "Pfusch-Lösung"

Gruß Frank
  Mit Zitat antworten Zitat
Benutzerbild von cruiser
cruiser

Registriert seit: 23. Dez 2003
Ort: Königsbrück/Sachsen
455 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Events weiterreichen

  Alt 8. Jun 2007, 22:50
Tja, dann entschuldige, dass ich es evtl. für Hilfreich hielt und deshalb nur durchgestrichen hab. Ich bekomme übrigens bei jedem Eintrag in den Popupmenüs ungültige Typumwandlungen. Weiterreichen von Events ist Pfusch? Ausser dass du es Rekursiv machst und da evtl. was schief geht ist das Beispiel nicht gross anders.
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#6

Re: Events weiterreichen

  Alt 8. Jun 2007, 23:02
Sorry,
war keine Kritik an deiner Hilfsbereitschaft, nur dürfte es nicht im Sinne der OOP sein, dass man vor dem freigeben die events deaktiviert, oder seh ich das falsch?
sowas sollte ja eigentlich die klasse selber machen, wenns denn unbedingt notwendig ist, vielleicht gibt es ja auch eine elegantere Variante, auf das hinzufügen/löschen in diversen ebenen zureagieren, ohne für jede das event neu zu setzen (was ja auch zu dem mysteriösen Fehler führt).
Wo bekommst du da ungültige Typumwandlungen? sowas hatte ich bei meinen bisherigen Tests noch nicht...

Gruß Frank
  Mit Zitat antworten Zitat
Benutzerbild von cruiser
cruiser

Registriert seit: 23. Dez 2003
Ort: Königsbrück/Sachsen
455 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Events weiterreichen

  Alt 8. Jun 2007, 23:11
Neuer Eintrag/Neues SubMenu

hast du mal haltepunkte gesetzt?

Ich bin im Moment zu Müde, aber evtl. schiesst auch was zw. Menuentry und Menueditor quer...

Den fehler beim Beenden hatte ich übrigens nicht.
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#8

Re: Events weiterreichen

  Alt 9. Jun 2007, 13:43
also einen Fehler (ungültige Typumwandlung) beim Erstellen eines eintrags/untermenüs hab ich nicht (unter d3 und d7 getestet). nur, wenn ich versucht habe, bei einem bereits vorhandenen Untermenü es nochmal zu erstellen (AV, hab ich bei mir schon gefixt).

wegen dem ursprünglichen Fehler: hast du die o.g. auskommentierten sections wieder aktiviert?
der fehler tritt bei mir auch unter d3 und d7 auf...

hab das mal versucht mit dem nil zu realisieren, scheint soweit zu funktionieren:

Delphi-Quellcode:
destructor TMenuEntry.Destroy;
begin
  FProperties.Free;
  if assigned(fSubmenu) then
  begin
    if FMenu.FMenuVisible=FSubMenu then
      FMenu.FMenuVisible:=nil;
    FSubMenu.OnDelete:=nil;
    FSubMenu.OnAdd:=nil;
    FSubMenu.OnChange:=nil;
    FSubMenu.Free;
  end;
  inherited;
end;
das ganze Project mit aktuellen Stand hab ich angehängt (wegen dem invalid Typecast).

Gruß Frank
Angehängte Dateien
Dateityp: zip menueditor_462.zip (167,2 KB, 3x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von cruiser
cruiser

Registriert seit: 23. Dez 2003
Ort: Königsbrück/Sachsen
455 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Events weiterreichen

  Alt 9. Jun 2007, 14:29
ich muss gestehn, ich hab mir nur fix die Sourcen angesehn und die Exe gestartet... werds mal richtig laden

edit: keine ungültige Zeigeroperation, und solang ich auf einem Menü bleib, funzt das Popup-menu zum steuern auch Fehlerfrei... ich bin mir nicht sicher, aber ich würd den Fehler im Treeview suchen...

Die ganzen Typecasts zu untersuchen ist mir offen gesagt ein wenig aufwändig
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#10

Re: Events weiterreichen

  Alt 9. Jun 2007, 15:50
die "ungültige Zeigeroperation" kommt auch nach der nil-Modifikation nicht mehr
jedoch kommt bei mir auch kein von dir angesprochener "ungültige Typumwandlung"-Fehler.
was meinste du mit "solang ich auf einem Menü bleib, funzt das Popup-menu zum steuern auch Fehlerfrei"?
wann funktioniert es nicht?
konnte bei mir auch in dem vordefinierten Untermenü Einträge und weitere Untermenüs fehlerfrei erstellen.

Gruß Frank
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 01:43 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