![]() |
Re: Dynamische Fenster über Funktion ansteuern
Alles klar, das hat mir schon weitergeholfen. :thumb:
Vielen Dank für die Hilfe :) |
Re: Dynamische Fenster über Funktion ansteuern
Moin, zusammen,
also ich habe da bei Torry noch was hilfreiches. Dort findet sich eine Routine, die alle Formualare einer Liste enumeriert. Um an Daniels TList anzuknüpfen: Könnte mir vorstellen, dass man dort automatisch alle Formulare eintragen lässt. Kurzum der Link: ![]() Grüße // Martin |
Re: Dynamische Fenster über Funktion ansteuern
Warum geht "Self" nicht?
So wie ich das verstanden habe, ist die Funktion bestandteil der Form. Dann also:
Delphi-Quellcode:
Gruß Igotcha
procedure AddAction(action:string);
begin Self.MiroEdit.SelText := #13#10 + '#' + #13#10 + '#-----[ ' + action + ' ]------------------------------------------'+ #13#10 + '#' + #13#10; Self.MiroEdit.SetFocus; end; |
Re: Dynamische Fenster über Funktion ansteuern
Self kann man bei Delphi ja nur in so dingen benutzen wie Create(self) usw. aber nicht als bezeichnung des aktiven, das geht nur bei JavaSkript soweit mir bekannt ist. Wenn man nur Self schreibt würde das zu nem undefinierten Bezeichner führen.
|
Re: Dynamische Fenster über Funktion ansteuern
Hi,
ich habe mal etwas rumexperimentiert und eine wesentlich einfachere und bessere Methode herausgefunden. Bei den ersten uses im Hauptformular wo also Windows, Messages usw. eingebunden ist füge ich einfach den Komponentennamen noch hinzu:
Delphi-Quellcode:
wobei editor_miro der Name des Forms ist.
, editor_miro
Anschließend lege ich die Objektvariable nicht nur lokal an, da wo ich vorher das Fenster geöffnet habe, sondern Superglobal, also in die var-Liste noch vor "implementation"
Delphi-Quellcode:
EditorMOD : TEditor_MOD;
Das öffnen der Fenster bleibt identisch, nur habe ich halt keine var mehr lokal gebraucht, da diese Superglobal besteht also aus
Delphi-Quellcode:
wurde nun
procedure ...;
var EditorMOD: TEditor_MOD; begin EditorMOD := TEditor_MOD.Create(self); EditorMOD.Caption := 'CBACK MIRO - Mod Editor'; EditorMOD.Show; end;
Delphi-Quellcode:
procedure ...;
begin EditorMOD := TEditor_MOD.Create(self); EditorMOD.Caption := 'CBACK MIRO - Mod Editor'; EditorMOD.Show; end; Soo und im Editorfenster die Prozedur sieht nun einfach so aus:
Delphi-Quellcode:
procedure AddAction(action:string);
begin EditorMOD.MiroEdit.SelText := #13#10 + '#' + #13#10 + '#-----[ ' + action + ' ]------------------------------------------'+ #13#10 + '#' + #13#10; EditorMOD.MiroEdit.SetFocus; end; So kann ich diese Prozedur nun auch nutzen wenn mehrere Fenster geöffnet werden und es wird auch im richtigen Fenster zugeordnet. Ich brauche also kein Array, keine Liste, nix. Also die einzige Änderung ist, das Objekt für die Multi-Fenster nicht lokal, sondern Superglobal anzulegen, wie beispielsweise das beim Hauptformular von Delphi gemacht wird. :bounce1: |
Re: Dynamische Fenster über Funktion ansteuern
:gruebel: Wie schickst du dann Actions an Fenster, die nicht das zuletzt erstellte sind? Oder geht es nur um dieses?
|
Re: Dynamische Fenster über Funktion ansteuern
Ich kann die Actions in allen Fenstern senden, das Windows API macht nämlich den Rest, das Fenster muss von Delphi so nur erzeugt werden. Wo es dann letztendlich hingeht verwaltet das Windows Fenstersystem. Die Actions werden nur in dem Fenster angezeigt, von wo sie aufgerufen wurden, also genau so wie es sein soll. :-D
|
Re: Dynamische Fenster über Funktion ansteuern
Zitat:
|
Re: Dynamische Fenster über Funktion ansteuern
Ich muss zugeben, dass ich von Actions keine Ahnung habe :oops: .
Aber trotzdem, wenn diese Funktion - von wem auch immer - aufgerufen wird, wird doch immer das Edit im zuletzt erstellten Formular geändert?
Delphi-Quellcode:
procedure AddAction(action:string);
begin EditorMOD.MiroEdit.SelText := #13#10 + '#' + #13#10 + '#-----[ ' + action + ' ]------------------------------------------'+ #13#10 + '#' + #13#10; EditorMOD.MiroEdit.SetFocus; end; |
Re: Dynamische Fenster über Funktion ansteuern
Hallo Sebastian,
lass dich nicht vom Namen täuschen - es geht hier nicht um TAction. Außerdem stolperst du gerade über den nicht vorhandenen qualifier vor dem procedure identifier "AddAction" - da steht mitnichten TEditorMod.AddAction. Und außerdem wäre der Zugriff über die globale Form-Variable bei mehreren Instanzen ein grober Fehler. Grüße vom marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:41 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 by Thomas Breitkreuz