Clique abaixo para nos ajudar
Login

Esqueci minha senha

Estamos no Facebook
Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Quem está conectado
13 usuários online :: 1 usuário cadastrado, Nenhum Invisível e 12 Visitantes :: 2 Motores de busca

Alexsander Leal

[ Ver toda a lista ]


O recorde de usuários online foi de 468 em 1/3/2012, 10:43
Últimos assuntos
automação do mozilla e chrome

15/1/2017, 12:16 por Handerson Mildroz

Boa tarde a todos!

Sou iniciante no VFP. Preciso de ajuda, pois tenho um código que usa o …

Comentários: 0

COMO ESTÃO DESENVOLVENDO EM WEB?

22/8/2016, 10:48 por AJC

Pessoal, já lí sobre vários topicos aqui no forum sobre desenvolvimento web
mas ainda nada …

Comentários: 2

USAR REPORT FORM

30/12/2016, 09:06 por AJC

Pessoal bom dia,
Estou com um grande problema, já pesquisei muita coisa sobre report form, mas o …

Comentários: 0

dll pertocheck

15/12/2016, 12:45 por FERNANDOMATRELLA

Alguem teria ja desenvolvido a comunicação com essa dll estou tento muito trabalho aqui e nenhum …

Comentários: 1

Rota de um arquivo

15/12/2016, 22:28 por Martins

Agradeço ajuda para o seguinte:
como guardar numa variável, um caminho ou rota,por exemplo


Comentários: 3

Estatísticas
Temos 6987 usuários registrados
O último usuário registrado atende pelo nome de Alexsander Leal

Os nossos usuários postaram um total de 1 mensagem em 1 assuntos

Linhas Editbox

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Linhas Editbox

Mensagem por Rosangela Pires em 30/5/2016, 01:39

Amigos,

Temos como saber o numero de linhas de um editbox, mesmo diminuindo ou aumentando a largura do editbox.
Rosangela

Rosangela Pires
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Re: Linhas Editbox

Mensagem por lardecristo em 2/6/2016, 10:04

Para usar é só passar o objeto.
Por exemplo:
Código:
lnLinha = GetVisibleLines(THISFORM.Edit1)
MESSAGEBOX(lnLinha)
[Você precisa estar registrado e conectado para ver este link.]

Código:
#INCLUDE FoxPro.h

*==================================
FUNCTION GetVisibleLines(oObj)
   * oObj - Editbox reference
   * returns: number of visible lines
   * asLines - array filled with lines as you see them in an Editbox
   * asLines is optional parameter

   LOCAL i, sValue, nSolidLines, s
   LOCAL nWidth, sFontStyle, nSize, nLines, sLines[1]

   WITH oObj
      nWidth= .Width- 2*(.Margin+IIF(.BorderStyle=0,0,2))-IIF(.ScrollBars=2,22,2) &&string width in Editbox

      sValue= .Value
      nSolidLines= ALINES(sLines,sValue)

      nSolidLines= IIF(nSolidLines#1, nSolidLines, IIF(EMPTY(sLines[1]),0,nSolidLines))
      nLines= 0
      FOR i=1 TO nSolidLines
         s= sLines[i]
         DO WHILE .T.
            i0= GetMaxPosition(oObj, s, nWidth)
            nLines= nLines+1
            IF i0=LEN(s)
               EXIT
            ENDIF
            s= LTRIM(SUBSTR(s,i0+1))
         ENDDO
      ENDFOR
   ENDWITH

RETURN nLines


FUNCTION GetMaxPosition(oObj, sValue, nWidth)
   * returns i1 where left(sValue,i1) - maximum substring that fits nWidth

   LOCAL i0, nWidth0, i1, nWidth1, i2, nWidth2, sFontStyle, nSize

   WITH oObj
      sFontStyle= GetFontStyle(oObj)
      nSize= FONTMETRIC(TM_AVECHARWIDTH, .FontName, .FontSize, sFontStyle) &&average symbol width in pixels

      i2= LEN(sValue)
      nWidth2= TXTWIDTH(sValue, .FontName, .FontSize, sFontStyle)*nSize &&line width
      IF nWidth2<=nWidth
         RETURN i2
      ENDIF

      i1= 0
      nWidth1= 0
      DO WHILE i2-i1>1
         i0= i1+INT((nWidth-nWidth1)/(nWidth2-nWidth1)*(i2-i1)) &&linear approach
         i0= IIF(i0<=i1, i1+1,IIF(i0>=i2, i2-1,i0)) &&correction, because function is not linear

         IF i0-i1>i2-i0 &&right substring is shorter then left one
            nWidth0= nWidth2-nSize*TXTWIDTH(SUBSTR(sValue,i0+1,i2-i0),;
            .FontName, .FontSize, sFontStyle) &&line width to i0

         ELSE &&left substring is shorter then right one
            nWidth0= nWidth1+nSize*TXTWIDTH(SUBSTR(sValue,i1+1,i0-i1),;
            .FontName, .FontSize, sFontStyle) &&line width to i0
         ENDIF

         DO CASE
            CASE nWidth0<=nWidth
               i1= i0
               nWidth1= nWidth0

            CASE nWidth0>nWidth
               i2= i0
               nWidth2= nWidth0

            OTHERWISE &&nWidth0=nWidth
               i1= i0
               EXIT
         ENDCASE
      ENDDO
   ENDWITH

RETURN i1

*==================================
FUNCTION GetFontStyle(oObj) &&FontStyle string for fontmetric procedure

   LOCAL rc

   rc= ""
   WITH oObj
      rc= rc+IIF(.FontBold, "B","")
      rc= rc+IIF(.FontItalic, "I","")
      rc= rc+IIF(.FontOutline, "O","")
      rc= rc+IIF(.FontShadow, "S","")
      rc= rc+IIF(.FontStrikethru,"-","")
      rc= rc+IIF(.FontUnderline, "U","")
   ENDWITH

   RETURN rc
ENDFUNC

lardecristo
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Re: Linhas Editbox

Mensagem por Rosangela Pires em 2/6/2016, 12:03

Amigo LardeCristo,

Obrigado pela sua ajuda.

Vou testar o seu exemplo.

Novamente agradeço sua ajuda, alias ajudas, sempre que necessito.
Suas soluções servem para mim, como acho para outros, com as mesmas dúvidas.

Obrigado

Rosangela

Rosangela Pires
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Re: Linhas Editbox

Mensagem por Rosangela Pires em 3/6/2016, 02:52

Amigo Lardecristo,

Funcionou perfeitamente a função.

Muito Obrigado.

Podemos dar como encerrado o tópico.

Rosangela

Rosangela Pires
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum