Onko mahdollista tehdä vb:llä sellaista koodin pätkää jolla fontin värin voisi muuttaa nappia painamalla ja valitsemalla värin esim text.boxissa
On mahdollista. Fontin värin saa vaihdettua muuttamalla formin ForeColor-ominaisuutta.
TextBoxissa koko teksti on aina samalla värillä. Jos tämä ei haittaa, niin voit tosiaan käyttää ForeColor-ominaisuutta. Jos tekstin eri osien pitää olla eri värillä, joudut turvautumaan erilliseen RichTextBox-kontrolliin, jonka pystyy valitsemaan Project->Components-valikosta.
Tarkoitus olisi tarvittaessa pysytä muuttamaan tekstin eri osia eriväreille. RichTextBox kontrollinen käyttö on aika vierasta. voisitko hiukan valaista sen käyttöä ?
Se osa, jonka väriä muutetaan, pitää ensin valita määrittämällä SelStart ja SelLength. Valittuna olevan osan väriä voi sitten muuttaa SelColor-ominaisuudella.
tuollakin päästään taas eteenpäin, kiitos. vielä yksi tarkennus, onko mahdollista tehdä saman tyylinen fontin värivalikko kuin esimerkiksi wordissa on työkalupalkkiin yms.
Lähtökohta on että kaikki on mahdollista.
Ja kyllä tuo onnistuu, tapoja on varmasti monia.
ihailtava asenne ! kunpa joku voisi vihjata vähän vasta alkajallekkin että miten ja miksi.
Jos haluat päästä helpolla, voit tehdä värinvalinnan suoraan CommonDialogin avulla. Silloin riittää muutama rivi koodia:
' näytetään värinvalintaikkuna CommonDialog1.ShowColor ' muutetaan valitun kohdan väri RichTextBox1.SelColor = CommonDialog1.Color
Värinvalinnan voi tehdä myös itse, jolloin siitä saa juuri semmoisen, kuin haluaa. Valinnan voi tehdä vaikka niin, että PictureBoxiin ensin piirretään kutakin väriä vastaavat laatikot (Line-komento riittää). Sitten kun käyttäjä painaa PictureBoxista, tekstin väri muuttuu hiiren kohdalla olevaksi väriksi (MouseDown tunnistaa painamisen, Point ilmoittaa tietyn kohdan värin). Värivalikon näyttäminen ja piilottaminen Wordin tapaan onnistuu Visible-ominaisuuden avulla.
Grrr... Tarkotit siis tekstikentän tekstin väriä :/
Tässä taas nähdään se, että olisi hyvä laittaa tarvittavat tiedot VIESTIIN eikä lykätä osaa aiheen otsikkoon. En sitä lukenut kun tulin viestiketjuun tuosta oikealla olevasta "uusin viesti"-lootan linkin kautta.
Mutta eipä tuo nyt niin kauheeta ole... :)
no nyt opin tekemään niitä laatikoita line-komennolla, mutta on tämä niin vaiketa aluksi. voisitko laittaa vähän mallia koodista jolla tuon väripaletti hässäkän saisi aikaiseksi ja toimimaan.
Väripaletti kannattaa kasata sopivan silmukan avulla. Tässä esimerkissä näytetään 16 väriä, jotka saadaan suoraan QBColor-funktion avulla. Värin valinta on näppärintä tunnistaa lukemalla suoraan kuvakehyksestä hiiren kohdalla olevan pikselin väri. Kuitenkin pitää ensin tarkistaa, että lukukohta on tosiaan jonkun värin kohdalla eikä paletin taustan tai värien reunusten päällä. Kun käyt huolellisesti läpi nuo laskutoimitukset, ymmärrät varmaan, mistä on kyse (Mod on jakojäännös).
Private Sub Form_Load() With Picture1 .AutoRedraw = True ' kuva säilyy muistissa .BorderStyle = 0 ' ei kehystä .ScaleMode = 3 ' mittayksikkö pikseli ' paletin koko 105x105 pikseliä .Width = 105 * Screen.TwipsPerPixelX .Height = 105 * Screen.TwipsPerPixelY End With Dim i As Integer, j As Integer For i = 0 To 3 For j = 0 To 3 ' piirretään värilaatikko Picture1.Line (5 + i * 25, 5 + j * 25)-Step(20, 20), QBColor(4 * i + j), BF ' piirretään musta reunus Picture1.Line (5 + i * 25, 5 + j * 25)-Step(20, 20), QBColor(0), B Next Next End Sub Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) ' jos valintakohta on värien alueella... If (X + 19) Mod 25 < 19 And (Y + 19) Mod 25 < 19 Then ' ...muutetaan tekstin väriä RichTextBox1.SelColor = Picture1.Point(X, Y) End If End Sub
paletti näkyy hienosti mutta ongelmia tulee kun painan hiirtä paletin päällä. herjaa tuota loppukohtaa koodissa
"RichTextBox1.SelColor = Picture1.Point(X, Y)"
laitan koodin alkuosaa seuraavaksi, jos joku keksii vian.
Private Sub MonthView1_DateClick(ByVal DateClicked As Date) Dim tnimi As String ' muodostetaan tiedoston nimi tnimi = "C:\Kalenteri\loki" & "\" & DateClicked & ".txt" ' jos tiedosto on olemassa, luetaan sen tiedot tekstilaatikkoon If Dir(tnimi) <> "" Then Open tnimi For Input As #1 Text1.Text = Input(LOF(1), #1) Close #1 ' muuten tyhjennetään tekstilaatikko Else Text1.Text = "" End If End Sub Private Sub Command1_Click() Dim tnimi As String ' muodostetaan tiedoston nimi tnimi = "C:\Kalenteri\loki" & "\" & MonthView1.Value & ".txt" ' kirjoitetaan tiedostoon tekstilaatikon sisältö Open tnimi For Output As #1 Print #1, Text1.Text Close #1 End Sub
Mitä virheilmoituksessa sanotaan? Ovathan kontrollien nimet oikein? Kirjoittamasi koodinpätkä ei kuulu värinvalintaan laisinkaan.
"Ovathan kontrollien nimet oikein? "
tuota epäilinitsekkin, kun tuossa sinun esimerkissä on kohta " RichTextBox1.SelColor = Picture1.Point(X, Y)"
niin onko sillä vaikutusta, kun minun koodissa on kontrolli nimeltään "Text1.text"
muuten tuo värivalinta on tehty tuon sinun esimerkin mukaan.
Luulen että et ole laittanut ollenkaan RichTextBoxia vaan laitoit tavallisen TextBoxin
Zigilii on oikeassa, olet laittanut richtextboxin sijasta tavallisen. Tuon oikean saat käyttöösi klikkaamalla sitä palkkia jossa muut komponentit ovat hiiren oikealla näppäimellä ja sieltä avautuvasta valikosta components kohtaa.
Sitten vain valitset oikean kontrollin listasta.
jep, nyt toimii tuo värinvaihto hienosti, mutta kun tulostan kyseisen "sivun" komennolla "Print #1, RichTextBox1" tulostaa se ensin ilmeisesti valitun värin koodin. onko mahdollista saada se värikoodi pätkä pois tulostuksesta ? aikaisemmin tulostus onnistui hienosti, eli pelkkä teksti tuli paperille.
Pelkkä teksti on ominaisuudessa RichTextBox1.Text. Silloin tosin menetät tekstin värityksen ja muut muotoilut.
Tekstin voi myös tallentaa ja ladata RTF-muodossa näin:
RichTextBox1.SaveFile "c:\omat\testi.rtf" ' tallennus RichTextBox1.LoadFile "c:\omat\testi.rtf" ' lataus
kyllä vain sain sen tallennettua .rtf muotoon ja luettua myös oman ohjelman kautta. Mutta jos tulostan sen omasta ohjelman pätkästä niin taas tulee koodia ennen teksiä mutta jos menen sinne kansioon johon olen tallentanut nuo .rtf tiedostot ja avaan ne word-ohjelmalla ja tulostan ne sieltä, toimii tulostus aivan oikein.
Siis mikä neuvoksi jotta tulostuksen saisi toimimaan myös omasta ohjelmasta ?
Aihe on jo aika vanha, joten et voi enää vastata siihen.