AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Sourcecode für zur Designtime erzeugten Methode per designer.createmethod
Thema durchsuchen
Ansicht
Themen-Optionen

Sourcecode für zur Designtime erzeugten Methode per designer.createmethod

Ein Thema von Keldorn · begonnen am 25. Jul 2016 · letzter Beitrag vom 26. Jul 2016
Antwort Antwort
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#1

Sourcecode für zur Designtime erzeugten Methode per designer.createmethod

  Alt 25. Jul 2016, 16:19
Hallo

Ich möchte für mich das Handling von actions etwas vereinfachen und mir eine kleine Designtime-Hilfskomponente schreiben, mit der ich actions zusätzlich zum actionmanager besser verwalten und vorallem schneller anlegen kann. Speziell nervt mich das ständige hin und hergeklicke und das Erzeugen des onexecutes-Ereignisses.

Erste vorsichtige Versuchsschritte sind:
Delphi-Quellcode:
Procedure Proc_NeueAktionErstellen(AMH:TActionManagerHelper);
Var Action:TAction;

    //quelle: http://www.gexperts.org/open-tools-api-faq/
    procedure DoCreateMethod(Persistent: TPersistent;
                             MethodShortName, MethodSourceName: string);
    var
      Method: TMethod;
      PropInfo: PPropInfo;
      TypeInfo: PTypeInfo;

    begin
      TypeInfo := PTypeInfo(Persistent.ClassInfo);
      PropInfo := GetPropInfo(TypeInfo, 'On' + MethodShortName);
      Method := Designer.CreateMethod(MethodSourceName, GetTypeData(PropInfo^.PropType^));

      SetMethodProp(Persistent, PropInfo, Method);
    end;


begin
    Action := TAction(Designer.CreateComponent(TAction,
                                               AMH.ActionManager.Owner,
                                               0,0,0,0));
    Action.Name := Designer.UniqueName('Action_test');
    Action.caption := 'test';
    Action.Category := 'TestCategory';
    Action.ActionList:= AMH.ActionManager;

    DoCreateMethod(Action,
                   'Execute',
                   Action.Name+'Execute');

    Designer.ShowMethod(Action.Name+'Execute');

    Designer.Modified;
end;
Macht das, was ich will: legt eine neue action+dazugehöriges Ereignis an.

Frage: Wie bekomme ich aber sourcecode in die erzeugte EreignisMethode reingeschrieben?

Hat da einer eine Idee ?

Danke & Gruß Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Sourcecode für zur Designtime erzeugten Methode per designer.createmethod

  Alt 25. Jul 2016, 18:11
Aus der Hilfe zu TMethod:
Zitat:
Sie können eine TMethod-Variable füllen, indem Sie Daten als Zeiger auf ein Objekt und mit MethodAddress Code zuweisen und den Methodennamen als String-Parameter für diese Methode festlegen.
Beispielcode müsste hier in der DP zu finden sein. Hilft Dir das weiter?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

AW: Sourcecode für zur Designtime erzeugten Methode per designer.createmethod

  Alt 25. Jul 2016, 19:20
Danke, aber nicht so richtig . Zu createmethod hatte ich in der DP gar nix für mich gefunden

die dahingehend angeschauten Beispiele hatte ich immer so verstanden, dass damit zur Laufzeit was umgebogen werden kann. Das will ich ja nicht, ich möchte ja gerne, dass der Code zur Designtime erstellt wird und dann im quelltext des erzeugten events steht.

bei PPropInfo hatte ich auch nix gefunden, was auf eine Übergabe von Text schliessen lässt.

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Sourcecode für zur Designtime erzeugten Methode per designer.createmethod

  Alt 25. Jul 2016, 20:19
Oh, da habe ich Dich komplett missverstanden, sorry.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#5

AW: Sourcecode für zur Designtime erzeugten Methode per designer.createmethod

  Alt 26. Jul 2016, 19:42
kein Problem.

habe nun eine andere Alternative gesucht und schreibe nun den gewünschten Code ganz normal nach showmethod in den Editor per
Delphi-Quellcode:
    procedure Proc_SetEditblock(const AText: string);
    var
      EditorServices: IOTAEditorServices;
      EditView: IOTAEditView;
    begin
      EditorServices := BorlandIDEServices as IOTAEditorServices;
      EditView := EditorServices.TopView;
      if Assigned(EditView) then
        begin
          EditView.Buffer.EditPosition.InsertText(aText);
          EditView.Paint;
        end;
    end;
macht erstmal das, was ich erreichen wollte.
Falls noch jemand eine andere Idee hat, gerne.

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
Antwort Antwort

 

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