Formátování matematických výrazů   zodpovězená otázka

VB6/VBA

Zdravím, mám prográmek pro nějaké mat. výpočty - po výpočtu se zobrazí vzorec, zatím jenom do RichTextBoxu, ale například x na druhou se mi zobrazí x^2, snád mi rozumíte co potřebuji... Jak to zobrazit (napsat) tak aby to bylo normálně jako v matematice, jak se tyto věci formátují (nebo kde bych to našel), děkuji.

Private Sub Button18_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button18.Click
        Dim r As Double
        If Double.TryParse(TextBox8.Text, r) = True Then
            Dim ok As Double = Math.PI * r ^ 2
            TextBox5.Text = ok
            RichTextBox1.Text = ("S=πr^2")
        Else
            MsgBox("Zadaná hodnota v poli 'r' není číslo.")
        End If
    End Sub

nahlásit spamnahlásit spam 0 odpovědětodpovědět
  Richtextbox1 = "{\rtf1 \par S = \u960? r \u178?}"

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

No... podle mého názoru objekt RTB nepodporuje zobrazení horního indexu. Váš příklad se v RTB nezobrazí korektně, ale po zkopírování např. do Wordu už ano, ale tím pádem se to dá použít pouze pro tvorbu dokumentu, ale už ne pro jeho správné zobrazení, o což ale zřejmě asi jde :)

S = π r ²

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Takhle se mi to v Rich nezobrazí, do čeho mám teda vypsat řešení?

Richtextbox1 = "{\rtf1 \par S = \u960? r \u178?}"

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Napadá mě pouze jedno řešení, nemusí být ideální, ale váš problém to vyřeší.

1) Do seznamu objektů přidejte objekt WebBrowser (pravé tlačítko na seznam komponent, pak klikněte na Components..., najděte Microsoft Internet Controls a zaškrtněte

2) Umístěte do formuláře nově se objevivší objekt WebBrowser (to bude náhražka vašeho RTB)

3) Do nějakého souboru vygenerujte HTML kód (HTML totiž umí používat horní index)

4) Načtěte soubor do WB nebo refreshněte

Např.:

Private Sub Form_Load()
Soubor$ = "C:\vzorec.html"
Close #1
Open Soubor$ For Output As #1   'otevření souboru pro zápis
Print #1, "S = &pi; r<sup>2</sup>"
'&pi; je HTML tag pro "pí"
'<sup> - horní index, <sub> - dolní index (párové tagy)
Close #1
WebBrowser1.Navigate (Soubor$)  'WB otevře tento soubor
End Sub

Poznámka - ke znovunačtení obsahu WebBrowseru použijte metodu

WebBrowser1.Refresh

Ovšem při refreshování se občas potýkám s problémy, například v mém ukázkovém projektu se mi ho nepodařilo použít, takže se tomu zkuste vyhnout :)

Pro nastudování dalších HTML tagů doporučuji prostudovat jakpsatweb.cz.

Snad jsem pomohl, můj projekt si můžete stáhnout zde:

http://erasser.own.cz/vzorec.zip

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Ujasněme si, v čem to zkoušíte - kód je pro VB 6 - viz nadpis této části fóra: "Visual Basic 6 a jiné verze" - kód, který jste přidal k dotazu však je pro .NET. Tvoříte-li v .NET, pak zkuste - s horním indexem:

 RichTextBox1.Text = "{\rtf1 \par  S = \u960? r\super\fs24\b 2\nosupersub \b0\fs20\par}"

anebo se znakem Unicode

 RichTextBox1.Text = "{\rtf1 \par   S = \u960? r\u178?  =  \u960? . " & r & "\u178?  =  " & ok & " }"

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pro RichTextBox je uvedený kód správný. Exponent není tvořený jako horní index, ale jde o jeden ze znaků Unicode. Je potřeba vybrat font, který žádaný znak obsahuje. Horní index se zobrazí třeba takto:

  RichTextBox1 = "{\rtf1 \par S = \u960? r\super\fs24\b 2\nosupersub \b0\par}"

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Programuji ve MS VB 2008... takže .NET V tom RTB mi to nějak nejde, zkusím to v tom webbrowseru, díky za rady.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Programátor by se neměl vzdávat! Problém se dá vyřešit, kdybyste napsal co nejde.

Moderátora prosím o přehození vlákna do .NET

nahlásit spamnahlásit spam 0 odpovědětodpovědět

... a prosím o vymazání kódů pro VB6

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Protože ukázkový kód tvoří výstup jako text, chybí přidat převod do RTF

  RichTextBox1.Rtf = RichTextBox1.Text

anebo řetězce vložit rovnou jako RTF

  RichTextBox1.Rtf = "{\rtf1 \par  S = \u960? r\super\fs24\b 2\nosupersub \b0\fs20\par}"
  ' nebo
  RichTextBox1.Rtf = "{\rtf1 \par   S = \u960? r\u178?  =  \u960? . " & r & "\u178?  =  " & ok & " }"

Vytvoření RTF přes text se hodí při napojování řetězců, např. RichTextBox1.Rtf &= "... nefunguje

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Ano, přesně tohle můj problém řeší, děkuji. Kde bych našel tyto hodnoty - kde je popsaný to že se to píše (ten horní index) takhle (jestli neexistuje nějaký manuál apod.).

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zkuste hledat na Internetu - najdete třeba http://suplik.petnik.cz/priklady/vytvore... a jistě i jiné návody.

RTF specifikaci si můžete stáhnout z http://www.microsoft.com/downloads/detai...

Je to rozbalovací exe soubor a obsahuje jeden Word dokument

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dobrý den,

Dlouho sem hledal jak vložit horní index a nakonec jsem objevil metodu jak to lze provést...

Jdi na Start-> Programy-> Příslušenství-> Systémové nástroje-> Mapa znaků

Nyní vyberte tento charakter ² z uvedených znaků.

Klepněte na tlačítko Vybrat

Klepněte na tlačítko Kopírovat

Potom zkuste změnit text jakéhokoliv řízení vložením tohoto znaku.

nahlásit spamnahlásit spam -2 / 2 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback