AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit TNotifyEvent

Ein Thema von Gambit · begonnen am 31. Mär 2005 · letzter Beitrag vom 31. Mär 2005
 
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#1

Problem mit TNotifyEvent

  Alt 31. Mär 2005, 14:32
Hallo,

ich möchte, wenn ich auf eine CheckBox klicke, dann wenn sie angehakt wird, eine Form2 öfnnen.
Ob die Checkbox angeklickt ist oder nicht, speichere ich in einer Ini-Datei. Damit wird der Zustand der Checkbox beim Aktivieren der Form1, auf der die CheckBox liegt, wiederhergestellt. Da ich aber nicht möchte, dass die Form2, die durch Klicken auf die Checkbox geöffnet werden soll, jedesmal geöffnet wird wenn ich die Form1 auf der die Checkbox liegt öffne, (das passiert, wenn der Defaultwert der Checkbox von dem aus der Ini-Datei abweicht, weil dann ein OnClick-Ereignis ausgelöst wird), lege ich das OnClick-Ereignis der Checkbox temporär auf eine Variable vom Typ TNotifyEvent (foo), und weise der CheckBox den Wert aus der Ini-Datei zu:

Auszug aus der OnActivate-Procedur von Form1

Delphi-Quellcode:
foo := ChkBox1.OnClick;
ChkBox1.OnClick := nil;
ChkBox1.Checked:= ini.IniCheckBox1Value;
ChkBox1.OnClick := foo;
das funzt auch.

wenn ich aber weiter im OnActivate-Ereignis der Form1 eine Procedur aufrufe, die ebenfalls ein Ereignis temporär auf ein TNotifyEvent legt, hier aber die Variable foo lokal benutzt, bekomme ich eine Speicherschutzverletzung.

Delphi-Quellcode:
procedure TFormSettings.setIP_Values(AddressField: TJvIPAddress; IP_String: String; var val: array of String);
var foo : TNotifyEvent;
begin
  foo := AddressField.OnChange;
  AddressField.OnChange := nil;
  for i:= 1 to length(val) do
  begin
    ...
  end;
  AddressField.OnChange := foo;
end;

Warum das? Lege ich die Variable foo als globale Variable der Klasse an, funzt auch alles.

Gruß

Gambit
  Mit Zitat antworten Zitat
 


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 07:12 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