Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Falsche Änderung in einem Frame rückgängig machen (https://www.delphipraxis.net/185125-falsche-aenderung-einem-frame-rueckgaengig-machen.html)

Perlsau 18. Mai 2015 01:17

AW: Falsche Änderung in einem Frame rückgängig machen
 
Zitat:

Zitat von idefix2 (Beitrag 1301868)
Frame_Test1Checkbox1Click ist aber eine Ereignisbehandlungsroutine der Form, die ihrerseits die Routine der frame aufruft, was zumindest überflüssiger Overhead ist. Deshalb wollte ich das so nicht stehen lassen. Aber offenbar bringt man das nicht mehr via OI weg, sondern nur direkt in der DFM Datei.

Wenn du den Frame zur Designzeit in das Form einbettest, wird jedes Ereignis im Frame zu einem Ereignis im Form. Da die eigentliche Ereignisbehandlung jedoch im Frame steht, muß die Ereignisbehandlung im Form die im Frame aufrufen. Der Frame wird dabei zu einer Komponente des Forms. Wenn du nun deine Checkbox im Frame, das bereits in die Form eingebettet ist, markierst, siehst du im OI keine Zuweisung einer Ereignisbehandlung. Die Ereignisse des Frames sind im OI offenbar nicht verfügbar. Wenn du diese Zuweisung nicht machst, funktioniert dein Klick auf die Checkbox zur Laufzeit nicht (eben nochmal getestet). Ergo ist es kein überflüssiger Overhead, sondern Notwendigkeit. Etwas anders sieht es aus, wenn du den Frame erst zur Laufzeit in der Form unterbringst. Dabei reagiert der Frame vollkommen eigenständig. Ob das jetzt ein Bug ist oder so gewollt, kann ich dir mangels tiefergehender Kenntnisse über die Eingeweide der Delphi-IDE auch nicht sagen ... :stupid:

Alles falsch, hab eben das Frame aus der Form gelöscht und den Frame nochmal "frisch" auf die Form verpflanzt und siehe da: Die Ereignisbehandlung der Checkbox funktioniert auch ohne diesen Overhead. Das heißt: Nach dem Einbetten des Frame in das Form steht im OI kein Ereignis für die Checkbox, und es funktioniert dennoch. Du mußt also vor dem Löschen selber was eingetragen haben, was dann natürlich nur über die Form funktioniert.

Sorry für die Irreführung, für mich stellt dieser Fall auch Neuland dar, weil ich zuvor noch niemals einen Frame zur Designzeit in eine Form eingebettet habe. Immerhin: Wieder was dazugelernt ...

idefix2 18. Mai 2015 01:39

AW: Falsche Änderung in einem Frame rückgängig machen
 
Zitat:

Zitat von Perlsau (Beitrag 1301875)
Du mußt also vor dem Löschen selber was eingetragen haben, was dann natürlich nur über die Form funktioniert.

Richtig, im Eingangspost habe ich geschrieben:
Zitat:

Zitat von idefix2 (Beitrag 1301855)
...
Nun habe ich im Formular via Objektinspektor irrtümlich ein Onclick Ereignis eingetragen und das dann wieder gelöscht. Daraufhin steht im Dfm-File:
...

Und richtig hätte ich das falsche onclick mit Hilfe des Kontextmenüeintrags weggebracht, auf den mich Himitsu aufmerksam gemacht hat, statt es zu löschen.

Dejan Vu 18. Mai 2015 07:55

AW: Falsche Änderung in einem Frame rückgängig machen
 
Wenn man 'Geerbte Einstellungen' wiederherstellen anwendet, werden natürlich alle Änderungen ggü. dem Original entfernt. Das will man aber manchmal nicht. Leider hilft hier 'nur' das direkte Editieren der DFM. Das finde ich allerdings nicht schlimm. Ich mache viele Refactorings über die DFM direkt. So eine IDE kann eben nicht alles. Schön wäre hier ein Syntaxhighlightning der DFM und ein paar Hilfen, so wie es bei WPF oder ASP.NET der Fall ist.


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

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