Zitat von
CG2003:
Ja, das wäre eine sehr gute Möglichkeit/Idee. Nur (sorry für die peinliche Frage), wie erzeuge ich diese dynamisch zur Laufzeit?
Bei einem Formular ist's relativ einfach:
1. Nimm es über die Projektoptionen aus der automatischen Formularerstellung heraus.
2. Ich mache es ganz gerne so, dass ich es erzeuge wenn ich es das erste Mal brauche. Beispiel:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
if not Assigned(Form17)
then
try
Form17 := TForm17.Create(Application);
except
on E:
Exception do
begin
MessageDlg('
... die Laufzeitkomponente für den Ausdruck steht nicht zur Verfügung.' + E.
Message);
exit;
end;
end;
Form17.ShowModal;
end;
Noch `schicker´ wird's, wenn du in der
Unit für das Formular eine Prozedur dafür schreibst, z.B. "DruckFormularAnzeigen" und dort dann diesen Code hineinschreibst. Dann rufst du statt "Form17.ShowModal" einfach immer nur "DruckFormularAnzeigen" auf.
Bei einer Komponente noch einfacher:
1. Kopiere die Deklaration aus der Klasse in den public Teil.
FDruckKompo1: TDruckKomponente;
2. Lösche die Komponente vom Formular.
3. Erzeuge sie in Form.OnCreate selbst:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
try
FDruckKompo1 := TDruckKomponente.Create(Self);
FDruckKompo1.Parent := Self;
// falls nötig
FDruckKompo1.Eigenschaft1 := false;
// alle Eigenschaften setzen
except
on E:
Exception do
MessageDlg('
... die Laufzeitkomponente für den Ausdruck steht nicht zur Verfügung.' + E.
Message);
end;
// Menüeinträge steuern
FDrucken1.Enabled := Assigned(FDruckKompo1);
end;
Waren jetzt alles ungetestete Beispiele.
// Edit: Noch mal roten Kasten ignoriert.