04. januar 2012 - 02:22 Der er 5 kommentarer og
1 løsning

Vis HTML-side - Lav Rettelser på HTML-side og vis side (med rettelser).... mm.

HEJ Eksperter,

Fra et Delphi program oprettes en HTML-side, som skal vises i en TWebbrowser. Siden skal KUN vises lokalt på en PC (ikke på nettet eller på nogen måde i Cyberspace).

Websiden består af N varesider hver med 4 faneblade. De enkelte Faneblades visning styres af en CCS kode kom ændres ved klik på det enkelte faneblad. Den viste (aktuelle vare) side vil vise 1 af N varer (eller Salgsemner, eller fakturaer, eller sælgere, eller købere (da jeg har tænkt mig at anvende denne metode til flere sider)).


F.eks for varer:
Faneblad 1:
Varer: (Navn, varenummer, producent, billede, vare-beskrivelse, hvad det skal bruges til etc..)

Fameblad 2:
Lager: (Placering, antal på lager, restordre, minimum antal,...)

Fanebald 3:
ØKONOMI: (Indkøbspris, salgspris, moms, ind - eller ud-moms, valuta ... )

Faneblad 4:
PRODUCENT: (Navn, Adresse, Postnummer + sted, Land, CVR-nummer,
telefon  og fax, kontakt .... )

Der er pt. 4 varer. Derfor opretter jeg fra Delphi data-basen 4 JavaScripts Array (eks. inidata[0] .. inidata[3]).

I hver af disse inidata[N] lægger jeg så som perler på en snor de relevante data :

inidata[0] = "Navn", "varenummer1", "producent", "billede", "vare-beskrivelse" ......"ProdNavn", "Adresse", "Postnummer", "Poststed", "Land", "CVR-nummer", "telefon", "fax", "kontakt", ...... );

PÅ selve siden har jeg fire manøvre knapper som bestemmer positionen (om jeg vælger inidata[N] pos = 0 eller inidata[3] pos=3. Jeg har en intern kontrol (JavaScript) som styrer positionen af fanebladene.

Selve data vises i en TABLE og hver data presenteres via javascript-funktionen:

function vis (0)          // for vare nummer 0
{
  document.getElementById("navn").innerHTML = inidata[0][0];
  document.getElementById("varenum1").innerHTML = inidata[0][1];
  document.getElementById("producent").innerHTML = inidata[0][2];

  ......
)

function vis (1)          // for vare nummer 1
{
  document.getElementById("navn").innerHTML = inidata[1][0];
  document.getElementById("varenum1").innerHTML = inidata[1][1];
  document.getElementById("producent").innerHTML = inidata[1][2];

  ......
)

ALt dette fungerer som det får penge for det, men da disse Data ikke er statiske, trænger jeg måde hvor jeg kan opdatere, rette disse JS-data.

Når bruger klikker på EDIT (for den enkelte vare) sender et JavaScript en besked til Delphi programmet om at denne side skal ændres (editeres). Delphi henter varens nummer fra HTML-siden, kalder nogle andre Delphi forms, indlæser aktuelle vares data og
herfra er det muligt at rette data. Delphi Databasen opdateres. Nye inidata (inidata[0] .. [4]) oprettes, sletter HTML-siden og vise den nye opdaterere side. Det kører, men er lidt tungt.

Så fik jeg tanken:

Det er muligt at nogle parametre i TWebbrowseren, så den tillader online-editering, men for ikke at kunne ændre på den forkerte vare skal jeg have websiden (med websiden mener jeg her den relevante Vareside "låst", dvs. jeg må ikke kunne scrolle, manøvrere eller flytte mig fra varens side (husk faneblade skal også være aktive!) . Jeg kan låse manøvreknapperne (style='visibility: none;'); styret fra Delphi prgm'et via et delphi kontrolleret JaVascript, men hvordan forhindrer jeg siden i at scrolle ??

Findes der i JavaScript en kommando så man kan enable / disable BUTTONS som i Delphi (Button1.Enabled = true // Button1.Enabled = False ) ????

KRistian

HUSK:

Det er en LOKAL HTML-side, genereret i et DELPHI_program, som skal køre i en LOKAL Twebbrowser, så Alt HVAD DER HEDDER <PHP og eller SQL-baser er udelukket. Det er 100 PCT. ren visning.

Kristian
Avatar billede olebole Juniormester
04. januar 2012 - 15:55 #1
<ole>

Du kan disable/enable din knap med:

document.getElementById("dinKnap").disabled = true;

Du kan ikke som sådan låse scrolling, men du kan fjerne scrollbars med CSS:

html, body {
    overflow: hidden;
}

/mvh
</bole>
04. januar 2012 - 18:26 #2
HEJ,

1000 tak, prøver det og melder tilbage (sandsynligvis først sent torsdag eftermiddag.

KR
04. januar 2012 - 20:52 #3
HEJ,

Prøvede det  og det fungerer som ønsket. Pointene er dine. Så drop et svar. Kommer muligvis i morgen ellers torsdag... (skal nordpå fra morgen og ved ikke hvornår jeg er tilbage til tastaturet (og internettet) ... )

(At det så viser sig at min planlagte løsning er forkert og alt det andet ikke fungerer,  har ikke så meget med det forslag du kom med, det er en anden sag. Din løsning fungerer perfekt  så pointene ER dine.

Jeg har imidlertid fundet en løsning som ser ud til at fungere (og det er ikke den ovenfor skitserede delphi -løsning (heldigvis). De foreløbige test's er lovende. )

KR
04. januar 2012 - 20:53 #4
UPS....

Valgte forkert løsning...

KR
Avatar billede olebole Juniormester
04. januar 2012 - 20:58 #5
Ellers tak, jeg samler ikke point. Bare accepter dit svar, så tråden lukkes  =)
04. januar 2012 - 23:47 #6
OK

Lukker og takker ...

KR
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester