Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: Formille kirjoittaminen

Sivun loppuun

mara [15.07.2005 10:34:19]

#

Onko mahdollista kirjoittaa ajon aikana tekstiä formille?
Esimerkiksi jos ohjelma tulostaa kuvaajan lomakkeelle, niin voisiko siihen täydentää tietoja sen jälkeen..

petrinm [15.07.2005 10:50:02]

#

Print käskyllä voi kirjottaa koskavaan formille, mutta teksti ei näy objektien alta eli jos kuvaaja on joku muu kuin formille tulostettu kuva niin tekstiä ei näy. Paras tapa on laitella formiin label objecteja ja sitten muuttaa niiden tekstiä koodista käsin.

ESIM:

Label1.Caption = "Moikka"

Antti Laaksonen [15.07.2005 18:23:09]

#

Tekstiä voi tosiaan kirjoittaa Print-metodilla, ja tekstin paikan pystyy päättämään CurrentX- ja CurrentY-ominaisuuksien avulla. Lisätietoa on VB-oppaassa.

chin [16.07.2005 15:15:45]

#

Helpompi tapa on käyttää GDI:tä (tai GDI+:aa jos käyttää VB.NET:ia).

mara [26.07.2005 08:10:18]

#

Tarkoitin lähinnä olisiko mahdollista lisätä tietoja sen jälkeen, kun kuvaaja on piirtynyt formille. Eli aluksi kuvaaja on piirtynyt formille line, circle ja muilla vastaavilla käskyillä. Sen jälkeen voisi napsauttaa hiirtä tietyssä kohdassa, johon haluaisi tietoja lisättävän. Olisiko tällainen mahdollista ja jos niin miten??

kaviaari [26.07.2005 09:01:23]

#

kun hiirtä naksautetaan muutetaan CurrentX ja CurrentY vastaaviksi.

Form1.CurrentX=Mouse.x
Form1.CurrentY=Mouse.y

Form1.Print InputBox("Teksti joka lisätään...")

VB taidot vähän ruostunu mutta tossa ainakin periaatteessa tehtynä se

mara [26.07.2005 09:53:41]

#

Nyt toimii. Kiitoksia paljon!

mara [26.07.2005 13:30:52]

#

Tuli lisää ongelmia. Eli, kun on tolla InputBoxilla lisännyt tekstiä, ni voikos sen sitten jotenkin poistaa..? Esim yritän tehdä toimintoa, jossa hiiren vasemmasta napista lomakkeen päällä painamalla saa lisättyä tietoa haluamaansa paikkaan ja oikeasta napista pitäisi saada poistettua lisätty teksti..

hunajavohveli [26.07.2005 14:42:35]

#

Tuo ei onnistukaan enää niin helposti. Print on täyttä grafiikkaa, joten sen voi pyyhkiä vain yksinkertaisesti piirtämällä päälle taustan väriä. Joutuisit tuota varten käytännössä luomaan jonkinlaisen oman "kontrollin", jonka tiedot olisivat taulukoissa. Suosittelen kyllä käyttämään esim. labeleita tuollaiseen, jos em. tapa tuntuu vaikealta.

neau33 [26.07.2005 22:25:29]

#

Moi mara!
Vastaus sun ongelmaan...

mara kirjoitti:

Tuli lisää ongelmia. Eli, kun on tolla InputBoxilla lisännyt tekstiä, ni voikos sen sitten jotenkin poistaa..? Esim yritän tehdä toimintoa, jossa hiiren vasemmasta napista lomakkeen päällä painamalla saa lisättyä tietoa haluamaansa paikkaan ja oikeasta napista pitäisi saada poistettua lisätty teksti..

Ensteks aseta Formin properties asetuksissa AutoRedraw arvoksi True ja FontTransparent arvoksi False

'moduuliin
Global TagX As Integer, TagY As Integer, xLen As Integer

'formiin
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
 Select Case Button
   Teksti$ = "teksti": xLen = Len(Teksti$)
  Case 1
   If Not X = TagX Or Not Y = TagY Then
   Me.CurrentX = TagX
   Me.CurrentY = TagY
   Me.ForeColor = Me.BackColor: Me.Print String$(xLen, Chr$(219))
   End If
   Me.ForeColor = &H80000008
   Me.CurrentX = X: TagX = X
   Me.CurrentY = Y: TagY = Y
   Me.Print "texti"
  Case 2
  If Not X = TagX Or Not Y = TagY Then
   Me.CurrentX = TagX
   Me.CurrentY = TagY
   Me.ForeColor = Me.BackColor: Me.Print String$(xLen, Chr$(219))
   End If
   Me.CurrentX = X
   Me.CurrentY = Y
   Me.ForeColor = Me.BackColor: Me.Print String$(xLen, Chr$(219))
 End Select
End Sub

neau33 [27.07.2005 08:05:41]

#

Oops!...pikku korjaus edelliseen

'moduuliin
Global TagX As Single, TagY As Single, xLen As Integer

'formiin
Private Sub Form_Load()
    Me.AutoRedraw = True
     Me.FontTransparent = False
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  Teksti$ = "teksti": xLen = Len(Teksti$)
 Select Case Button
  Case 1
   If Not X = TagX Or Not Y = TagY Then
    Me.CurrentX = TagX
     Me.CurrentY = TagY
      Me.ForeColor = Me.BackColor: Me.Print String$(xLen, Chr$(219))
   End If
    Me.ForeColor = &H80000008
     Me.CurrentX = X: TagX = X
      Me.CurrentY = Y: TagY = Y
       Me.Print Teksti$
  Case 2
   If Not X = TagX Or Not Y = TagY Then
     Me.CurrentX = TagX
      Me.CurrentY = TagY
       Me.ForeColor = Me.BackColor: Me.Print String$(xLen, Chr$(219))
   End If
     Me.CurrentX = X
      Me.CurrentY = Y
       Me.ForeColor = Me.BackColor: Me.Print String$(xLen, Chr$(219))
 End Select
End Sub

mara [27.07.2005 13:38:55]

#

Kiitoksia Nea. Tuota pystyi hyvin soveltamaan, vaikken ihan täsmälleen tuota tarkoittanutkaan!


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta