Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Iz okvira u okvir

[es] :: Visual Basic 6 :: Iz okvira u okvir

[ Pregleda: 3662 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

bradic
Goran Bradic
Beograd

Član broj: 51939
Poruke: 111
*.absolutok.net.



Profil

icon Iz okvira u okvir06.04.2005. u 23:18 - pre 231 meseci
Postavio sam dve Text box kontrole (ili RichText) na formi. Jedna je levo, druga desno, sa odredjenim razmakom izmedju njih.

Postoji li mogucnost linkovanja (ili ne znam cega) te dve kontrole, tako da kada ucitam tekst (npr. proba.txt) u kontrolu Text1 i kada tekst stigne do kraja ove kontrole, jednostavno(?) "predje" i nastavlja se u kontroli Text2?
 
Odgovor na temu

vujkev
Beograd

Član broj: 8072
Poruke: 1347
*.telekom.yu.



+104 Profil

icon Re: Iz okvira u okvir06.04.2005. u 23:33 - pre 231 meseci
Evo ga jedan mali predlog. Ne radi baš sjajno, ali možda posluži kao ideja

Code:
Private Sub Text1_Change()
    If TextWidth(Text1) > Text1.Width Then
        Text2 = Text2 & Right$(Text1, 1)
        Text1 = Left$(Text1, Len(Text1) - 1)
        Text1.SelStart = Len(Text1)
    End If
End Sub

Naučio sam...
Da je važnije biti ljubazan nego biti u pravu
 
Odgovor na temu

Marko_L
Beograd

Član broj: 20532
Poruke: 2885
*.yubc.net.

Jabber: Marko_L@elitesecurity.org


+828 Profil

icon Re: Iz okvira u okvir07.04.2005. u 15:44 - pre 231 meseci
A koji je razlog takvog žongliranja sa textbox kontrolama ? Pošto sam primetio po ostalim tvojim temama, praviš nekakav text editor, tako da ako je ovo povezano sa tim, imaćeš problema kada budeš nešto menjao u text1 recimo, jer će ti se sve pobrljaviti.Mnogo je bolje rešenje koristiti jedan textbox, jer u njemu kada dođeš do kraja kontrole, automatski dobijaš horizontalni scroll, tako da nemaš problema sa pregledom i izmenama na tekstu, pa i sa snimanjem.Dva textbox-a je ok koristiti kada recimo hoćeš da napraviš komparaciju tekstualnih fajlova ili tako nešto.Zato i pitam šta pokušavaš napraviti, jer možda postoji bolje rešenje.
-Odracuonogakomijedrpiorazmaknicu.
-Ne rxdi mi txstxturx, kxd god hocu dx
ukucxm "x" onx ukucx "x".
-Ko kaaz e da ja neuummem da kuuca
m.
-Piše "Insert disk 3", a jedva sam i ova
dva ugurao u drajv
-Postoje samo dve osobe kojima
verujem, jedna sam ja, a druga nisi ti
 
Odgovor na temu

bradic
Goran Bradic
Beograd

Član broj: 51939
Poruke: 111
*.absolutok.net.



Profil

icon Re: Iz okvira u okvir07.04.2005. u 22:07 - pre 231 meseci
Uglavnom radim sa tekstom u QuarkExpressu.

E sad - treba da napravim neke sablone koji ce biti isti onima u QuarkExpressu (ne mogu bas isti, ali bar dosta slicni).

Jedan od tih sablona se sastoji iz toga da imam tekst poravnat i levo i desno (Justified) i da mi se tekst prostire ne po visini nego po sirini u vise kolona, posto ce mi tekst u QuarkExpressu kad ga ucitam biti isto tako rasporedjen.

Sve ovo sa sablonima radim iz razloga sto - svaki dan u Quarku ubacujem odredjene tekstove koji imaju isti sablon, ali ti ljudi (radi se o vecoj firmi) koji mi unose te tekstove nemaju predstavu o tome koliko mi tacno teksta treba (oni kucaju tekst tu Wordu), a pogotovo ne mogu da mi dobro pripreme tekst za Quark, tako da ja svaki dan gubim ogromno vreme skracujuci tekstove i dr..., sto vec u startu na ovaj nacin moze da se izbegne.

Zato su me zainteresovale TextBox i RichEdit kontrola sa kojima pokusavam to da uradim.

Znam da resavam problem i sa vec po defaultu datim vrednostima za ove dve kontrole, ali hteo sam da tim ljudima koji mi unose tekstove sto vernije prikazem kako to stvarno i meni u QuarkExpressu izgleda.
 
Odgovor na temu

Marko_L
Beograd

Član broj: 20532
Poruke: 2885
*.yubc.net.

Jabber: Marko_L@elitesecurity.org


+828 Profil

icon Re: Iz okvira u okvir08.04.2005. u 05:30 - pre 231 meseci
Ok, evo okačio sam ti jednu kontrolu (RTF2.ocx) koja sigurno radi poravnanje i po levoj i po desnoj strani (isprobano).Kada ukucaš tekst stavi ovo, recimo u command button sa kojim ćeš da pozoveš poravnanje (naravno prvo selektuješ deo teksta koji hoćeš da bude poravnat)
Code:
Private Sub Command1_Click()
RTF21.SelAlignment = 4
End Sub

Mislim da ne treba napomenuti da justify radi samo kod redova koji su kucani u kontinuitetu (ali ne i kod onih koji su prekidani enterom)
E sad, ima još jedno rešenje, a to je da se text iz textbox-a prebaci u picturebox, pa da se tamo odradi char spacing, ali kako je to malo komplikovanije rešenje, probaj prvo ovo, pa ako ti ne odgovara, pokušaću da ti sastavim kod za picture box.U stvari već imam jedno polu-rešenje, koje treba malo prepraviti, no otom potom.
-Odracuonogakomijedrpiorazmaknicu.
-Ne rxdi mi txstxturx, kxd god hocu dx
ukucxm "x" onx ukucx "x".
-Ko kaaz e da ja neuummem da kuuca
m.
-Piše "Insert disk 3", a jedva sam i ova
dva ugurao u drajv
-Postoje samo dve osobe kojima
verujem, jedna sam ja, a druga nisi ti
Prikačeni fajlovi
 
Odgovor na temu

bradic
Goran Bradic
Beograd

Član broj: 51939
Poruke: 111
*.absolutok.net.



Profil

icon Re: Iz okvira u okvir09.04.2005. u 20:50 - pre 230 meseci
Hvala ti, ova kontrola je OK. Radi poravnanje iz "prve".


Sad mi ostaju jos dve stvari da resim:

1. Kod poravnanja levo i desno (Justified) pojavljuju mi se negde veliki i nesrazmerni razmaci u redu. Kontrola bi trebala bar negde u paragrafu da podeli rec da ti razmaci ne bi ruzno izgledali. Tj. ne postoji nikakva deoba reci.

2. Prelazenje jednog istog teksta (npr: proba.txt) iz okvira u okvir.


Ako to sa picture box sto pominjes moze da mi resi ovo pod 1. - posalji mi kod. [svejedno posalji, da nesto naucim :)]


