Einzelnen Beitrag anzeigen

bigg
(Gast)

n/a Beiträge
 
#8

Re: AV bei benutzen von Eigenschaften eines MDIChilds

  Alt 31. Okt 2005, 22:50
hi,

Jedes VCL-Formular besitzt automatisch die MDi-Methoden:
- MDiChildCount
- MDiChildren
- ..

Du solltest deswegen den Formularbezeichner immer vorne mit dazuschreiben!
MainForm ist in diesem Beispiel der Formularbezeichner.

Delphi-Quellcode:
  if MainForm.MDiChildCount > 0 then
  MainForm.MDiChildren[0].Caption := 'Hallo Welt...'; // 0 ist immer das aktive Child
Hier mal ein Beispiel, wie man es nicht machen sollte!:
Delphi-Quellcode:
  if MDiChildCount > 0 then // falsch bzw. riskant
  MDiChildren[0].Caption := 'Hallo Welt...'; // falsch bzw. riskant
Nun benutzt der Compiler automatisch Self.
Und Self steht für das Formular deiner jeweiligen Unit. (sofern es ein Formular ist)

Delphi-Quellcode:
  if Self.MDiChildCount > 0 then // das macht der Compiler draus
  Self.MDiChildren[0].Caption := 'Hallo Welt...'; // das macht der Compiler draus
Jedes MDiChild besitzt einen Klassennamen z. Beispiel: 'TChild'.
Über diese Klasse kannst du auf alle anderen Objekte/Eigenschaften zugreifen.

Ein Beispiel:
TChild(MainForm.MDiChildren[0]).Memo1.Text := 'Hallo Welt'; oder
(MainForm.MDiChildren[0] as TChild).Memo1.Text := 'Hallo Welt'; Schreib dir am besten eine Funktion, die du dann von überall aus aufrufen kannst.
Übrigens kann man Zugriffsverletzungen auch aus dem Weg gehen, indem man vorher (MDi <> nil)
überprüft.

lg bigg
  Mit Zitat antworten Zitat