Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Toolbar in MDI Anwendung vom MDIChild abhängig machen


juergen - Di 21.01.03 13:06
Titel: Toolbar in MDI Anwendung vom MDIChild abhängig machen
Hallo,

wie kann ich die Toolbar in einer MDI Anwendung vom jeweils aktiven MDIChild abhängig machen ?

Mit dem MainMenu funktioniert es ja sehr gut, aber leider nicht mit der Toolbar.

Oder aber:

Kann ich aus der Toolbar in der MDI-Hauptform Ereignisse des MDIChild aufrufen ?

z.B. Beim Drücken des SAVE-Buttons in der Toolbbar auf dem Hauptformular möchte ich die Daten des aktuellen Child in ein Texfile speichern.

DANKE

juergen


CenBells - Di 21.01.03 17:08

hallo,
also die zweite möglichkeit ist ganz einfach.
im Hauptformular machst du im OnClick des Savebuttons

Quelltext
1:
2:
if not assigned(ZielMDIChild) then exit;
ZielMDIChild.meineSaveProcedure; //eventuell noch (Sender)


dazu muss natürlich im Hauptformular das MDIChild unter uses eingetragen sein.

Gruß
Ken


juergen - Mi 22.01.03 09:30

Hallo Ireniceus

wenn ich den Tip von Dir teste bekomme ich zur Laufzeit die Fehlermeldung:

Zugriffsverletzung bei Adresse ...


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
unit MAIN;
...

procedure TMainForm.ToolButton2Click(Sender: TObject);
begin
   if not assigned(mainform) then exit;
   form1.dateiSpeichern;
end;



unit Unit1;
...

 public
    { Public-Deklarationen }

     procedure dateiSpeichern;
...
procedure TForm1.dateiSpeichern;
begin
       if edit1.text <> ' ' then
       begin
       assignfile(f,'d:\test.txt');
       rewrite(f);
       s:=edit1.text;
       writeln(f,s);
       closefile(f);
       end else
       showmessage('Nichts da zu Speichern');
end;


Der Fehler tritt auf bei der IF-Abfrage!
Es kann anscheinend nicht auf Edit1 zugreifen.

Aber warum ???

DANKE

juergen


Klabautermann - Mi 22.01.03 11:27

Hallo,

das ist von den Borländern nicht vorgesehen.
In diesem Buch [http://www.amazon.de/exec/obidos/ASIN/3827317738/oitmann] findest du ein Beispiel wie man soetwas machen kann (zumindest war es in der Version zu Delphi 4 enthalden, ich denke es wird immernoch drin sein). Das ist aber komplizierter, (verwendet mehrere Panels und Interfaces). Daher kann ich es hier nicht Posten.
Vieleicht kannst du dir das Buch ja ausleihen.

Gruß
Klabautermann