Autor Beitrag
Grafix
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 122

Windows 7 Professional
Delphi 2009, PHP, Prolog, Python, Java
BeitragVerfasst: Sa 17.07.10 17:29 
Hey mal wieder,

ich habe folgendes Problem:
ich habe ein Form1, mit dem ich ein Form2 aufrufe, und zwar automatisch im OnActivate Teil von Form1 mit Form1.Show.

Beim schließen des zweiten Forms (ohne etwas darauf gemacht zu haben), kommt folgender Error:

"DebuggerError: Die Eigenschaft Visible kann in OnShow oder OnHide nicht verändert werden."

Problem: Ich habe die Eigenschaft Visible in diesem Projekt nicht einmal manipuliert, und OnShow oder OnHide nicht benutzt...?!?!

Danke im Voraus
Lg

Grafix

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

Problem gelöst. Das Problem war, ich habe das Form2 im Form1 OnActivate aufgerufen - scheint wohl nicht zu gehn. Es geht aber in Form2 OnShow.

Auf die Idee bin ich natürlich auch erst nach dem ich die Frage hier gestellt habe gekommen...


Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am So 18.07.2010 um 22:45
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19322
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 24.07.10 11:54 
Eine andere meistens sinnvollere Variante ist einfach den Aufruf des zweiten Formulars vor den Aufruf des anderen in den Projektquelltext zu setzen. Dadurch verringerst du die Abhängigkeit der Klassen untereinander.

Beispiel:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
var
  MySettings: TAppSettings;
begin
  MySettings := TAppSettings.Create();
  try
    MySettingsForm := TfrmSettingsForm.Create(MySettings);
    try
      MySettingsForm.ShowModal;
    finally
      MySettingsForm.Free;
    end;
    Application.CreateForm(frmMain, TfrmMain);
    frmMain.Settings := MySettings;
    Application.Run;
  finally
    MySettings.Free;
  end;
end;
Das lässt sich natürlich auch anders lösen, z.B. via Singleton-Pattern über Klasseneigenschaften bei der Einstellungsklasse usw., aber es ging mir hier eher um den Grundgedanken. ;-)
Grafix Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 122

Windows 7 Professional
Delphi 2009, PHP, Prolog, Python, Java
BeitragVerfasst: Sa 24.07.10 18:23 
Ah danke, interessante Lösung.