Ti si mi poslao vec dve Rich Text kontrole. Za prvu znam odakle potice a za ovu drugu ne znam. Kada bi mi rekao gde da je nadjem mozda bih tamo nasao i help za nju pa da pogledam malo - mozda isceprkam ovo sto mi treba.

Hvala ti jos jednom, dosta si mi pomogao, ako naletis na resenja za 1. i 2. gore - javi.

Pozdrav
 
Odgovor na temu

Marko_L
Beograd

Član broj: 20532
Poruke: 2885
*.yubc.net.

Jabber: Marko_L@elitesecurity.org


+828 Profil

icon Re: Iz okvira u okvir09.04.2005. u 21:26 - pre 230 meseci
Što se tiče help-a za RTF2.ocx, možeš ga naći ovde online, mada nije kompletan, tako da ne znam koliko će ti pomoći.U svakom slučaju, ne škodi da pogledaš.
Što se tiče ovih nesrazmernih razmaka, teško da ćeš naći kontrolu koja to radi savršeno, a da nije papreno skupa (ako uopšte i može da se nađe).
Ovo rešenje sa pictureboxom ću probati da odradim koliko večeras i da ga postujem ovde, mada odmah da ti kažem, da ni to neće biti potpuno savršeno.Za savršeno rešenje treba razviti dobar algoritam koji bi "umeo" da podeli reč kako treba, a da ona ne izgleda nakaradno, što zahteva dobro poznavanje pravopisa i dosta rada.U svakom slučaju, uradićemo nešto, pa ti vidi da li možeš to da iskoristiš.Možda uz malo eksperimentisanja i napraviš nešto što će ti biti upotrebljivo.

-Odracuonogakomijedrpiorazmaknicu.
-Ne rxdi mi txstxturx, kxd god hocu dx
ukucxm "x" onx ukucx "x".
-Ko kaaz e da ja neuummem da kuuca
m.
-Piše "Insert disk 3", a jedva sam i ova
dva ugurao u drajv
-Postoje samo dve osobe kojima
verujem, jedna sam ja, a druga nisi ti
 
Odgovor na temu

Marko_L
Beograd

Član broj: 20532
Poruke: 2885
*.yubc.net.

Jabber: Marko_L@elitesecurity.org


+828 Profil

icon Re: Iz okvira u okvir09.04.2005. u 22:13 - pre 230 meseci
Ovako.Na formu stavi jednu textbox kontrolu (Text1) i jednu picturebox kontrolu (Picture1), a zatim stavi ovo u modul.
Code:
Option Explicit
Public Enum qeFitPictureChar
  eNone
  eSpace
  eDash
  eLine
  eOops
