AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dynamischen Wizard realisieren

Ein Thema von MatthiasR · begonnen am 22. Apr 2005 · letzter Beitrag vom 25. Apr 2005
 
MatthiasR

Registriert seit: 21. Apr 2005
193 Beiträge
 
#1

Dynamischen Wizard realisieren

  Alt 22. Apr 2005, 08:22
Ich soll für meine Ausbildungsfirma einen Konfigurationswizard für unser Prozess-Leitsystem erstellen. Nun stehe ich vor folgendem Problem:

Der Wizard muss dynamisch mit Inhalt bestückt werden können. Das heißt, dass sowohl die Anzahl der Wizard-Seiten variabel sein soll (was wohl eher unproblematisch ist), als auch deren Inhalt. Es soll also ein Hauptprogramm geben, das letztendlich nur eine Container-Funktion ausübt, und die eigentliche Funktionalität wird in Plugins (DLLs, Packages) ausgelagert.

Als eine der besten Möglichkeiten, einen Wizard zu realisieren, wird ja oft die PageControl in Verbindung mit TabSheets genannt. Also habe ich auch schon mich daran versucht, auf dem Hauptformular nur eine leere PageControl zu platzieren und die TabSheets dann in eine DLL auszulagern. Jedoch scheiterte es daran, das TabSheet anschließend in die PageControl einzubinden, so dass es dort auch sichtbar wird. Ich hab der von der DLL veröffentlichten "CreateTabSheet"-Funktion das Handle der PageControl übergeben, sodass dort ein neues TabSheet mit der PageControl aus dem Hauptformular als Parent kreiert werden kann. Nur reicht das ja noch nicht, um das TabSheet auch dort sichtbar zu machen. Und daran hängts momentan irgendwie.
Was ich allerdings auch noch nicht weiß ist, wie kann man in der DLL ein reines TabSheet ohne Formular und PageControl erzeugen kann und dieses dann auch mit Komponenten wie Buttons, Labels etc. bestücken??? Ohne Formular kann man sich doch auch gar nicht so schön eine Oberfläche "zusammenklicken" oder?

Ansatz Nummer 2 waren die Packages, in die ich mich anhand von einem Beispiel aus dem Netz einarbeiten wollte. Das Progrämmchen sollte schlicht und einfach per Buttonklick ein andres Formular, das in einem Package ausgelagert ist, modal öffnen. Doch obwohl ich mich strikt an die Anleitung bei der Erstellung des Progrämmchens gehalten habe funktioniert es nicht. Das Problem, an dem es wohl hängt: die Klasse TForm2 wird in der Unit2 (die im Package) im initialization-Teil zwar registriert, jedoch SOFORT wieder unregistriert im finalization-Teil. Initialization und finalization laufen also hintereinander weg durch, was doch eigentlich nicht der fall sein sollte, oder?

Hier das Hauptformular:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
  PackageModule: HModule;
  AClass: TPersistentClass;
begin
  PackageModule := LoadPackage('Package1.bpl');
  if PackageModule <> 0 then
  begin
    AClass := GetClass('TForm2');
      if AClass <> nil then
      with TComponentClass(AClass).Create(Application)
        as TCustomForm do
      begin
        ShowModal;
        Free;
      end;
    UnloadPackage(PackageModule);
  end;
end;

end.
Hier das Formular 2 aus dem Package:
Delphi-Quellcode:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
  TForm2 = class(TForm)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.DFM}

initialization

RegisterClass(TForm2);

finalization

UnRegisterClass(TForm2);

end.
In der Jedi-VCL gibt es wohl bereits eine Wizard-Komponente, allerdings kommt deren Einsatz für uns wohl nicht in Frage (gibt es da irgendwelche Lizenz-technischen Gründe?). Wobei ich auch nicht weiß, ob die überhaupt so einen dynamischen Aufbau unterstützen würde.

Was habt ihr mir für Ratschläge? Wie kann ich das Konzept "Hauptprogramm mit Container" - "Plugins für die Wizard-Seiten" am besten realisieren?

Danke schonmal für die Hilfe!
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz