[delphi] Iets heel moeilijks met property editors

Pagina: 1
Acties:

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 22-06 10:32

_Thanatos_

Ja, en kaal

Topicstarter
Ik ben in Delphi 7 bezig met een component dat een wizard moet gaan tonen. Net zo'n mooie wizard als die je her en der in win2k/xp enzo tegenkomt (een Wizard97 compliant ding dus).

Nu wil ik de hele wizard in een component gieten. Het form van de wizard is geen probleem. Een form in een component kan best, zolang het niet door de programmeur veranderd hoeft te worden. Maar de "stappen" aan de binnenkant van de wizard dus zegmaar, dat wil ik met een frame oplossen.

En nu komt het: in het component wilde ik dus een property "Frame" ofzo maken, die de designer van een frame opent als je erop dubbelklikt. Zo is het component volledig herbruikbaar in een andere applicatie door copy&paste, en de applicatie wordt niet 'vervuild' met 4587 frames voor alle wizards die er wel niet in zitten.

Is het te doen op de manier die ik uitleg? Of is er een betere weg om zoiets bereiken?

日本!🎌


  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06-2025

Varienaja

Wie dit leest is gek.

Het geval wil dat ik juist met zo'n wizard bezig ben. Het probleem is inderdaad hoe je de specifieke tabbladen/panels op de 'standaard' wizard-interface zet.

Op dit moment zet ik alles op tabbladen (met tabvisible=false). De volgende- en vorige-knopjes laten je door die tabbladen springen. Omdat ik events heb gezet op allerlei invoer-veldjes lijkt het mij vreselijk moeilijk om dit generiek te maken, zodat het in een property-editor past.

Staan er op Torry.net geen wizard-componenten trouwens?

Siditamentis astuentis pactum.


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

KWizard is redelijk goed en gratis. http://members.rogers.com/wyu66/index.htm

We adore chaos because we like to restore order - M.C. Escher


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 22-06 10:32

_Thanatos_

Ja, en kaal

Topicstarter
laatste versie van KWizard is van 18 feb 2002... Ik heb liever dan iets waaraan actief ontwikkeld wordt.

btw, Varienaja, ik heb een soort TNotebook gemaakt, maar dan in een modern jasje (dus met een TCollection voor de pages). Alleen een inherited form waarbij het component op de ancestor staat, zorgt ervoor dat ik de laatste page niet mag verwijderen...

[ Voor 56% gewijzigd door _Thanatos_ op 10-11-2003 16:47 ]

日本!🎌


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 14:22

Tomatoman

Fulltime prutser

Voor iedereen die het wiel opnieuw wil gaan uitvinden:
  • Er zijn legio wizard-componenten voor Delphi verkrijgbaar. Deze zijn geen van alle gebaseerd op de (wizard97) wizardfuncties zoals ze in de Win32 API aanwezig zijn.
  • Alle voor Delphi beschikbare wizards zijn opgebouwd uit VCL-componenten die zo goed mogelijk het gedrag nabootsen van een met native API calls geschreven wizard. Het voordeel daarvan is dat het beter is dan niets. Het nadeel daarvan is dat het gedrag en het uiterlijk van de wizard nooit helemaal overeenstemmen met Windows en dat de compatibiliteit met nieuwe Windowsversies niet gewaarborgd is.
  • Daarom heb ik zelf mijn eigen wizardcomponent gebouwd op basis van de standaard wizardfuncties. Naar mijn ervaring kost het heel wat werk om het allemaal vlekkeloos werkend te krijgen. Een hoop problemen kun je alleen oplossen met veel trial and error, want de documentatie van Microsoft is nogal magertjes. Het kan dus allemaal wel, maar het kost erg veel tijd en moeite (en kunde >:)).

Een goede grap mag vrienden kosten.


Verwijderd

tomatoman schreef op 10 november 2003 @ 18:02:
• Daarom heb ik zelf mijn eigen wizardcomponent gebouwd op basis van de standaard wizardfuncties.
kuch - linkje - kuch :9

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 14:22

Tomatoman

Fulltime prutser

Dan moet ik eerst met de opdrachtgever overleggen :/

Een goede grap mag vrienden kosten.


Verwijderd

tomatoman schreef op 10 november 2003 @ 21:32:
[...]
Dan moet ik eerst met de opdrachtgever overleggen :/
Ik ben eigenlijk ook wel benieuwd welke standaard API's je hiervoor gebruikt.

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 22-06 10:32

_Thanatos_

Ja, en kaal

Topicstarter
Maar wat ik in mijn startpost vroeg - een frame in een property - kan dat nou of niet? :P

日本!🎌


Verwijderd

_Thanatos_ schreef op 10 november 2003 @ 21:56:
Maar wat ik in mijn startpost vroeg - een frame in een property - kan dat nou of niet? :P
Wat bedoel je precies met "die stappen" en frame gebruiken?
Wil je een soort eigen designer form/frame laten opkomen waarin de
ontwikkelaar de verschillende stappen van de wizard kan ontwerpen?

Zoja, dan hoef je toch niet perse een frame te gebruiken?
Ik stel het me zo voor, een wizard gaat over een "zooi" instellingen over het algemeen. Dus een ontwikkelaar zou deze moeten kunnen definieeren (naam, label, hint, omschrijving,type [editbox, checkbox, radiobox, memo]). Dit zou je in een TCollection kunnen doen. Vervolgens maak je een property editor waarbij per page gekozen kan worden uit deze gegevens (eventueel nog afhankelijkheden e.d.). Nu moet ik eerlijk zeggen dat ik zelf nog nooit een property editor geschreven heb, maar er zijn genoeg voorbeelden van te vinden.

Waarom moet het perse een frame zijn?

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 22-06 10:32

_Thanatos_

Ja, en kaal

Topicstarter
Het moet de standaard designer van een frame zijn, daarom heb ik ervoor gekozen om de stappen in een frame te gieten. Ik wil juist de standaard designer, omdat die het flexibelst is (lees: kun je alles gewoon mee).

Je moet je dus voorstellen een property in de object inspector, daar dubbelklik je op, een designer van een frame komt naar voren en die kun je dan editten. Ik stel me dan voor dat de componenten van die frame en de frame zelf in de DFM komen van het form waar het component met die frame-property in staat, evenals de event handlers.

日本!🎌


Verwijderd

hmz, dan moet je dus een "frame editor" bouwen en die koppelen aan de frames van je wizard. dus dan krijg je een TWizardFrame en een TWizardFrameEditor.

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 22-06 10:32

_Thanatos_

Ja, en kaal

Topicstarter
Dat is niet het antwoord waar ik op hoopte :)

Ik hoopte dus de designer te kunnen gebruiken die al in delphi zit...

日本!🎌


Verwijderd

:) Zo werkt dat niet gelovens mij. Maar ook hier zijn al componenten voor oa:
http://www.dream-com.com/designer.html
Pagina: 1