Newcgi-pakketbron

Nuttige componenten voor CGI-toepassingen. Moet u dynamische vormelementen in Delphi genereren? Wilt u ...
Download nu

Newcgi-pakketbron Rangschikking & Samenvatting

Advertentie

  • Rating:
  • Vergunning:
  • Shareware
  • Naam uitgever:
  • 21417
  • Besturingssystemen:
  • Windows All
  • Bestandsgrootte:
  • Evaluation

Newcgi-pakketbron Tags


Newcgi-pakketbron Beschrijving

Nuttig Componenten voor CGI-toepassingen Gabriel Corneanu Beschrijving Dit is een pakket voor het ontwikkelen van CGI-toepassingen met behulp van Delphi (C ++ Builder). Een groot verschil (ik zou het voordeel noemen) tussen deze bestanddelen en andere pakketten is dat ze worden gebruikt in uitbreiding van het standaard Borland componenten voor CGI-toepassingen. Moet u vormelementen in Delphi te genereren? Wil je leven op te nemen afbeeldingen in uw pagina's? Probeer dit! Er zijn een aantal verschillende groepen van componenten, beschreven in dit document. producenten Custom (FLV Converter) Deze groep heeft een basiscomponent, HTMLProducer. Het is een directe afstammeling van PageProducer, met enkele verbeteringen. Voor iedere custom tag (AMR to MP3 Converter) gevonden in de HTML-broncode, probeert een producent die vinden handgrepen het label. Dit betekent dat de programmeur niet hoeft te schrijven code voor OnHTMLTag evenement. De werkelijke producenten zijn allen afstammelingen van een voorouder, HTMLBase (abstract), die ook een CustomProducer. Ze zijn gekoppeld aan de HTMLProducer en één custom tag (op naam). De speciale eigenschap editor voorzien helpt u om te kiezen een aangepaste tag tijdens de ontwerpfase. Tijdens de uitvoering, zal de HTML-producent vervangen douanemarkering met de inhoud van de eerste producent die voor dat label. De gemeenschappelijke eigenschappen zijn: HTMLProducer: is de link naar de bovenliggende HTMLProducer. HTMLCustomTag: de naam van de aangepaste tag te hanteren. HTMLCustomParams: extra parameters voor de gegenereerde tag (alleen voor HTML vormen componenten) De producenten zijn: HTMLStatic: het is een eenvoudige producent, die een tekst direct in omvat de HTML-resultaat. Er is één eigenschap, HTMLValue (string), wat neerkomt het resultaat. HTMLHidden: het is een producent die een verborgen veld genereert, moet worden opgenomen in een vorm. De eigenschappen zijn HTMLName en HTMLValue, die de HTML definiëren naam en de waarde voor het verborgen veld. HTMLCombo: is een producent die een SELECT-veld genereert voor een HTML-formulier (de naam weerspiegelt de Delphi-equivalent). Het genereert opties van een dataset. Speciale eigenschappen: Dataset: de dataset te lezen uit. Als het niet actief is, zal het proberen te openen tijdens de uitvoering. HTMLValueFields, HTMLVisibleFields: uitdrukking voor het genereren van de waarde van HTML Option-tag, respectievelijk de tekst van het label. Zie HTMLFields voor details. HTMLSelection: string voor het bepalen van de eerste selectie (indien ingesteld). OneEmpty: genereert een lege optie (bij begin). OnGetChecked: evenement voor betere controle van de eerste selectie. HTMLDBField: een eenvoudige producent als HTMLStatic, maar het genereert het resultaat van dataset en Field properties. Het wikkelt ook het resultaat met een lettertype tag, met parameters van het pand HTMLTextAttributes. HTMLImage: het genereert verwijzing naar een afbeelding in het document. Hier is het alleen een korte beschrijving; zie afbeeldingen voor meer informatie. HTMLName, HTMLValue: hetzelfde als hierboven. Ze worden zelden gebruikt met beelden in HTML. HTMLHeight, HTMLWidth: de grootte van het beeld. Als 0, zijn ze niet gegenereerd in de output. OnGetImageAction: het evenement voor het leveren van de afbeelding. Het is een standaard THTTPMethodEvent. U kunt de parameters gebruiken om de context te krijgen, en terug te keren het juiste beeld. Dataset: de dataset te link naar. Indien ingesteld, is het mogelijk om InternalHandling gebruiken (Zie afbeeldingen). HTMLImageType: geef de gegenereerde tag; iimage (standaard): de resultaat zal IMG tag, en iInputImage betekent dat het resultaat zal worden ingevoerd tag met type IMAGE (te gebruiken in HTML-formulieren). Zie de gegenereerde HTML. HTMLImageTable: geef de tabel in de database met de afbeelding (Zie afbeeldingen). HTMLKeyFields: velden die worden gebruikt om de parameters voor het bron te genereren. Meestal is het een sleutel het identificeren van een record in de bovenstaande tabel. Zie de gegenereerde HTML. HTMLImageField: geef het veld in de bovenstaande tabel met de image (zie afbeeldingen). UseInternalHandling: de magische eigenschap. Als u wilt het te krijgen afbeelding van een dataset, en stel de juiste waarden voor de laatste 3 eigenschappen, dan kunt u proberen te laten de component leveren het beeld! Zie afbeeldingen. HTMLSrcParams: extra parameters die u wilt toevoegen aan het beeld SRC. Als met behulp van interne afhandeling, wordt het genegeerd. Aangepaste velden Het doel van deze groep is om te helpen het genereren van HTML-formulier elementen voor gebruik met een DataSetTableProducer. Dit is een zeer nuttige component, maar helaas was het op geen enkele manier (tot nu toe) op te nemen (bijvoorbeeld) een ander kolom voor het maken van een selectie (cheque of radio), of een invoerveld voor elke rij (Nu zelfs een Beeld!). En ik kon niet leven zonder. De oplossing is om nep velden toe te voegen in de dataset en laat ze het genereren van de rechts HTML! U kunt genieten van de editor voorzien van Delphi, en een voorbeeld van het resultaat (Niet van toepassing op afbeeldingen)! Dus open de velden editor voor een tafel en klik op nieuw veld. Kies een HTML ... veld, en voeg een kolom aan de TableProducer gekoppeld om dit gebied. Waarschuwing: geen van de klassieke (erfelijke) eigenschappen heeft effect op deze gebieden. Ze zijn berekende velden. Gebruik ze niet voor andere doeleinden (zoals normale editing). Het merendeel van de velden hebben 2 base eigenschappen: HTMLNameFields: Fields uitdrukking voor het genereren van de naam van de HTML tag.HTMLValueFields: Fields uitdrukking voor het genereren van de waarde van de HTML label. Voor HTMLMemo het is de tekst van het label; voor htmlText het is het resultaat tekst. Field lijst: HTMLCheckBoxField: genereert een HTML-controle-element. Het heeft een aantal extra eigenschappen: HTMLCheckField: Fields eigenschap die dicteert de gecontroleerde-status. Moeten evalueren boolean. OnGetHTMLChecked: evenement voor meer controle over de gecontroleerde-status. Het is genoemd naar de evaluatie van het vorige pand. HTMLRadioFields: genereert een HTML-radio-element. Het heeft dezelfde eigenschappen als CheckBoxField. Het heeft meestal een vaste uitdrukking als HTMLNameFields, om als één groep. Natuurlijk, het is uw beslissing. HTMLEditField: genereert een HTML bewerken element (type tekst). U kunt opgeven HTMLMaxChar en HTMLSize eigenschappen. HTMLMemoFieds: genereert een HTML-memo (textarea tag). Het heeft ook een aantal specifieke eigenschappen: HTMLLines, HTMLSize, HTMLWrapKind. Zij rechtstreeks gereflecteerd in de HTML-resultaat. HtmlText: genereert een tekst (zoals HTMLDbField). Het doel is om een wrap bestaande veld met enkele FONT eigenschappen, heks zijn niet beschikbaar via de kolommen van de TableProducer. HTMLImageField: genereert verwijzing naar een afbeelding in het HTML-document. zijn gedrag is vergelijkbaar met de HTMLImage component, maar het is de bedoeling om het beeld te tonen opgenomen in een gegevensbank veld (zie de voorbeelden) in het kader van een TableProducer. Het verschil is dat je andere velden kunt gebruiken voor het genereren van naam en waarde (HTMLNameFields, HTMLValueFields). HTMLMultiPage Eén onderdeel dat helpen presenteren de inhoud van de dataset (mogelijke zoekresultaten) in een multi page manier (elke pagina kan een variabel aantal hebben rijen / kolommen). Het is ook een aangepaste producent in het begin beschreven, zodat je kunt het opnemen in een andere pagina gegenereerd door een HTMLProducer. specifieke eigenschappen en evenementen zijn: DataSet: de dataset door te gaan. HTMLCell: een producent die HTML genereert. U kunt een andere HTMLProducer gebruiken, maar verzorgen niet dezelfde als de ouder (kan een lus veroorzaken). HTMLContentBefore, HTMLContentAfter: andere producenten bij het op te nemen het begin (of het einde) van de inhoud. HTMLRowsAttributes, HTMLTableAttributes: sommige attributen voor de gegenereerde HTML-tabel. AantalKolommen, numLines: aantal kolommen en lijnen (rijen) van de HTML-tabel. NumLinks: aantal links naar te genereren aan de onderkant van de inhoud. PageNumVar: naam van de parameter wordt gebruikt voor het paginanummer. Het is ook gebruikt als de tekst van de links. OnGetNumRec: event voor het krijgen van het aantal resultaten. Bij gebruik van een tabel, u kunt RecordCount te gebruiken; voor een query, moet u mogelijk een andere met gebruik iets als "select count (*) van ... waar ...". OnPreparePage: evenement voor de voorbereiding van de pagina-inhoud. U kunt het gebruiken voor gaan naar de juiste record in de dataset. OnPrepareCell: evenement voor de voorbereiding van de inhoud van de cel. U kunt een aantal te nemen extra acties hier. Let op: voor elke cel, wordt de volgende methode van de dataset genoemd. Dus jij niet hoeft te doen in de OnPrepareCell evenement. Deze component wordt niet gefinaliseerd (maar dat betekent niet dat de anderen zijn prefect, maar hier is ruimte voor meer werk). Alle ideeën / suggesties zijn welkom. HTMLFields Dit is een beschrijving van het formaat gebruikt door sommige eigenschappen (HTMLValueFields, HTMLVisibleFields, HTMLNameFields ...). Meestal zijn de parameters voor de tags zijn combinaties afhankelijk van enige logica. De regel is simpel: elke tekst omgeven door "%" wordt beschouwd als de naam van een veld en vervangen door de waarde van dit veld (in de huidige dataset). U kunt elke combinatie te gebruiken, zoals "N_% ID1% _% ID2%". Als er geen "%" wordt gevonden, de output is constant. Two "%%" is vervangen door een "%". Voorbeeld: als je een combo met een aantal personen, mag u wil een aantal id gebruiken als de waarde (de sleutel van een tabel), en als tekst een combinatie van voornaam en achternaam, zoals JOHN DOE . Hiervoor kunt u HTMLLAMefields = "% ID%" en HTMLVALUEFIDERS = "% F_NAME%% L_NAME%" instellen. Voor radio-elementen: ze zijn gegroepeerd door de naam, dus meestal is het een constante, Maar de waarde is een sleutel die de rij identificeert. Voor selectievakjes elementen, meestal het is het tegenovergestelde: de naam hangt af van een sleutel en de waarde is een constante zoals "AAN" of "TRUE". Voor HTMLKeyFields is dit niet van toepassing: het verwacht alleen een lijst te vinden bestaande velden. Het is bedoeld voor intern gebruik (zie afbeeldingen). Hetzelfde voor Htmlimagefield; Het wil alleen een naam van een veld. Afbeeldingen Hier probeer ik te beschrijven wat er aan de hand is (live) afbeeldingen. Zoals u weet, maakt een afbeelding geen deel uit van het HTML-document; het is maar een tag met een link naar de werkelijke beelden. Laten we veronderstellen dat je afbeeldingen hebt een database en wil ze in HTML uitvoeren. U kunt de afbeelding opslaan in een bestand, en genereer een link eraan. Buiten een goed afvalverzamelmechanisme voor Oude bestanden verwijderen, dit is niet erg leuk. Het is hetzelfde probleem in JSP, of ADDER. De webserveromgeving moet wat hulp bieden. Ik wilde geen andere opslag gebruiken voor de bestanden. En ik Een andere oplossing gebruikt: om een link te genereren naar dezelfde CGI-applicatie. Natuurlijk moet de volgende oproep de werkelijke afbeelding retourneren, niet de standaardinhoud. Als u zorgvuldig bent, kunt u het in Delphi doen. Maar ik heb al wat gebouwd ondersteuning voor het, dus geef het een kans. Hoe het werkt: voor elke afbeelding wordt het een link naar dezelfde CGI gegenereerd, maar een andere pathinfo. Maak je geen zorgen; alles gebeurt intern, en alleen bij runtime. U hoeft alleen code in het Ongetimageaction-evenement te schrijven. Voor deze, U kunt sommige helperfuncties gebruiken (gedeclareerd in HTMLCOMMON): Procedure SetResponse (respons: twebresponse, vorm: tcustomform); overbelasting; Procedure SetResponse (respons: Twebresponse, BMP: tbitmap); overbelasting; Procedure SetResponse (respons: Twebresponse, CTRL: TWINCONTROL); overbelasting; Procedure SetResponse (Respons: Twebresponse, FLD: Tield); overbelasting; Allemaal bouwen ze een afbeelding uit een vorm, van een bitmap, van een WINCONTROL of vanuit een veld (het moet een BLOB-veld zijn en een geldige afbeelding bevatten) en geef het als reactie. Zoals u ook weet, het gebruikelijke formaat voor HTML-afbeeldingen is JPEG, dus alle afbeeldingen worden verzonden in JPEG-indeling (dit komt omdat Delphi heeft ondersteuning voor het). Maar als het veld een geldig GIF-afbeelding (of een JPEG-afbeelding) bevat, het wordt onaangeroerd. Ik ben alleen op zoek naar enkele headerwaarden, dus alsjeblieft elke fout. Als u nu een eenvoudige HTML-pagina hebt, is het OK. Maar als jij Dynamische pagina's hebben, zoals de inhoud van een tabel (met afbeeldingen), dit is niet genoeg. U kunt niet weten in het evenement welk beeld wordt afgeleverd. De enige hulp is als u gebruikt Sommige parameters als onderdeel van het verzoek (opgenomen in de link van het beeldbron). Als we de sleutel van de rij verzenden, dan kunnen we het aan. Dit is het idee. Het is niet zo moeilijk, maar het vereist wat het werk. Dus ik probeerde zoveel mogelijk te doen. Ik denk dat je in 95% alleen maar hebt Om de juiste eigenschappen op te geven: sleutels, beeldtafel en veld (ik probeer het Bouw een query, dus ik heb de veldnaam, de tabelnaam en de rij-toets nodig). In 50% Ik kan sommige van deze automatisch invullen: als het gebruik van een ttable, de htmlimagetable wordt automatisch gevuld met de eigenschap TableName en de indexen worden gescand voor een primaire sleutel (of een unieke sleutel) en toegewezen aan HTMLKeyfields-eigenschap; Als het een TGraphicfield vindt, is het HTMLIMAGEFIELD ook gevuld (meestal zijn gewoon blob-velden, dus je moet het vullen). Als u een tquery gebruikt en u bent Inclusief het beeldveld in resultaat, kan het helpen om de tabel te vinden van de Oorsprong onroerend goed. Er zijn geregistreerde eigendomsredacteuren voor deze eigenschappen, Maar meestal moet u het afbeeldingsveld niet opnemen in de dataset die wordt gebruikt voor het genereren de tabel (we hebben het beeldveld op dit moment niet nodig); In dit geval dat niet Zoek het veld in de lijst. Om te hervatten: als de HTMLKeyfields zijn ingesteld, is het resultaat zoiets als . De htmlimagetable en HTMLIMAGEFIELD wordt gebruikt bij de volgende oproep (als u interne handling gebruikt). Jij kan Specificeer extra parameters via HTMLSRCPARAMS, maar alleen als het niet intern is hanteren. Andere dingen: de link naar de CGI is goed gevormd, zelfs als u erin bent ander pad. Nog meer is het een relatieve link: probeer /path/project1.cgi en /path/project1.cgi/ en kijk naar de HTML-bron! Ik hoop dat ik niets belangrijks heb vergeten. ik denk dat De inbegrepen monsters zijn vrij nuttig. Versterken Er zijn verschillende eigendomsredacteuren en een speciaal catogory voor alle specifieke eigenschappen. Klik met de rechtermuisknop in de inspecteur Object en kies Kies / per categorie. bekende problemen Eerst moet ik zeggen dat dit geen probleem is met mijn componenten. Ik vond het terwijl proberen de demo-projecten te testen. Ik weet niet waar dit vandaan komt, Maar in sommige gevallen selecteren een blob-veld in een query met sommige SQL-stuurprogramma's kan een beperkte grootte van de BOB retourneren. Ik vond dit opslag van sommige afbeeldingen (> 32k) in een MySQL-tabel (Longblob-veld), en dan proberen ze met een query te krijgen, via ODBC-stuurprogramma. Ik was verrast om mijn foto's te zien afgekapt. Dit is niet gebeurt als het gebruik van een ttable-component. Ik weet niet of dit normaal is, noch Als het gebeurt met een aantal andere SQL-links. Dit kan verschijnen bij gebruik van interne handling voor beeldcomponenten, omdat Ik gebruik een query om het te doen. De enige manier om te voorkomen, gebruikt een TDATABase voor de verbinding en de instelling De parameter BOB SIZE = XX, waarbij XX (in KB) groot is voor elke klodder in je specifieke tafel. De interne hantering gebruikt een tquery. Omdat het de databasenaam kopieert en sessionName uit de originele dataset, het werkt alleen met TDBDATASET-afstammelingen; Dus het heeft BDE nodig. Er is geen interne ondersteuning voor andere DB-motoren (zoals ADO, IBEXPRESS), maar u kunt nog steeds het Ongetimageaction-evenement gebruiken, gebruik een gewoonte Query (aanklachts of anders) en geanalide InternalHandling naar False. Toekomstige ontwikkeling Afhankelijk van de vraag (of op mijn tijd), maar ik denk dat het op zijn minst ADO-ondersteuning zou moeten zijn. Ik heb het pakket geprobeerd met MySQL, MSSQL. Wanneer een tabel en / of veld ongeldige tekens in naam (zoals spaties) bevat, is de SQL afhankelijk van de server. Voor lokale (paradox) tabellen moeten ze worden ingesloten in dubbele aanhalingstekens; MSSQL vereist de tekens "". Currenly genereert het alleen citaten in de query; Dus het werkt niet met MSSQL. Het heeft hier wat werk nodig om meer passende verklaringen te genereren. Na het opnieuw compileren van het pakket (niet de eerste keer!), Sluit en start Delphi opnieuw. Er is geen manier om velden "in Delphi te verwijderen, dus als u het nieuwe veld Dialog opent, krijgt u een fout. Dit komt omdat (ik heb de bronnen bekeken) (Open Source Media Player) Delphi houdt de geregistreerde velden in een lijst (als aanwijzingen) en, zonder ze te verwijderen, nadat ze de aanwijzers ongeldig zijn. Kijk naar registerFields-procedure. Geschiedenis Versie 2.2 Geïsoleerd de MidcomP-eenheid; U kunt het nu gebruiken op Delphi 5 Pro, het verwijderen van het Midden-Computer. Versie 2.1 Een kleine bug opgelost en de demo-projecten Versie 2.0 Extra handling toegevoegd Basisdocumentatie. Versie 1.8 Toegevoegd (live) beeldondersteuning (zowel single als field). Toegevoegd multipaginaproductie. Extra redacteuren toegevoegd. Geregistreerd een eigendomscategorie, voor eenvoudig gebruik. Versie 1.5 HTMLProduceer en de andere aangepaste producenten toegevoegd: statisch, verborgen, dbfield, en combo. Htmlinquery toegevoegd voor MidasProducer. Versie 1.0 Eerste functionele versie. Niet gepubliceerd. Bevat alleen elementaire veldcomponenten. Gabriel Correanu E-mail: gabrielcorseanu@yahoo.com


Newcgi-pakketbron Gerelateerde software