Seite 1 von 2

Html insert / Bitte um Tipps !

Verfasst: 28.06.2018 18:58
von ccode_new
Hallo liebe Purebasic- Fans/Nutzer/Freaks/Profis,

hat jemand einen Tipp wie man so etwas:

Code: Alles auswählen

QtScript(~"gadget(0).insertHtml(\"<span style='text-decoration: line-through'>&nbsp;</span>\")")
ohne abschließendes Kommando einfügen kann, bzw. wie man das Leerzeichen gegen "gar kein Zeichen" ersetzen kann ?

(Sollte dies nur auf umständlicher Art möglich sein ist das auch nicht so schlimm, aber hat da jemand vielleicht einen Tipp.)

(Hier werden sich wohl noch die wenigsten mit dem Qt-Subsytem für PureBasic auseinandergesetzt haben.)

Re: Html insert / Bitte um Tipps !

Verfasst: 28.06.2018 19:07
von ts-soft
ccode_new hat geschrieben:wie man das Leerzeichen gegen "gar kein Zeichen" ersetzen kann ?
Vielleicht so: #Empty$ ?

Re: Html insert / Bitte um Tipps !

Verfasst: 28.06.2018 19:14
von ccode_new
Hallo ts-soft,

leider ist dem nicht so.

Das hier:

Code: Alles auswählen

QtScript(~"gadget(0).insertHtml(\"<span style='text-decoration: line-through'>"+#Empty$+~"</span>\")")
...wird dann nicht mehr ausgeführt.

(Ersetzt man aber das "#Empty$" gegen irgendetwas anderes (z.B. "Ich bin leer") wird es ausgeführt. (Und das </...> Zeichen scheint Pflicht zu sein.))

Re: Html insert / Bitte um Tipps !

Verfasst: 28.06.2018 19:59
von Mijikai
#Null$ ?

Re: Html insert / Bitte um Tipps !

Verfasst: 28.06.2018 20:13
von ccode_new
@Mijikai:
Dabei kommt so etwas lustiges bei raus:
!_PB_NullConstant_! (Durchgestrichen)

????

Die Verwendung eines solchen Zeichen:

&zwnj; oder &zwj; oder &#8204; oder &#8205;

ist schon nah dran, aber für mich keine perfekte Lösung.

Re: Html insert / Bitte um Tipps !

Verfasst: 28.06.2018 20:30
von Sicro
Ein vollständiger Test-Code wäre hilfreich, damit nicht jeder von uns einen selber erstellen muss.

Re: Html insert / Bitte um Tipps !

Verfasst: 28.06.2018 20:53
von ccode_new
Testcode:

Code: Alles auswählen

Global EditWin

Global editHtml

Enumeration FormGadget
  #editHtml
  #btnInsertHtml
EndEnumeration

Declare ResizeGadgetsEditWin()

Procedure OpenEditWin(x = 0, y = 0, width = 600, height = 400)
  EditWin = OpenWindow(#PB_Any, x, y, width, height, "Html-Insert-Test", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)
  SetWindowColor(EditWin, RGB(255,255,255))
  EditorGadget(#editHtml, 0, 30, 600, 370)
  ButtonGadget(#btnInsertHtml, 0, 0, 600, 30, "Insert HTML")
  GadgetToolTip(#btnInsertHtml, "Fügt HTML-Code ein.")
  QtScript(~"gadget(0).setTextColor(\"" + "#"+Hex(Red(RGB(255,0,0)))+"0000" + ~"\")")
  QtScript(~"gadget(0).setText(\"Hallo!\")")
EndProcedure

Procedure ResizeGadgetsEditWin()
  Protected FormWindowWidth, FormWindowHeight
  FormWindowWidth = WindowWidth(EditWin)
  FormWindowHeight = WindowHeight(EditWin)
  ResizeGadget(#btnInsertHtml, 0, 0, FormWindowWidth - 0, 30)
  ResizeGadget(#editHtml, 0, 30, FormWindowWidth - 0, FormWindowHeight - 30)
EndProcedure

Procedure EditWin_Events(event)
  Select event
    Case #PB_Event_SizeWindow
      ResizeGadgetsEditWin()
    Case #PB_Event_CloseWindow
      ProcedureReturn #False
      
    Case #PB_Event_Menu
      Select EventMenu()
      EndSelect
      
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 1
          QtScript(~"gadget(0).insertHtml(\"<span style='text-decoration: line-through'>&zwnj;</span>\")")
      EndSelect
  EndSelect
  ProcedureReturn #True
EndProcedure

OpenEditWin()
Repeat
  
Until Not EditWin_Events(WindowEvent())

Re: Html insert / Bitte um Tipps !

Verfasst: 28.06.2018 21:58
von Sicro
Danke für den Test-Code. Nun ist auch klar, um welches Gadget es sich bei dir handelt.

Kannst du bitte noch beschreiben, was du vorhast?
Ein "<span></span>" mit dem Style "durchstreichen" ohne Inhalt einzufügen macht für mich kein Sinn.

Re: Html insert / Bitte um Tipps !

Verfasst: 29.06.2018 13:21
von ccode_new
Sicro hat geschrieben:Kannst du bitte noch beschreiben, was du vorhast?
Ein "<span></span>" mit dem Style "durchstreichen" ohne Inhalt einzufügen macht für mich kein Sinn.
Für mich macht das auch keinen Sinn.

Aber alles OK!

Ich kann mir das mit String-Funktionen brauchbar anpassen.

(Wer für eine möglichst elegante/schnelle String-Anpassung noch Tipps hat kann diese gerne einbringen.)

-> Der Style muss durch Textmarkierung übernommen werden können (und der bestehende Style (z.B Bold) muss erhalten bleiben)
-> Der bestehende Style muss ab der "Einfügestelle" mit dem neuen Style ergänzt werden.

Re: Html insert / Bitte um Tipps !

Verfasst: 29.06.2018 13:29
von Derren
Du möchtest sicher so etwas (pseudo code):

Code: Alles auswählen

insert(<span style="my style">)
insert(bisschen text)
insdert(</span>)
Du bearbeitest aber keien Text-Datei, oder sendest Quelltext Häppchenweise an den Browser, der erst dann anfängt die Seite zu rendern, wenn das vollständige Dokument geladen wurde.
Sondern, ich nehme an, dass nach jeder Änderung des Document-Object-Models neu gerendert wird, ähnlich Ajax. So wie bei PB mit "AddGadgetItem()" etc. Sonst müsstest du, wie bei einem Canvas, bei jeder kleinen Änderung, alles neu senden.

Daher musst du wohl ein gültiges DOM-Element erzeugen und dieses dann in das Gadget einfügen. Denn wie bereits gesagt wurde: Ein leeres, gestyltes <span> ist nicht besonders sinnvoll und wird daher von der Engine direkt verworfen.