End Enum
Private Type qtFitPictureLine
  sLine As String
  eEnd As qeFitPictureChar
End Type

Public Function TextToPicture(Picture As PictureBox, sString As String) As Boolean

  Dim tLine() As qtFitPictureLine
  Dim iLine As Integer, iCount As Integer, iFont As Integer
  Dim iSpace As Integer, iMarker As Integer
  Dim sSizeX As Single, sSizeY As Single
  Dim sHeight As Single, sWidth As Single, sArea As Single
  Dim sLineHeight As Single, sCharWidth As Single
  Dim sWord As String, sChar As String
  Dim eCharType As qeFitPictureChar
  Dim bNewLine As Boolean, bFound As Boolean
  Dim sOffsetX As Single, sOffsetY As Single
  Dim lForeColor As Long
  Dim sborder As Long
  sborder = 100 ' definise razmak od ivica
 
 iSpace = StringCount(sString, vbCrLf)

  With Picture
    If sborder * 2 > .ScaleWidth Then
      GoTo TextToPictureError
    End If

    If sborder * 2 > .ScaleHeight Then
      Stop
    End If

    sWidth = .ScaleWidth - sborder * 2
    sHeight = .ScaleHeight - sborder * 2

    Do
      
      iCount = 1
      iLine = 1
      ReDim tLine(1)
     sWord = ""
      Do
        Do
          eCharType = eNone
          sChar = Mid$(sString, iCount, 1)
          Select Case sChar
            Case " "
              eCharType = eSpace
            Case "-"
              sSizeX = .TextWidth(tLine(iLine).sLine & sWord & sChar)
              If sSizeX > sWidth Then
                eCharType = eOops
              Else
                eCharType = eDash
              End If
            Case vbLf
             sChar = ""
              eCharType = eLine
            Case vbCr
              If iCount < Len(sString) Then
                If Mid$(sString, iCount + 1, 1) = vbLf Then
                  iCount = iCount + 1
                End If
              End If
              sChar = ""
              eCharType = eLine
            Case Else
              sSizeX = .TextWidth(tLine(iLine).sLine & sWord & sChar)
              If sSizeX > sWidth Then
                eCharType = eOops
              Else
                sWord = sWord & sChar
              End If
          End Select
          iCount = iCount + 1
        Loop While iCount <= Len(sString) And eCharType = eNone
        bNewLine = False
        Select Case eCharType
          Case qeFitPictureChar.eNone
            tLine(iLine).sLine = tLine(iLine).sLine & sWord
            tLine(iLine).eEnd = eLine
          Case qeFitPictureChar.eOops
            If tLine(iLine).eEnd = eNone Then
              tLine(iLine).sLine = sWord
              sWord = sChar
            Else
              tLine(iLine).sLine = Trim$(tLine(iLine).sLine)
              sWord = sWord & sChar
            End If
            bNewLine = True
          Case qeFitPictureChar.eDash, qeFitPictureChar.eSpace
            tLine(iLine).eEnd = eCharType
            tLine(iLine).sLine = tLine(iLine).sLine & sWord & sChar
            sWord = ""
          Case qeFitPictureChar.eLine
            tLine(iLine).sLine = tLine(iLine).sLine & sWord
            tLine(iLine).eEnd = eLine
            sWord = ""
            bNewLine = True
        End Select
        If bNewLine Then
          iLine = iLine + 1
          ReDim Preserve tLine(iLine)
        End If

      Loop While iCount <= Len(sString)
      bFound = CBool(iLine * .TextHeight("X") > sHeight)
      If bFound Then
        iFont = iFont - 1
      End If
    Loop While bFound

       iCount = 1
      .CurrentY = sborder + sOffsetY
      Do
       .CurrentX = sborder + sOffsetX
        tLine(iCount).sLine = Trim(tLine(iCount).sLine)
                  
            If tLine(iCount).eEnd <> eLine Then
              sCharWidth = .TextWidth(" ")
              iSpace = 0
              iMarker = 0
              Do
                iMarker = InStr(iMarker + 1, tLine(iCount).sLine, " ")
                If iMarker > 0 Then
                  iSpace = iSpace + 1
                End If
              Loop While iMarker > 0
              sSizeX = sWidth - .TextWidth(tLine(iCount).sLine)
              bFound = False
              If iSpace > 0 Then
                If sSizeX \ iSpace > sCharWidth * 3 Then
                  bFound = True
                End If
              Else
                bFound = True
              End If
              If bFound Then
                sSizeY = Len(tLine(iCount).sLine) - 1 + (iSpace * 2)
                sSizeY = sSizeX / sSizeY
                sSizeX = sSizeY * 3
              Else
                sSizeX = sSizeX / iSpace
                sSizeY = 0
              End If
              iMarker = 1
              Do While iMarker <= Len(tLine(iCount).sLine)
                sChar = Mid$(tLine(iCount).sLine, iMarker, 1)
                sCharWidth = .CurrentX + .TextWidth(sChar)
                sLineHeight = .CurrentY
                Picture.Print sChar
                If sChar = " " Then
                  sCharWidth = sCharWidth + sSizeX
                Else
                  sCharWidth = sCharWidth + sSizeY
                End If
                .CurrentX = sCharWidth
                .CurrentY = sLineHeight
                iMarker = iMarker + 1
              Loop
              Picture.Print ""
            Else
              Picture.Print tLine(iCount).sLine
            End If

        iCount = iCount + 1
     Loop While iCount <= iLine
   

  End With

  TextToPicture = True

  Exit Function
