Hallo,
ich muss als Studienprojekt eine Notenverwaltung in Delphi programmieren.
Ich habe eine MDI-Anwendung, und es gibt 4 verschiedene MDI-Child-Windows die darin vorkommen können.
Diese haben jedoch alle Ähnlichkeiten, nämlich z.B. hat jedes eine TDBGrid Komponente namens DBGrid1.
Ich krieg es jetzt aber ned hin von extern auf dieses grid zuzugreifen.
Bisher habe ich das immer etwas kompliziert gelöst:
var window: TForm
window := Form\_Main.ActiveMDIChild;
if (window is TForm\_soundso) then
begin
(window as TForm\_soundso).DBGrid1.....
end;
Und das für jeden Fenstertyp einmal, das gefällt mir aber ganz und gar nicht (wenn es auch funktioniert.
Nun dachte ich mir ich bau mir eine Basisklasse für all diese MDI-Children.
Ich habe diese Klasse folgendermassen definiert
type
TMDIChild = class(TForm)
private
public
DBGrid1: TDBGrid;
end;
Nun leite ich meine Child-Windows nicht mehr von TForm direkt ab, sondern von eben dieser TMDIChild.
Allerdings wenn ich nun folgendes probiere:
var window: TMDIChild
window := (Form\_Main.ActiveMDIChild as TMDIChild);
window.DBGrid1....
dann erhalte ich eine Access Violation. Wieso? Das muss doch irgendwie gehen, dass ich ned jedesmal ein if brauche sondern für alle MDIChilds den gleichen Aufruf verwenden kann.
Muss ich die Basisklasse vielleicht irgendwie als abstrakt definieren? Wenn ja wie geht das oder was hilft sonst.
Tausend Dank für Anregungen, habe vorher leider noch nie mit Delphi programmiert und entsprechend viel Ahnung, aber es wird langsam.
MfG Bruno