AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein AV bei benutzen von Eigenschaften eines MDIChilds
Thema durchsuchen
Ansicht
Themen-Optionen

AV bei benutzen von Eigenschaften eines MDIChilds

Ein Thema von -NIP- · begonnen am 27. Okt 2005 · letzter Beitrag vom 1. Nov 2005
 
Robert_G
(Gast)

n/a Beiträge
 
#9

Re: AV bei benutzen von Eigenschaften eines MDIChilds

  Alt 31. Okt 2005, 23:27
Was auch gerne falsch gemacht wird, ist das Verwenden der globalen Variablen des Form designers in den MdiChilldren.

Den Link zum Mainform kann man easy als Property im Child ablegen:

Delphi-Quellcode:
property MainForm : DeineMainFormKlasse read getMainForm;


...

function DeineChildklasse.getMainForm : DeineMainFormKlasse;
begin
  result := Owner as DeineMainFormKlasse;
end;
Wenn die Children so angelegt werden gibt es damit schonmal kein Problem:
DeineMainFormKlasse.Create(self); Wenn die Methode im MainForm aufgerufen wird ist self dein MainForm.
Ansonsten musst du natürlich eine Referenz darauf übergeben


Im MdiChild niemals(!!!) die globale Variable verwenden, die der Form designer anlegt.
Das hier muss natürlich knallen, wenn es mehr als ein Child gibt:
Delphi-Quellcode:
procedure TDeineChildklasse.DoSomething;
begin
  DeineChildklasse.Irgendwas();
end;
Wenn es nicht knallt, wird es wohl trotzdem selten das machen, was du willst. Die Variable wird die ihr zuletzt zugewiesene Instanz enthalten. Höchstwahrscheinlich also nicht die, in der du gerade bist.
Besser ist es also komplett zu ignorieren, dass Delphi da ständig diese eklige globale Variable anlegt:
Delphi-Quellcode:
procedure TDeineChildklasse.DoSomething;
begin
  self.Irgendwas();
  // oder hübscher -> implizites self:
  Irgendwas();
end;
Zitat von bigg:
Du solltest deswegen den Formularbezeichner immer vorne mit dazuschreiben!
Eben genau das nicht. Sollte man eigentlich nie machen...
  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 19:02 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-2025 by Thomas Breitkreuz