![]() |
Falsche Änderung in einem Frame rückgängig machen
ich habe in meinem Formular ein Frame platziert.
Das Frame hat eine Komponente "Checkboxanlage" mit Onclick Ereignis. Nun habe ich im Formular via Objektinspektor irrtümlich ein Onclick Ereignis eingetragen und das dann wieder gelöscht. Daraufhin steht im Dfm-File:
Code:
Kann ich das über den Objektinspektor wieder wegbekommen (ich will ja das geerbte Onclickereignis beibehalten), oder geht das nur, indem ich das DFM File direkt editiere (das habe ich gemacht, aber ich würde gerne wissen, ob es auch anders geht)?inherited CheckBoxAnlage: TCheckBox OnClick = nil |
AW: Falsche Änderung in einem Frame rückgängig machen
Das kann ich hier nicht nachvollziehen. Wenn ich im Objektinspektor ein Ereignis für OnClick erzeuge, steht im DFM-File des Formulars oder Frames einfach nur das:
Delphi-Quellcode:
Nachdem ich das Ereignis wieder gelöscht habe, fehlt im DFM-File der Eintrag OnClick ... In keiner meiner DFM-Dateien kommt auch nur einmal das Token NIL vor ... bist du dir sicher, daß das in deinem DFM-File steht? Sieht mir eher wie aus einem PAS-File aus ...
object CheckBox1: TCheckBox
Left = 125 Top = 305 Width = 97 Height = 17 Caption = 'CheckBox1' TabOrder = 0 OnClick = CheckBox1Click end |
AW: Falsche Änderung in einem Frame rückgängig machen
Doch, er hat Recht. Das steht so in der DFM des Formulars auf welchem der Frame platziert wurde. Ich kenne aber leider auch kein Gegenmittel.
|
AW: Falsche Änderung in einem Frame rückgängig machen
Wenn in einem Frame, im Vorfahren eines abgeleiteten Forms, im MultiView oder einer anderen Ableitungsvariante im Vorfahren ein Event zugewiesen war und man löscht das in einer Ableitung (inherited), dann wird natürlich das nil gespeichert, was man da ja eingetragen hat.
Man kann in der DFM (Strg+F12 und das Property löschen) oder im VCS das rückgängig machen. Oder du weißt das Event wieder zu (wenn man es kennt) ... findest du es denn im DropDown nicht? Teilweise kann man im Kontextmenü des Formdesigners einen "Wiederherstellen"-Menüpunkt finden. Theoretisch würde man das auch im OI benötigen, aber ich glaub da fehlt das im Menü. @Perslau: Ableitung (inherited) und nicht Original (object) :wink: |
AW: Falsche Änderung in einem Frame rückgängig machen
@idefix2:
Wie bekommt man eigentlich zur Desingzeit ein Frame auf ein Formular? Zitat:
Zitat:
|
AW: Falsche Änderung in einem Frame rückgängig machen
Toolpalette "Frames" und dann geht ein Helper auf, der z.B. Frames im selben Projekt auflistet.
|
AW: Falsche Änderung in einem Frame rückgängig machen
Ahh! Jetzt! Das hatte ich bisher nie verwendet ... Der Ursprungsframe enthält eine Checkbox mit zugewiesenem OnClick-Ereignis. Ich wechsle ins Mainform und platziere darauf den Frame via Toolpalette -> Standard -> Frames. Okay. Danach klicke ich die auf dem jetzt eingebetteten Frame befindliche Checkbox an und sehe im OI -> Ereignisse, daß in dieser Kopie des Original-Frames der Checkbox keine Ereignisbehandlung zugewiesen wurde. Wenn ich jetzt im OI via Doppelklick der Checkbox im Frame auf dem Formular ein Ereignis zuweisen will, erstellt mir Delphi folgende Procedure in der Mainform:
Delphi-Quellcode:
Das ruft dann die bereits implementierte Ereignisbehandlung für die Checkbox auf und funktioniert tatsächlich wie erwartet. Wenn ich jetzt im OI das Ereignis lösche, steht tatsächlich in der DFM der Mainform:
procedure TFormMain.Frame_Test1CheckBox1Click(Sender: TObject);
begin Frame_Test1.CheckBox1Click(Sender); end;
Delphi-Quellcode:
Nachdem ich das Ereignis im OI wieder zugewiesen habe, steht dort:
inherited CheckBox1: TCheckBox
OnClick = nil
Delphi-Quellcode:
Damit dürfte das Problem gelöst sein :)
inherited CheckBox1: TCheckBox
OnClick = Frame_Test1CheckBox1Click |
AW: Falsche Änderung in einem Frame rückgängig machen
Zitat:
Wenn man sich im OI der Form die Ereignisse anschaut, die der Komponente eines Frame zugeordnet sind, ist das komplett leer, die geerbten Ereignisse sind da nicht sichtbar, die sieht man nur, wenn man das Original-Frame bearbeitet. Ist auch nicht weiter schlimm, man kann es ja direkt in der DFM-Datei löschen - ich habe das nur gefragt, weil ich in dem File nicht besonders gerne herumfuhrwerke, weil man da sehr schnell irgendwas gröber ruiniert: beim Herauslöschen dieses inherited habe ich in der DFM Datei zuerst das zugehörige "end" nicht mitgelöscht, daraufhin waren beim ersten Versuch, die neue Version zu kompilieren, plötzlich die Hälfte der Formularkomponenten weg, da hab ich im ersten Moment recht dumm dreingeschaut :shock: @Perlsau 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. |
AW: Falsche Änderung in einem Frame rückgängig machen
Zitat:
Ich kenn z.B. Komponenten von einem globalen DataModul, deren "Link" man nur sieht, wenn der Fokus sich im Edit befindet und sonst ist der auch unsichtbar, außer die Datenmodul-Unit ist ebenfalls gerade im Editor geladen, bzw. sie war es in dieser Session mal geladen, wenn das Datenmodul sich zudem in einem Designpackage innerhalb der IDE befindet. Zitat:
|
AW: Falsche Änderung in einem Frame rückgängig machen
Zitat:
Zitat:
"Geerbte Einstellungen wiederherstellen" Danke für den Tipp. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:34 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