forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=13)
-   -   Подсчет и ограничение символов в Input() (http://forum.boolean.name/showthread.php?t=8702)

ArtemkA 23.07.2009 02:01

Подсчет и ограничение символов в Input()
 
Доброй ночи ;)

Подскажите как можно подсчитать кол-во символов в Input() и недать писать дльше если кол-во символов >= 5 ??? Хотел попробовать через Len() но когда включен Input() то цикл программы останавливаеться...

jimon 23.07.2009 02:09

Ответ: Подсчет и ограничение символов в Input()
 
ArtemkA
очевидно - написать свой input

ArtemkA 23.07.2009 02:15

Ответ: Подсчет и ограничение символов в Input()
 
или попробовать через какой нить ГУИ? Лан, попробую через GUIw512 ;)
может че нить получиться...

ABTOMAT 23.07.2009 17:36

Ответ: Подсчет и ограничение символов в Input()
 
Цитата:

через GUIw512
Мона и так
А я если что свой гуй юзаю (своя рубашка ближе к телу)

Nex 24.07.2009 00:04

Ответ: Подсчет и ограничение символов в Input()
 
ABTOMAT, а можешь свой гуй выложить? Хочу посмотреть, как по нормальному делать гуй. :)

ABTOMAT 24.07.2009 00:16

Ответ: Подсчет и ограничение символов в Input()
 
Тогда смотри лучше на GUIw512
А мой сделан так, что отдельно от менеджера ресурсов работаеть не будет -> и его выкладывать надо

ArtemkA 24.07.2009 01:38

Ответ: Подсчет и ограничение символов в Input()
 
блин, чета через этот GUIw512 неполучаеться :(

в ТекстБоксе символы пишуться очень тормозмно... допустим 10 раз подрочишь клавишу "А" и только с одиннадцатого она напишеться....подумал что нехватате ФПС, поставил Flip 0 стало чуть-чуть побыстрее, но все равно нето :(...че может быть?

при Flip - FPS = 75-74
при Flip 0 - FPS = 492 - 511

------------------------------------------------------------
Уже разобрался....сделал его глобальным, скрыл и в маин цикле сделал видимым...работате :)

impersonalis 24.07.2009 02:32

Ответ: Подсчет и ограничение символов в Input()
 
Код:

Global ImperCoolInput_LastUpdTime%=0
Global ImperCoolInput_Cur%=0

Type ImperCoolInput
        Field S$
        Field Focus%
        Field x%
        Field y%
        Field H%
        Field W%
        Field MLen%
End Type

Function ImperCoolInput_Create.ImperCoolInput(x%,y%,L%,H%)
        ICI.ImperCoolInput=New ImperCoolInput
        ICI\x=x
        ICI\y=y
        ICI\MLen=L
        ICI\H=H
        ICI\W=ICI\MLen*StringWidth("W")
        ICI\S=""
        ICI\Focus=False
        Return ICI
End Function

Function ImperCoolInput_Delete(ICI.ImperCoolInput)
        If ICI=Null Return
        Delete ICI
End Function

Function ImperCoolInput_Draw(ICI.ImperCoolInput,Cur%)
        If ICI=Null Return
        Color 224,223,227
        Rect ICI\x,ICI\y,ICI\W+1,ICI\H
        If ICI\Focus
                If Cur
                        Color 0,0,0
                        Rect ICI\x+StringWidth(ICI\S)+1,ICI\y+1,4,ICI\H-2
                EndIf
        EndIf
        Color 0,0,0
        Text ICI\x,ICI\y,ICI\S
End Function

Function ImperCoolInput_INPUT(ICI.ImperCoolInput)
        If ICI=Null Return
        Local c%=GetKey()
        If Not c Return
        Select c
                Case 8
                        If Len(ICI\S)
                                ICI\S=Left(ICI\S,Len(ICI\S)-1)
                        EndIf
                Default
                        If Len(ICI\S)<ICI\MLen
                                ICI\S=ICI\S+Chr(c)
                        EndIf
        End Select
End Function

Function ImperCoolInput_GetText$(ICI.ImperCoolInput)
        Return ICI\S
End Function

Function ImperCoolInput_SetFocus(ICI.ImperCoolInput,FL=True)
        If ICI=Null Return
        If FL
                ImperCoolInput_SetFocus(ImperCoolInput_GetFocus(),False)
        EndIf
        ICI\Focus=FL
End Function

Function ImperCoolInput_GetFocus.ImperCoolInput()
        For ICI.ImperCoolInput=Each ImperCoolInput
                If ICI\Focus
                        Return ICI
                EndIf
        Next       
End Function

Function ImperCoolInput_GetCoordSel.ImperCoolInput(x%,y%)
        For ICI.ImperCoolInput=Each ImperCoolInput
                If x>ICI\x And x<=ICI\x+ICI\W And y>ICI\y And y<ICI\y+ICI\H
                        Return ICI
                EndIf
        Next       
End Function

Function ImperCoolInput_DrawAll()
        If MilliSecs()-ImperCoolInput_LastUpdTime>=500
                ImperCoolInput_LastUpdTime=MilliSecs()
                ImperCoolInput_Cur=Not ImperCoolInput_Cur
        EndIf
        For ICI.ImperCoolInput=Each ImperCoolInput
                ImperCoolInput_Draw(ICI,ImperCoolInput_Cur)
        Next
End Function

Function ImperCoolInput_UpdateAll()
        For ICI.ImperCoolInput=Each ImperCoolInput
                If ICI\Focus
                        ImperCoolInput_INPUT(ICI)
                EndIf
        Next
End Function

Function ImperCoolInput_DeleteAll()
        For ICI.ImperCoolInput=Each ImperCoolInput
                ImperCoolInput_Delete(ICI)
        Next
End Function
;==================
;DEMO CODE

Graphics 800,600,32
SetBuffer BackBuffer()
Local Font=LoadFont("Arial cyr",30)
SetFont Font
Local A.ImperCoolInput
A=ImperCoolInput_Create(10,10,5,FontHeight())
A=ImperCoolInput_Create(10,10+FontHeight()*2,6,FontHeight())
A=ImperCoolInput_Create(10,10+FontHeight()*4,10,FontHeight())
A=ImperCoolInput_Create(10,10+FontHeight()*6,15,FontHeight())
ImperCoolInput_SetFocus(A)

While Not KeyHit(1)
        Cls
        If MouseHit(1)
                ImperCoolInput_SetFocus(ImperCoolInput_GetCoordSel(MouseX(),MouseY()))
                A=ImperCoolInput_GetFocus()
        EndIf
        ImperCoolInput_UpdateAll()
        ImperCoolInput_DrawAll()
        AppTitle "current Text= "+ImperCoolInput_GetText(A)
        Flip
Wend
ImperCoolInput_DeleteAll()
End

БЛИН! Пишу ГовноКод только потому, что убивает - элементарная задача,а решения до сих пор не видать!

ArtemkA 24.07.2009 02:37

Ответ: Подсчет и ограничение символов в Input()
 
impersonalis, зачем же так убиваться? Проблем ведь я уже решил с помощью ГУИ.
Цитата:

Уже разобрался....сделал его глобальным, скрыл и в маин цикле сделал видимым...работате


Часовой пояс GMT +4, время: 09:33.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot