Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Typecast für MDI Childs ? (https://www.delphipraxis.net/144065-typecast-fuer-mdi-childs.html)

moelski 29. Nov 2009 07:56


Typecast für MDI Childs ?
 
Moin !

Ich habe da folgende Situation ... Habe da x MDI Fenster:
TForm_MDI1, TForm_MDI2, ....

In diesen Forms gibt es ein Flag das ich gerne setzen würde beim Schließen aller MDI Childs.
Das Flag kann ich nun so addressieren:
Delphi-Quellcode:
TForm_MDI1(MainForm.MDIChildren[I]).Flag := True;
Aber wenn ich das auf alle offenen MDI Fenster anwenden will dann klappt das nicht. Ich müsste wenigstens den ClassenNamen überprüfen ala:
Delphi-Quellcode:
MainForm.MDIChildren[I].ClassName = 'TChild_Memo'
..

Und dann müsste ich auch für jedes Fenster einen eigenen Cast bauen. Das ist irgendwie unschön.

Kriegt man das universeller hin? Wie gesagt, Ziel isses in allen offenen MDI Fenstern ein Flag zu setzen und das bei verschiedenen MDI Fenster Klassen.

Grundlegend also so:
Delphi-Quellcode:
  for I := 0 to MainForm.MDIChildCount - 1 do begin
    Universalcast(MainForm.MDIChildren[I]).Flag := True;
  end;

himitsu 29. Nov 2009 08:07

Re: Typecast für MDI Childs ?
 
Delphi-Quellcode:
if MainForm.MDIChildren[I] is TChild_Memo then
object is type = prüfen
object as type = umwandeln mit prüfen (bei Fehler Exception)
type(oject) = hartes umwandeln ohne prüfen




universeller ... ja

TForm_MDI1, TForm_MDI2 usw. müssen dann einfach von einem Basistypen abgeleitet sein, dann haben alle dessen Eigegenschaften und du kannst auf diese universell zugreifen.

moelski 29. Nov 2009 08:12

Re: Typecast für MDI Childs ?
 
Moin !

Zitat:

TForm_MDI1, TForm_MDI2 usw. müssen dann einfach von einem Basistypen abgeleitet sein, dann haben alle dessen Eigegenschaften und du kannst auf diese universell zugreifen.
Das habe ich fast befürchtet :)

Nuja, danke jedenfalls für die Hinweise.

generic 29. Nov 2009 11:21

Re: Typecast für MDI Childs ?
 
Wenn du nicht ableiten willst, kannst du an jeder Form ein Interface implementieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:21 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz