[delphi] forumulieren invullen en uitprinten

Pagina: 1
Acties:
  • 166 views sinds 30-01-2008
  • Reageer

  • Zynth
  • Registratie: September 2001
  • Laatst online: 18:31
Ik zit met een ontwerpprobleem.
Ik wil een applicatie maken waar in je een formulier kan invullen. Het formulier bevat dingen als radiobuttons, textfields, net als in html. Vervolgens moet het formulier uitprintbaar zijn, en de ingevulde gegevens moeten worden opgeslagen zodat men op een later tijdstip verder kan gaan.

Mogelijkheid 1:
Een reeks gewone webpagina's waarop alles ingevuld kan worden. Javascript kan binnengekomen ?blaat=groen variabelen uitzoeken en ze in cookies opslaan. Niet erg elegant, en onhandig omdat een GET verzending maar maximaal een x aantal karakters ondersteund.

Mogelijkheid 2:
Volledig in delphi geprogrammeerd. Het formulier moet opgesplitst zijn in meerdere pagina's omdat
het ongeveer 8 beeldschermen lang is. Op het laatst genereerd deplhi een textfile of iets wat vervolgens afgedrukt kan worden. zo'nt textfile genereren kan veel werk kosten van mijn kant en moet door delphi naar de printer worden gestuurd. Tevens kost het maken van zo'n enorm invulformulier in delphi erg veel tijd; iig meer dan in html :)

Mogelijkheid 3:
Een combinatie: een delphi programma met daarin een html document in een browserobject ofzo. Dat document kan worden verzonden of geinterpreteerd door delphi die de variabelen eruit zoekt en in het register gooit. Het formulier kan vervolgens ook geprint worden. Dat lijkt me handig omdat dat visueel niet zoveel werk is.

Het probleem is dat ik delphi 7 heb en geen idee heb (google is er erg wazig over) hoe ik een "browser" kan opnemen in mijn programma. (Twebbrowser component of THTML component kan ik niet vinden).

[edit] Net na het posten toch in delphi het webbrowser SHDocVW gevonden. Maar geen manier om iets met die htmlcode te doen in delphi :| (Het formulier moet ingevuld worden en dan verzonden worden naar zichzelf ofzo, zodat ik de ingevulde waarden eruit kan filteren)

Welke mogelijkheid zou het handigst zijn qua uitvoering?

[ Voor 18% gewijzigd door Zynth op 23-05-2005 13:27 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Zynth schreef op maandag 23 mei 2005 @ 13:18:
Mogelijkheid 2:
Volledig in delphi geprogrammeerd. Het formulier moet opgesplitst zijn in meerdere pagina's omdat
het ongeveer 8 beeldschermen lang is. Op het laatst genereerd deplhi een textfile of iets wat vervolgens afgedrukt kan worden. zo'nt textfile genereren kan veel werk kosten van mijn kant en moet door delphi naar de printer worden gestuurd. Tevens kost het maken van zo'n enorm invulformulier in delphi erg veel tijd; iig meer dan in html :)
Het maken van een formulier in Delphi kost meer tijd dan in HTML? Sorry? :? Delphi: click & play. HTML: intikken (tenzij je Dreamweaver oid gebruikt). Ook het genereren van die tekstfile stelt weinig tot niks voor, je moet gewoon wat waarden uit je formulier halen, die wegschrijven en klaar is Kees. Ook afdrukken stelt niet veel voor. Ik zou dus gewoon voor optie 2 kiezen. :)
Het probleem is dat ik delphi 7 heb en geen idee heb (google is er erg wazig over) hoe ik een "browser" kan opnemen in mijn programma. (Twebbrowser component of THTML component kan ik niet vinden). Welke mogelijkheid zou het handigst zijn qua uitvoering?
Delphi 6 had een TWebBrowser-component, het lijkt me niet dat ze die er voor versie 7 uitgehaald hebben. Maar wat let je om te proberen zo'n component aan te maken? :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

D7 heeft gewoon een TWebbrowser.

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

TWebBrowser is weldegelijk een component in Delphi. Het is een wrapper om IE heen. Je mogelijkheid 3 kan je daar heel goed mee uitvoeren. Als je het een beetje uitgebreid maakt kan je runtime de schermen of de html opbouwen aan de hand van een structuurtje waarin je aangeeft wat de vragen zijn en van welk type ze bijvoorbeeld zijn.

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


Verwijderd

Optie 1 laat de webpagina alles doen en slaat de gegevens op in cookies (of post ze naar een webserver) De cookies lijjken mij niet handig: Leg maar eens aan een gebruiker uit waar zijn resultaten zijn terechtgekomen. Een webserver kan wel handig zijn. Dan kun je gelijk de resultaten centraal opslaan. Op zich weinig mis mee.

Optie 2 werkt net zo makkelijk. Drag en drop ontwerp van formulieren werkt prima bij Delphi en de controle op correcte invoer is zelfs een stuk beter dan bij HTML. Nadeel is waarschijnlijk dat het afdrukken wat meer werk is dan bij optie 1 (daar hoef je enkel de gebruiker de print knop van de browser in te laten drukken) Het maken van een textfile is hierbij natuurlijk zeer simpel.

Het nut van optie 3 zie ik niet echt. Delphi schermen maken is niet meer werk dan een HTML pagina maken (zeker niet als je ook nog over mogelijke incorrecte invoer gaat nadenken) en de communicatie tussen Delphi en een HTML pagina is niet echt heel simpel. Meestal komt het erop neer dat je een webserver in je Delphi applicatie inbouwt en die de get/post requests met wijzigingen laat afhandelen. Geen onoverkomelijk probleem maar ook niet de meest logische oplossing.

Dus zelf zou ik eerst eens bepalen of ik een webbased oplossing (optie 1) wil of een standalone applicatie. In dat geval lijkt mij Optie 2 het eenvoudigst

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Je kan bij optie 3 ook de applicatie de html pagina's laten generen. Daar hoef je geen webserver voor te hebben.

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


Verwijderd

LordLarry schreef op maandag 23 mei 2005 @ 15:17:
Je kan bij optie 3 ook de applicatie de html pagina's laten generen. Daar hoef je geen webserver voor te hebben.
Ging mij meer om de weg terug. De gewijzigde gegevens in de HTML pagina posten en weer in je delphi app verder verwerken. Enige opties zijn het Onbeforenavigate event of een eigen webserver inbouwen.
In dit geval werkt OnbeforeNaviigate2 en het handmatig genereren van de nieuwe pagina trouwens wel.

[ Voor 32% gewijzigd door Verwijderd op 23-05-2005 15:57 ]


  • Zynth
  • Registratie: September 2001
  • Laatst online: 18:31
in ieder geval al bedankt voor de ideeën :)
Het nadeel aan een tekstfile is dat het absoluut behalve spaties
en hoofdletters geen opmaak heeft, terwijl het wel prettig zou zijn
om een "mooi" uitprintbaar formuliertje af te leveren.

Wat wel een heel leuke optie zou zijn is het formulier in princiepe in delphi hebben, en dan in plaats van een tekstfile een html-outputpagina te genereren. Ik heb zoals in mijn vraag staat een webbrowser component gevonden die ik daarvoor kan gebruiken.

Oke, nog een vraag dan maar :)
Wat is de mooiste manier om meerdere opeenvolgende invulschermen te hebben?
Ze allemaal in een apart delphiform zetten? of op een of andere manier in een panel laden ofzo?
Die laatste lijkt me wel ok, maar hoe kan ik dat het beste aanpakken? :)

[ Voor 29% gewijzigd door Zynth op 23-05-2005 17:55 ]


  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 21:57

Delphi32

Heading for the gates of Eden

Het lijkt me dat je een standaard wizard interface prima kan gebruiken. Dus één scherm met knoppen volgende/vorige die steeds de inhoud van het scherm doen wisselen. Op te lossen met een TPageControl en TTabSheets (property TabVisible op False zetten) of uit de JVCL de TJvWizard-stuff pakken (nog niet mee gewerkt, ziet er wel cool uit).

  • Zynth
  • Registratie: September 2001
  • Laatst online: 18:31
aha. Ik had het idee om die ttabsheets te gebruiken en daar frames in te gooien.
Alleen heb ik dan geen idee hoe ik vanuit mijn form dingen uit dat frame aanroep, zoals edit1.Text:='groen'; :|

[ Voor 4% gewijzigd door Zynth op 24-05-2005 09:20 ]


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Heel simpel:
code:
1
Mijnframe.edit1.Text := 'groen';

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

Pagina: 1