Entwickler-Ecke

Open Source Units - TSCWizard - Eine Wizard Komponente


MrSaint - Mo 15.05.06 11:44
Titel: TSCWizard - Eine Wizard Komponente
Hallo!

Ich hatte gestern hier [http://www.delphi-forum.de/topic_Besteht+Interesse+an+einer+WizardKomponente_60055.html] mal nachgefragt, ob Interesse an solch einer Komponente besteht. Nun veröffentliche ich sie also!
Die Bedienung der Komponente ist nicht weiter kompliziert: Man packt die Wizard-Komponente auf die Form und kann dann per Doppelklick "Pages" hinzufügen. Diese Pages könnt ihr später mit Edits, Labels, etc. füllen. Falls ihr in eurem Wizard einen "komplexeren" Ablauf braucht, in dem es mehrere "rote Fäden" geben soll, kann man die einzelnen Pages mit der property Active abschalten. Der Runtime-Ablauf ist weitgehend automatisiert. Die Buttons für Weiter und Zurück wechseln standardmäßig zur nächsten aktiven Page. Außerdem könnt ihr hinter die Buttons eure eigenen Eventhandlers hängen: Einen für den Fertig-Button, einen für den Abbrechen-Button und jeweils zwei für Weiter und Zurück (einer jeweils für dem automatischen Seitenwechsel und einer nach dem automatischen Seitenwechsel).

Das ganze wurde geschrieben für D6Pro, ich weiß nicht, ob es auch in anderen Versionen läuft. Über Rückmeldung würde ich mich hier freuen. Vor allem bezweifle ich, dass es mit einer Delphi Version < 6 läuft, da es in der Version 6 ja die Umstellung von den Design-Units gab. Das könnte ja dann vielleicht jemand anpassen :D

TSCWizard benötigt keinerlei Fremdkomponenten. Alles was er braucht ist die Klasse TSCList, diese wird aber mitgeliefert. Es ist eine Listenklasse (Ähnlich TList, nur kann man hier Daten hinterlegen und man hat ein paar Events).
Hab das alles mehr oder minder ausgiebig getestet, Bugreports bitte zu mir ;)

Als kleine Dokumentation liegt noch ein PasDoc bei.

Installieren so wie immer: zuerst das Run-Package, dann das Design-Package.

Ach, noch was: das ganze steht unter der GPL, also darf die Komponente nicht von kommerziellen/ClosedSource Programmen verwendet werden! Näheres kann dann jeder in der License.txt nachlesen! Sollte jemand das ganze unter einer anderen Lizenz verwenden wollen, kann er sich ja mal bei mir melden.



MrSaint

Edit, 12.02.08: ZIP im Post angehängt. Der externe Downloadlink wird bald nicht mehr funktionieren...


alzaimar - Mo 15.05.06 14:26

Kleinigkeit vorweg:
Die Events 'OnClick' und 'OnClicking' sollten 'OnChanged' und 'OnChange' heißen. Oder 'OnChange' und 'OnChanging'. Schließlich ist es -genau genommen- kein Klick-Ereignis, sondern ein Ereignis, das VOR und NACH dem Wechseln (CHANGE) der Seite auftritt.

Weiterhin wäre es optimal, wenn man seine eigene TButton-Klasse angeben könnte. Eigentlich sollten alle TControl-Derivate (Enabled, Caption und OnClick) erlaubt sein.

Den Rest habe ich mir noch nicht en detail angeschaut, es sieht aber wirklich gut aus.


Coder - Mo 15.05.06 15:46

Habs in Delphi 2005 PE angetestet.
Nicht schlecht soweit. :zustimm:
Jedoch wird bei XPManifest das obere weiße Panel grau.
Sollte ParentColor auf false. :gruebel:


MrSaint - Do 18.05.06 09:44

Hallo!

Sorry, dass ich mich erst jetzt melde, hatte aber die letzten Tage nicht viel Zeit.. Hab jetzt ne neue Version hochgeladen (Link siehe oben), in der die Dinge geändert sind. Ich wundere mich zwar, warum man seine eigenen Buttons definieren will, aber okay ;) Mann kann übrigens nur TButtons definieren, keine TControls, weil versch. properties von TControl protected sind, die ich aber brauch. Ich fand es dann bisschen unschön, eine eigene Klasse zu machen, welche diese properties public macht und dann durch die Gegend zu casten.. Zur Not sollte das aber gehen... Wenn es also wirklich benötigt wird, kann ich das ja noch implementieren.


Schönen Tag noch :D



MrSaint


digi_c - Do 18.05.06 13:29

Super eine OSS Komponente, danke! Ich dachte immer, dass es im Formularexperten die Möglichkeit gab Wizzards zu machen, hab mich wohl geeirt...


alzaimar - Do 18.05.06 13:33

Hi Saint,

Ich verwende Buttons von Developer Express, die haben ein anderes Layout. Leider sind sie nicht von TButton abgeleitet. Ich finde die Komponente aber wirklich absolut geil. Wenn ich mal Zeit habe, kann ich das ja mal versuchen, einzubauen. Falls ich es schaffen sollte, melde ich mich.


MrSaint - Do 18.05.06 14:04

user profile icondigi_c hat folgendes geschrieben:
Super eine OSS Komponente, danke!


Bitte ;)


user profile iconalzaimar hat folgendes geschrieben:
Ich verwende Buttons von Developer Express, die haben ein anderes Layout. Leider sind sie nicht von TButton abgeleitet. Ich finde die Komponente aber wirklich absolut geil. Wenn ich mal Zeit habe, kann ich das ja mal versuchen, einzubauen. Falls ich es schaffen sollte, melde ich mich.


Nun extra für dich: Neue Version (Link siehe wieder oben). Nun kannst du jegliches TControl als Buttons zuweisen :D

Außerdem hab ich noch einen kleinen Bug in der Button-Zuweisung behoben: der Weiter-Button hat immer die Standard-Caption bei einer Zuweisung erhalten :oops:




MrSaint


MrSaint - Mo 22.05.06 19:53

So, ich hab einen kleinen Bug in der Methode PagesClearing von TSCWizard gefunden. Gab eine Zugriffsverletzung. Die neue Version ist wieder unter obigem Link zu finden.


MrSaint


MrSaint - Fr 26.05.06 00:07

So, wieder eine neue Version online. Hab jetzt mal etwas intensiver mit der Kompo praktisch gearbeitet und mir ist dabei aufgefallen, dass die TabStops nicht gestimmt haben. Jetzt passt das :) Außerdem wurde hinzugefügt, dass bei <ENTER> auf die nächste Seite gewechselt bzw. der Wizard beendet wird und bei <ESC> geschlossen wird (jeweils Klick auf Weiter, Fertig bzw. Abbrechen-Button).
Das alles hat nun zur Folge, dass man nun doch keine beliebigen TControls als Buttons definieren kann (weil TControl hat kein Taborder/TabStop und kein OnKeyPress), sondern "nur" TWinControls. Aber das sollte auch reichen ;)
Link wieder der gleiche wie ganz oben.

Wie funktioniert die Komponente denn jetzt mit D7 und aufwärts?
@Coder: Hat sie sich problemlos in D2005PE installieren lassen?




MrSaint


Coder - Fr 26.05.06 00:35

user profile iconMrSaint hat folgendes geschrieben:
@Coder: Hat sie sich problemlos in D2005PE installieren lassen?

Ja es funktioniert.
Wenn man die dpks in Delphi läd muss man angeben das es Win32 ist und es speichern.
Dann installieren und es geht.

Wenn man XPStyle benutz wird der Header aber Grau anstatt Weis.
:wave:


MrSaint - Fr 26.05.06 00:45

Okay, danke :)

user profile iconCoder hat folgendes geschrieben:
Wenn man XPStyle benutz wird der Header aber Grau anstatt Weis.
:wave:



Immer noch? Hattest mir den Tipp mit ParentColor = false gegeben, hab ich gemacht... Bei mir funktioniert es toll! Ich benutz ja aber auch "nur" D6 mit Manifest und TThemeManager..
Vielleicht kannst du das ja mal zurückverfolgen und beseitigen? Oder irgendein anderer? Hab D2005PE grad net drauf... Wenn ich Zeit hab, mach ichs mir die nächsten Tage vielleicht mal wieder drauf dann schau ich selber... Hab aber so ein bisschen Angst vor dem "Bug-Delphi" ;)



MrSaint


Clemens L. - Sa 27.05.06 18:34

Echt gutes Ding, bisher noch keine Fehler in Delphi 6 Enterprise gefunden!


MrSaint - Sa 27.05.06 19:50

user profile iconhackerTreff hat folgendes geschrieben:
Echt gutes Ding, bisher noch keine Fehler in Delphi 6 Enterprise gefunden!

Danke :D

So, eine weitere neue Version. Jetzt wird auch das richtige WinControl fokussiert, wenn man die Seite wechselt. Wurde zwar bisher schon gemacht, es wurden aber auch WinControls "selektiert", bei denen TabStop = false war. Es wird jetzt das erste WinControl gesucht, das einen möglichst kleinen TabOrder-Wert hat, alles rekursiv in die Tiefe (es funktioniert also auch, wenn man z.B. Controls auf einem Panel auf der WizardPage liegen hat) :)
Link wieder ganz oben.



MrSaint


MrSaint - Do 22.06.06 13:30

So, nach längerer Zeit mal wieder eine neue Version!

Es gab einen Bug, dass der Weiter- bzw. Fertig-Button manchmal beim ersten Klick nicht reagiert hat. Dies ist nun beseitigt. Download Link siehe wieder oben.



Schönen Tag noch :D

MrSaint


MrSaint - So 25.06.06 23:38

Guten abend :D

user profile iconPrinz_Inside hat mich gerade nochmal angeschrieben wegen dem Bug mit dem oberen Panel und der falschen Farbe. Scheint evtl. an TXPManifest zu liegen. Habe leider gerade nur ein D6 da, in dem die Komponente noch nicht enthalten ist :( Deswegen würd ich mal euch schnell bitten das auszutesten. Einfach TXPManifest auf die Form, einen Wizard dynamisch erzeugen und per Breakpoint schauen, wo sich denn die Farbe verstellt und wie man das evtl. abstellen kann. Anhaltspunkt ist TSCWizard.Create, wo das pnlHeader erzeugt wird und genau um das geht es...


Ich bedank mich shconmal :D


MrSaint


Jakob Schöttl - So 13.08.06 12:23

Super! Was aber noch unbedingt dazu gehört finde ich, ist, dass die Abbruch-Schaltfläche die Eigenschaft Cancel := True und die Fertigstellen-Schaltfläche bzw. die Weiter-Schaltfläche die Eigenschaft Default := True haben.

Wäre toll, wenn du das noch ändern könntest, dürfte ja kein Problem sein!

Aber sonst sehr gut...


MrSaint - So 20.08.06 11:05

Hallo!


So, ich habe jetzt Default und Cancel für die Buttons gesetzt :) Neue Version kann wieder oben heruntergeladen werden.
Leider hat sich immer noch niemand bereit erklärt, nach dem Problem mit dem graunen pnlHeader zu schauen :(



MrSaint


MrSaint - Di 24.10.06 13:55

Habe soeben eine neue Version hochgeladen. Bisher ging das mit dem Bild noch nicht. Jetzt kann man ein Bild hinzufügen, welches dann in der rechten, oberen Ecke des Wizards angezeigt wird. Bisher konnte man es hinzufügen, es wurde aber nicht korrekt angezeigt. Komisch dass das noch keinem aufgefallen ist :o
Download wieder oben :D


MrSaint


Martin1966 - Di 24.10.06 16:55

Hallo MrSaint!

Hättest Du vielleicht lust einen Screenshot deiner Komponente anzufertigen und diesen deinem ersten Beitrag anzuhängen? Dann können wir User uns einen besseren ersten Eindruck verschaffen? ;-)

Dank dir! Lg Martin


Delete - Fr 02.03.07 16:30

Kannst du noch die Möglichkeit einbauen, dass der Wizard unter Vista den Aero Wizard Style nutzt. Ich finde den schick.


MrSaint - Fr 02.03.07 16:51

Puh, da ich kein Vista habe und keine Ahnung habe wie der aussehen soll oder was der können muss, kann ich das leider momentan nicht erledigen...


MrSaint


Delete - Fr 02.03.07 22:35

Das ist der AeroWizard. Ist eigentlich nur ein Flag, dass anders ist als beim Wizard97.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/UxGuide/UXGuide/Resources/WhatsNewInVista/Wizards.asp

user defined image


Jochen W. - Di 24.04.07 15:16

Schöne Komponente!! :zustimm:

Ein Problem habe ich gefunden. Wenn ich über den mitgelieferten Property Editor (für das Property Pages) Seiten hinzufüge und entferne funktioniert es perfekt. Klicke ich aber auf dem Formular auf eine hinzugefügt Seite (TSCWizardPage) und lösche sie mit der Taste DEL so kommt es zu Fehlern (Abtrakten Fehlern und Access Vioaltion).

Bye, Jochen!