TextToPictureError:
    TextToPicture = False
End Function

Public Function StringCount(ByVal Expression As String, _
                            Item As String) As Integer
                        
  Dim lPosition As Integer
  Dim lCount As Integer

  Do
    lPosition = InStr(lPosition + 1, Expression, Item)
    If lPosition > 0 Then
      lCount = lCount + 1
    End If
  Loop While lPosition > 0
  StringCount = lCount

End Function

Poravnanje pozivaš na sledeći način
Code:
Dim eGreska As Boolean
eGreska = TextToPicture(Picture1, Text1.Text)
If eGreska = False Then MsgBox "Doslo je do greske prilikom poravnanja"

-Odracuonogakomijedrpiorazmaknicu.
-Ne rxdi mi txstxturx, kxd god hocu dx
ukucxm "x" onx ukucx "x".
-Ko kaaz e da ja neuummem da kuuca
m.
-Piše "Insert disk 3", a jedva sam i ova
dva ugurao u drajv
-Postoje samo dve osobe kojima
verujem, jedna sam ja, a druga nisi ti
 
Odgovor na temu

bradic
Goran Bradic
Beograd

Član broj: 51939
Poruke: 111
*.absolutok.net.



Profil

icon Re: Iz okvira u okvir09.04.2005. u 22:18 - pre 230 meseci
OK, evo i ja trazim nesto preko NET-a ali kao sto ti kazes - takva gotova resenja su jako skupa koliko vidim.

Nista, jedino mi preostaje da prionem na rad.

Vidi ako mozes nesto da uradis, naravno, ako, i kada imas vremena.


Inace, da znas - u QuarkExpress mozes da podelis rec koja ti je presla u sledeci red gde hoces sa kombinacijom dirki "CTRL" + "-", tako da mislim da taj algoritam za podelu reci i ne bi mozda morao da izgleda tako komplikovan. (samo razvijam mastu - izgleda jednostavno a mozda je jako komplikovano - vidi ako sam ti ovime dao neku ideju)



P.S. Ovo je moj odgovor na tvoju pretposlednju poruku, posto vidim da si mi u medjuvremenu poslao kod.
 
Odgovor na temu

Marko_L
Beograd

Član broj: 20532
Poruke: 2885
*.yubc.net.

Jabber: Marko_L@elitesecurity.org


+828 Profil

icon Re: Iz okvira u okvir09.04.2005. u 22:36 - pre 230 meseci
Citat:
tako da mislim da taj algoritam za podelu reci i ne bi mozda morao da izgleda tako komplikovan. (samo razvijam mastu - izgleda jednostavno a mozda je jako komplikovano - vidi ako sam ti ovime dao neku ideju)

Nisam ni rekao da je previše komplikovano, već da treba dosta rada i treba dobro da se osmisli cela ta procedura.E sad, ja lično se nisam mnogo bavio izradom text editora i sličnih stvari, tako da sve ovo što sam ti napisao su samo ideje kako nešto može da se odradi, ali ne i gotova rešenja.Uostalom, svrha ovog foruma i nije da daje gotova rešenja, već da pomogne korisnicima da oni sami nešto urade.Tako da, sad imaš neke smernice, a čini mi se da je ova tvoja ideja sa CTRL + "-" sasvim okej, pa možeš pokušati da uradiš nešto sa tim.Ako negde zapneš, javi se i pomoći ćemo ti koliko je u našoj moći.
-Odracuonogakomijedrpiorazmaknicu.
-Ne rxdi mi txstxturx, kxd god hocu dx
ukucxm "x" onx ukucx "x".
-Ko kaaz e da ja neuummem da kuuca
m.
-Piše "Insert disk 3", a jedva sam i ova
dva ugurao u drajv
-Postoje samo dve osobe kojima
verujem, jedna sam ja, a druga nisi ti
 
Odgovor na temu

[es] :: Visual Basic 6 :: Iz okvira u okvir

[ Pregleda: 3662 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.