Foro | | | | - Página 1 - |
| Stephan Sonneborn | ¡Hola zusammen,
hay una Möglichkeit, una Editar auch vertikal mittig (auch oben y unten) auszurichten, ya que z.B. en uno Excel-Zelle va?
Horizontal va así:
DEF CreateEditC(6) CONTROL("EDIT" ,@$(2),$50000001,@%(3),@%(4),@%(5),@%(6),@%(1),106, %HInstance, $0200)
|
| | | Schöne Grüße aus Wittgenstein von Stephan
Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz | 27.02.2011 ▲ |
| |
| | « Dieser Contribución wurde como Solución gekennzeichnet. » | | Thomas Freier | Naja, si la Font no ajustable es es sin viel Rechnerei.
DEF GETSYSCOLOR(1) !"USER32","GetSysColor"
SET("TRUECOLOR",1)
CLS GETSYSCOLOR(15)
var hWnd&=%hwnd
Var Font1&=CreateButton(%hwnd,"Font-H = 12",400,40,100,30)
Var Font2&=CreateButton(%hwnd,"Font-H = 16",400,80,100,30)
Var Font3&=CreateButton(%hwnd,"Font-H = 22",400,120,100,30)
var Hdlg&=control("Static","",$54000106,10,50,300,80,%hwnd,5000,0)
var Edit&=control("Edit","",$50000005,0,0,0,0,Hdlg&,5000,0)
settext Edit&,"Bitte hier Texto eingeben"
Declarar Edi_Font&
SET_EDIT 16,32
mientras que 1
WaitInput
caso %key=2:BREAK
caso @Clicked(Font1&): SET_EDIT 12,36
caso @Clicked(Font2&): SET_EDIT 16,32
caso @Clicked(Font3&): SET_EDIT 22,28
wend
DeleteObject edi_Font&
end
Proc SET_EDIT
Parámetros x%,y%
Edi_Font& = CreateFont(Arial,x%,0,0,0,0)
SetFont Edit&,edi_Font&
SetWindowPos Edit&=0,y% - 300,x%+6;0
ENDPROC
|
| | | | | |
| | | ¡Hola Stephan,
M$ bietet el imho incluso no direkt a -
Yo podría una "CanvasEditControl" herstellen/ anbieten el "wie De todos modos geartete" Características besitzen kann pero yo sería wahrscheinlich sólo Próxima semana dazu kommen. |
| | | | |
| | Stephan Sonneborn | Hola si,
kein Pronlem. Schade, dass MS el no vorgesehen ha, En Statics tener ego hinbekommen,,,
Yo mich con el Canvas-Thema todavía no beschäftigt, Was steckt porque detrás de él? |
| | | Schöne Grüße aus Wittgenstein von Stephan
Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz | 27.02.2011 ▲ |
| |
| | | | | | | |
| | E.T. | Nur así como Gedanke: El Höhe des Edit's el verwendeten Font-Höhe adaptar (oder umgekehrt: el Höhe des Edits auslesen y el Font-Höhe adaptar) ...
War sólo así una Gedanke.... |
| | | Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 28.02.2011 ▲ |
| |
| | Thomas Freier | Naja, si la Font no ajustable es es sin viel Rechnerei.
DEF GETSYSCOLOR(1) !"USER32","GetSysColor"
SET("TRUECOLOR",1)
CLS GETSYSCOLOR(15)
var hWnd&=%hwnd
Var Font1&=CreateButton(%hwnd,"Font-H = 12",400,40,100,30)
Var Font2&=CreateButton(%hwnd,"Font-H = 16",400,80,100,30)
Var Font3&=CreateButton(%hwnd,"Font-H = 22",400,120,100,30)
var Hdlg&=control("Static","",$54000106,10,50,300,80,%hwnd,5000,0)
var Edit&=control("Edit","",$50000005,0,0,0,0,Hdlg&,5000,0)
settext Edit&,"Bitte hier Texto eingeben"
Declarar Edi_Font&
SET_EDIT 16,32
mientras que 1
WaitInput
caso %key=2:BREAK
caso @Clicked(Font1&): SET_EDIT 12,36
caso @Clicked(Font2&): SET_EDIT 16,32
caso @Clicked(Font3&): SET_EDIT 22,28
wend
DeleteObject edi_Font&
end
Proc SET_EDIT
Parámetros x%,y%
Edi_Font& = CreateFont(Arial,x%,0,0,0,0)
SetFont Edit&,edi_Font&
SetWindowPos Edit&=0,y% - 300,x%+6;0
ENDPROC
|
| | | | |
| | | Tiempo testen...
Cls
Var edit& = Crear("Edit", %hWnd, "Testtest", 10, 10, 200, 30)
Var edit2& = Control("EDIT", "TestTest", $54040000, 10, 50, 200, 30, %hwnd, 2001, %hInstance, $00020000)
Mientras que 1
WaitInput
Case %key=2: BREAK
EndWhile
|
| | | | |
| | Thomas Freier | Der Texto es en beiden Fällen oben links. Posesiones ni alte Fontauswahl instalado, con el de 12 a 28 px Fonthöhe alles a 90% mittig es. Jedenfalls en mi sistema.
$H Windows.ph
DEF GETSYSCOLOR(1) !"USER32","GetSysColor"
Def GetTextExtentPoint32(4) !"GDI32","GetTextExtentPoint32A"
Def ReleaseDC(2) !"USER32","ReleaseDC"
Def ApiChooseFont(1) ! "COMDLG32.DLL","ChooseFontA","#","%"
SET("TRUECOLOR",1)
CLS GETSYSCOLOR(15)
var hWnd&=%hwnd
Var Font1&=CreateButton(%hwnd,"Font",400,40,100,30)
var Hdlg&=control("Static","",$54000106,10,50,300,80,%hwnd,5000,0)
var Edit&=control("Edit","",$50000005,0,0,0,0,Hdlg&,5000,0)
settext Edit&,"Bitte hier Texto eingeben"
Declarar Edi_Font&
var Font$=Arial
var hoehe%=16
var Fett%=0
var Kursiv%=0
var Underline%=0
SET_EDIT
mientras que 1
WaitInput
caso %key=2:BREAK
If @Clicked(Font1&)
caso fett%=1 : fett%=500
LR_Font_Wahl Font$,(hoehe%*122),Fett%, Kursiv%
SET_EDIT
EndIf
wend
DeleteObject edi_Font&
end
Proc SET_EDIT
Edi_Font& = CreateFont(Font$,hoehe%,0,Fett%,Kursiv%,Underline%)
SetFont Edit&,edi_Font&
O_GetTextExtent GetText $(edit&),1'Longitud
var StringBreite& = &(0)
O_GetTextExtent GetText $(edit&),0'Höhe
var StringHoehe& = &(0)
var x!=hoehe%/10
SetWindowPos Edit&=0,22+(StringHoehe&/x!) - 300,(StringHoehe&+(x!*6));0
ENDPROC
Proc O_GetTextExtent
Parámetros _t$,_w%
declarar _size#,_text#,_result&,_hdc&
dim _text#,Len(_t $) + 1
dim _size#,8
String _text#,0 = _t$
_hdc& = ~GetDC(hWnd&)
GetTextExtentPoint32(_hdc&,_text#,Len(_t $),_size#)
_result& = Largo(_size#,4)
Case _w% : _result& = Largo(_size#,0)
ReleaseDC(hWnd&,_hdc&)
disponer _text#
disponer _size#
volver _result&
ENDPROC
Proc LR_Font_Wahl
Parámetros nFont$,nhoehe%,nFett%,nkurs%
Declarar logfont#, choosefont#
dim logfont#,80'-> muss gross genug ser, como sonst el NAME gekürzt se !
Largo logfont#,0=(nhoehe%/90)'FONTHeight 1000 entspricht 10
Largo logfont#,4=20'FONTWidth 1000 entspricht 10
Largo logfont#,8=0'
Largo logfont#,12=200'FONTOrientation
Largo logfont#,16=nFett%'FONTWeight - a 400 es normal, alles drüber heisst fett !
String logfont#,20=@Chr$(nkurs%)'Italic
String logfont#,21=@Chr$(Underline%)'Underline
String logfont#,22=""'StrikeOut
String logfont#,23="0"'CharSet
String logfont#,24="T"'OutPrecision
String logfont#,25="T"'ClipPrecision
String logfont#,26="0"'Quality
String logfont#,27="2"'PitchAndFamily
String logfont#,28=nFont$'FaceName
Dim choosefont#,60
Largo choosefont#,0 = 60'Longitud el Strukturvariable
Largo choosefont#,4 = %hwnd'Handle des Hauptfensters
Largo choosefont#,8 = 0'Instance-Handle des Hauptfensters
Largo choosefont#,12= logfont#'LogFontStruktur
Largo choosefont#,16 = 0'Pointsize
Largo choosefont#,20 = $00002341'Flags
Largo choosefont#,24 = rgb(0,0,0)'RGB - Voreinstellung y Valor el ausgelesen se
Largo choosefont#,28 = 0'Custdata
Largo choosefont#,32 = 0'Hook
long choosefont#,36= 0'Templatename
Largo choosefont#,40= 0'Hinstance
long choosefont#,44= 0'Lpszstyle
Largo choosefont#,48= $00000001'FONTtype
Largo choosefont#,52= 8'FONTSizeMin
Largo choosefont#,56= 36'FONTSizeMax
Decimals 0
apichoosefont(choosefont#)
if @Largo(choosefont#,16)/10 > 0' si Grösse = 0 wurde abgebrochen
'Farbe auslesen
'Imprimir @GetRValue(@long(choosefont#,24)),\
' @GetGValue(@long(choosefont#,24)),\
' @GetBValue(@long(choosefont#,24))," <- Textfarbe RGB"
'Atributos auslesen
Hoehe%=(@word(choosefont#,16)/10)
Font$=@cadena$(logfont#,28)
Kursiv%=@Ord(@cadena$(logfont#,20))
Underline%=@Ord(@cadena$(logfont#,21))
Fett%=@Largo(logfont#,16)
if Fett% > 400
Fett%=1
más
Fett%=0
endif
endif
Disponer logfont#
Disponer choosefont#
ENDPROC
|
| | | | |
| | Stephan Sonneborn | Thomas Freier (28.02.11)
Naja, si la Font no ajustable es es sin viel Rechnerei.
Hi Thomas,
funzt prima! Der Font se sólo una vez programmtechnisch eingestellt y restos entonces unveränderlich.
Vielen Dank!!! |
| | | Schöne Grüße aus Wittgenstein von Stephan
Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz | 28.02.2011 ▲ |
| |
| | Stephan Sonneborn | ¡Hola zusammen,
Yo el Presentación por Thomas todavía algo ergänzt...
'************************************************************************************************
'* Vertikal zentriertes Editar campo Built: 01.03.2011 *
'* optional links, rechts oder mittig ausgerichtet (ggf. sólo Pagar erlaubt) *
'* después de uno Presentación por Thomas Freier *
'* erweitert por Stephan Sonneborn *
'************************************************************************************************
DEF GETSYSCOLOR(1) !"USER32","GetSysColor"
'+----------------------------------------------------------------------------------------------+
DECLARE Font&, Edit&, THeight%
DECLARE LastDlgID&
'+----------------------------------------------------------------------------------------------+
'************************************************************************************************
'* Einzel-IDs para Dialogelemete generieren *
'************************************************************************************************
PROC NewID
DECLARE ID&
'+----------------------------------------------------------------------------------------------+
LastDlgID& = LastDlgID& + 1
ID& = LastDlgID&
'+----------------------------------------------------------------------------------------------+
RETORNO ID&
'+----------------------------------------------------------------------------------------------+
ENDPROC
'************************************************************************************************
'************************************************************************************************
'* Vertikal zentriertes Editar campo *
'************************************************************************************************
PROC CreateEditVert
PARAMETERS hParent&, Texto$, x1%, y1%, dx%, dy%, TSize%, Alignment%, Number%
'hParent : Handle des Elterfensters
'Texto$ : Vorgabetext
'x1%, y1% : linke obere Ecke des "Editfeldes"
'dx%, dy% : Größe des "Editfeldes"
'TSize% : Texthöhe en el Editar campo
'Alignment%: 0 => links, 1 => mittig, 2 => rechts ausgerichtet
' Number% : <> 0 => sólo Zahleneingabe erlaubt
DECLARE hStatic&, hEdit&
DECLARE EHeight%, Style&
'+----------------------------------------------------------------------------------------------+
EHeight% = TSize% + 6
Style& = $50000080 + Alignment%
Case Number%: Style& = Style& + $2000
hStatic& = CONTROL("Static","" ,$54001106 ,x1%,y1%,dx%,dy%,hParent&,NEWID(),0)
hEdit& = CONTROL("Edit" ,Texto$, Style&, 0, 0, 0, 0,hStatic&,NewID(),0)
SETWINDOWPOS hEdit& = 0, ((dy%-TSize%)/2) - dx%, EHeight%; 0
'+----------------------------------------------------------------------------------------------+
RETORNO hEdit&
'+----------------------------------------------------------------------------------------------+
ENDPROC
'************************************************************************************************
'************************************************************************************************
SET("TRUECOLOR",1)
CLS GETSYSCOLOR(15)
'+----------------------------------------------------------------------------------------------+
THeight% = 30
Font& = CREATEFONT (Arial,THeight%,0,0,0,0)
Edit& = CreateEditVert(%HWND, "",10,50,300,80,THeight%,1, 0)'Texteingabe
'Edit& = CreateEditVert(%HWND, "",10,50,300,80,THeight%,1, 1) 'Zahleneingabe
SETFONT Edit&, Font&
SETTEXT Edit&,"Bitte hier Texto eingeben"
'+----------------------------------------------------------------------------------------------+
LOCATE 1,1
PRINT "Weiter con F1"
'+----------------------------------------------------------------------------------------------+
WHILE 1
WAITINPUT
CASE %KEY = 5: BREAK
WEND
'+----------------------------------------------------------------------------------------------+
PRINT "Text en el Editar campo: ", GETTEXT$(Edit&)
PRINT "Ende con Mausklick."
'+----------------------------------------------------------------------------------------------+
WAITINPUT
'+----------------------------------------------------------------------------------------------+
DELETEOBJECT Font&
FIN
'************************************************************************************************
|
| | | Schöne Grüße aus Wittgenstein von Stephan
Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz | 01.03.2011 ▲ |
| |
| | Thomas Freier | Und todavía una reduziertes Ejemplo con "Blinden Editar-Feldern", el Yo verwende en "Namensschilder" en una Bootsplatz(hier sin Hintergrundgrafik) anzulegen, ser editado y a mover.
DEF GetSysColor(1) !"USER32","GetSysColor"
Def APISetCursorPos(2) ! "USER32","SetCursorPos"
Def WindowFromPoint(2)!"USER32","WindowFromPoint"
Def GetCursorPos(1) !"USER32","GetCursorPos"
Declarar p#,h&
Dim p#,8
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Def GetTextExtentPoint32(4) !"GDI32","GetTextExtentPoint32A"
Def ReleaseDC(2) !"USER32","ReleaseDC"
Def GetDC(1) !"USER32","GetDC"
declarar x%,y%
Proc GetTextExtent
Parámetros _t$,_w%
declarar _size#,_text#,_result&,_hdc&
dim _text#,Len(_t $) + 1
dim _size#,8
String _text#,0 = _t$
_hdc& = GetDC(GetActiveWindow())
GetTextExtentPoint32(_hdc&,_text#,Len(_t $),_size#)
_result& = Largo(_size#,4)
Case _w% : _result& = Largo(_size#,0)
ReleaseDC(GetActiveWindow(),_hdc&)
disponer _text#
disponer _size#
volver _result&
ENDPROC
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Def @Clienttoscreen(2) !"USER32","ClientToScreen"
Def @G2lx(0) @Largo(C2sstrc #0)
Def @G2ly(0) @Largo(C2sstrc #4)
Proc G2l
Parámetros Hdl&
Claro C2sstrc#
@Clienttoscreen(%Hwnd,C2sstrc#)
x%=@G2lx()
y%=@G2ly()
Claro C2sstrc#
@Clienttoscreen(Hdl&,C2sstrc#)
x%=@G2lx()-x%
y%=@G2ly()-y%
ENDPROC
Declarar C2sstrc#
Dim C2sstrc#,8
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SubClassProc
caso SubClassMessage(h&, $201): PostMessage(h&, $A1, $2, 0)
ENDPROC
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ventana 1000,600
Título de la ventana "Blindes Editar-Feld, después doble clic en la izquierda verschiebbar, después de Rechtsklick" + \
" editierbar - Linksklick en el Ventana = tomar, Rechtsklick en el Ventana = neues Edit"
UseFont Arial,16,0,0,0,0
CLS GETSYSCOLOR(15)
var LV_Font&=CreateFont(Arial,15,0,0,0,0)
SETDIALOGFONT LV_Font&
Declarar b.obj&[],b.x%[],b.x1%[],b.y%[],b.y1%[], b.text$[],b.lage$[]
Declarar b.xn%
Declarar pic1&
b.xn%=1
b.x%[b.xn%]=400
b.y%[b.xn%]=320
b.texto$[b.xn%]="K. Smith"
b.lage$[b.xn%]="S"
Boot_obj b.xn%
Subclass b.obj&[b.xn%],1
b.xn%=2
b.x%[b.xn%]=428
b.y%[b.xn%]=320
b.texto$[b.xn%]="E. Wassermann"
b.lage$[b.xn%]="S"
Boot_obj b.xn%
Subclass b.obj&[b.xn%],1
b.xn%=3
b.x%[b.xn%]=200
b.y%[b.xn%]=200
b.texto$[b.xn%]="K. Smith"
b.lage$[b.xn%]="W"
Boot_obj b.xn%
Subclass b.obj&[b.xn%],1
b.xn%=4
b.x%[b.xn%]=200
b.y%[b.xn%]=228
b.texto$[b.xn%]="E. Wassermann"
b.lage$[b.xn%]="W"
Boot_obj b.xn%
Subclass b.obj&[b.xn%],1
b.xn%=4
Mientras que 1
WaitInput
Case %key=2:Romper
Whileloop b.xn%
G2l b.obj&[&bucle]
b.x%[&bucle]=x%
b.y%[&bucle]=y%
EndWhile
GetCursorPos(p #)
h&=WindowFromPoint(Largo(p #,0),Largo(p #,4))
if %MouseKey=2' si no movido voluntad se: %MouseKey=1
x%=1
Whileloop b.xn%' Anzahl los objetos
if Ratón(B.x%[&bucle],b.y%[&bucle] - (B.x%[&bucle]+b.x1%[&bucle]),(B.y%[&bucle]+b.y1%[&bucle]))
ShowWindow(b.obj&[&bucle],0)
Element_Edit &bucle' EDIT-Feld vorhandenes Objeto
Subclass b.obj&[&bucle],1
x%=0
romper
endif
wend
if x%=1
inc b.xn%
b.x%[b.xn%]=%MouseX
b.y%[b.xn%]=%MouseY
b.texto$[b.xn%]=""
b.lage$[b.xn%]="W"
b.x1%[b.xn%]=120
Element_Edit b.xn%' EDIT-Feld neues Objeto
Subclass b.obj&[b.xn%],1
endif
SetFocus(%HWND)
endif
EndWhile
DeleteObject LV_Font&
DeleteObject pic1&
Whileloop b.xn%
Subclass b.obj&[&bucle],0
EndWhile
Disponer C2sstrc#
Disponer p#
End
Proc Boot_obj
Parámetros b.xi%
UseFont Arial,(16+2),0,0,0,0
GetTextExtent b.text$[B.xi%],1'Textlänge
b.x1%[B.xi%] = &(0)+0'Longitud
GetTextExtent b.text$[B.xi%],0
b.y1%[B.xi%] = &(0)+4'Höhe
If trim$(b.lage $[B.xi%]="S")'Longitud+Höhe a cambio perpendicular
x%=b.y1%[B.xi%]
b.y1%[B.xi%]=b.x1%[B.xi%]
b.x1%[B.xi%]=x%
endif
MCLS b.x1%[B.xi%], b.y1%[B.xi%] ,RGB(255,255,255)
StartPaint -1
USEP 0, 1, @RGB(192, 192, 192)
Rectángulo 0,0-b.x1%[B.xi%], b.y1%[B.xi%]
Color del texto @RGB(0,0,0), -1
If trim$(b.lage $[B.xi%]="W")
Conjunto("Orientación", 0)
UseFont Arial,16,0,0,0,0
DrawText 2, 2, b.text$[B.xi%]
ElseIf trim$(b.lage $[B.xi%]="S")
Conjunto("Orientación", 2700)
UseFont Arial,(16-1),0,0,0,0
DrawText b.x1%[B.xi%]-2, 2, b.text$[B.xi%]
Endif
Endpaint
Conjunto("Orientación", 0)
pic1&=Crear("HPIC",0,"& MEMBMP" )
b.obj&[B.xi%]=Control("DIÁLOGO","",$54001100,b.x%[B.xi%], b.y%[B.xi%], b.x1%[B.xi%], b.y1%[B.xi%],%hwnd,0,%hInstance,$0)
Crear("Mapa de bits",b.obj&[B.xi%], pic1&,0, 0)
ENDPROC
Proc Element_Edit
Parámetros b.xi%
var edi.x%= b.x1%[B.xi%]
caso b.lage$[B.xi%]="S" : edi.x%= b.y1%[B.xi%]
var Element&= CreateEdit(%hwnd,b.text$[B.xi%],b.x%[B.xi%], b.y%[B.xi%],120 , 22)
SetFont Element&,LV_Font&
var Element1&=Crear("GroupBox",%hwnd,"",b.x%[B.xi%], (B.y%[B.xi%]-38),120,30)
CreateText(Element1&,"",2,10,116,18)
var hor&=Crear("Radio Button",%hwnd,"",(B.x%[B.xi%]+4),(B.y%[B.xi%]-25),12,12)
var t1&=CreateText(Element1&,"0°",18,11,14,16)
var sen&=Crear("Radio Button",%hwnd,"",(B.x%[B.xi%]+38),(B.y%[B.xi%]-25),12,12)
var t2&=CreateText(Element1&,"90°",56,11,22,16)
var t3&=Crear("Button",Element1&,"F",90,10,18,18)
@Crear("Tooltip",%hwnd,t3&,"Font wählen")
SetFont hor&,LV_Font&
SetFont t1&,LV_Font&
SetFont t2&,LV_Font&
SetFont t3&,LV_Font&
If trim$(b.lage $[B.xi%]="W")
SetCheck hor&,1
más
SetCheck sen&,1
EndIf
SendString(Element&,"+ ({FIN})")'Resalte el texto y el cursor a la Ende
Mientras que 1
WaitInput
If GetFocus(%hwnd)
b.texto$[B.xi%] = GetText $(Element&)
If GetCheck(hor&)
b.lage$[B.xi%]="W"
Más
b.lage$[B.xi%]="S"
EndIf
BREAK
endif
wend
DestroyWindow(Element&)
DestroyWindow(Element1&)
DestroyWindow(hor&)
DestroyWindow(sen&)
Boot_obj b.xi%' Nuevo objeto de texto
ENDPROC
|
| | | | |
|
RespuestaTema opciones | 13.450 Views |
ThemeninformationenDieses Thema ha 5 subscriber: |