Cool, but...
ResizeWindow(1,GadgetX(.)+WindowX(0,Inside)-[WindowX(0,Inside)-WindowX(0)]-#StringGadgetBorder
Code: Select all
Global StringGadgetOffset
Procedure StringGadgetInitialize(GadgetID)
#StringGadgetBorder=6
#StringGadgetHeight=28
Protected hdc
Protected fsz.Size
Protected Rect.Rect
Protected font
font=GetGadgetFont(GadgetID)
GadgetID=GadgetID(GadgetID)
hdc=GetDC_(GadgetID)
SelectObject_(hdc,font)
GetTextExtentPoint32_(hdc,"|",1,fsz)
ReleaseDC_(GadgetID,hdc)
GetWindowRect_(GadgetID,Rect)
StringGadgetOffset=Rect\bottom-Rect\top
StringGadgetOffset=StringGadgetOffset>>1-fsz\cy<<4/20; cy*16/20 (Text eher weiter oben) bis cy*16/22 (eher weiter unten)
EndProcedure
Procedure StringGadgetAlignment(GadgetID)
Protected hwndEdit
Protected erect.Rect
hwndEdit=GadgetID(GadgetID)
GetClientRect_(hwndEdit,eRect)
erect\left=#StringGadgetBorder
eRect\top=StringGadgetOffset
eRect\bottom=#StringGadgetHeight
SendMessage_(hwndEdit,#EM_SETRECT,0,eRect)
EndProcedure
Procedure ResizeComboGadget(gadget,x,y,width,height)
ResizeGadget(gadget,x,y,width,height)
If GetActiveGadget()<>gadget
SendMessage_(GadgetID(gadget),#CB_SETEDITSEL,0,-1)
EndIf
EndProcedure
Enumeration 1000
#keyF4
#keyOk
#keyCancel
#keyEscape
EndEnumeration
WinID=OpenWindow(0,0,0,400,200,"",#WS_SYSMENU|#PB_Window_ScreenCentered|#PB_Window_SizeGadget|#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget)
TextGadget(1,20,30,60,20,"Datei&name:",#SS_CENTERIMAGE)
ComboBoxGadget(2,95,29,207,22,#PB_ComboBox_Editable)
TextGadget(4,20,80,75,20,"&Erweiterung:",#SS_CENTERIMAGE)
ComboBoxGadget(5,95,79,125,22,#PB_ComboBox_Editable)
SetGadgetText(2,"Press F4 to edit....")
SetGadgetText(5,"Press F4 to edit....")
r.rect
AdjustWindowRectEx_(r,#PB_Window_BorderLess|#WS_THICKFRAME,0,0)
EditOffsetX=-r\left
EditOffsetY=-r\top
OpenWindow(1,0,0,800+EditOffsetX<<1,#StringGadgetHeight+EditOffsetY<<1,"",#PB_Window_Invisible|#PB_Window_BorderLess,WinID)
SetWindowLongPtr_(WindowID(1),#GWL_STYLE,GetWindowLongPtr_(WindowID(1),#GWL_STYLE)|#WS_THICKFRAME)
StringGadget(9,0,0,800,#StringGadgetHeight,"",#ES_MULTILINE)
StringGadgetInitialize(9)
StringGadgetAlignment(9)
AddKeyboardShortcut(0,#PB_Shortcut_F4,#keyF4)
AddKeyboardShortcut(0,#PB_Shortcut_Escape,#keyEscape)
AddKeyboardShortcut(1,#PB_Shortcut_F4,#keyOk)
AddKeyboardShortcut(1,#PB_Shortcut_Return,#keyOk)
AddKeyboardShortcut(1,#PB_Shortcut_Escape,#keyCancel)
SetActiveGadget(2)
Repeat
Select WaitWindowEvent()
Case #PB_Event_Menu,#PB_Event_Gadget
etype=EventType()
egadget=EventGadget()
Select egadget
Case #keyOk
If EditMode
HideWindow(1,1)
DisableWindow(0,0)
SetGadgetText(EditMode,GetGadgetText(9))
SetActiveGadget(EditMode)
EditMode=0
EndIf
Case #keyCancel
If EditMode
HideWindow(1,1)
DisableWindow(0,0)
SetActiveGadget(EditMode)
EditMode=0
EndIf
Case #keyF4
n=GetActiveGadget()
If n>0 And GadgetType(n)=#PB_GadgetType_ComboBox
SetGadgetText(9,GetGadgetText(n))
EditMode=n
n=WindowX(0,#PB_Window_InnerCoordinate)-WindowX(0)
ResizeWindow(1,GadgetX(EditMode)+WindowX(0,#PB_Window_InnerCoordinate)-n-#StringGadgetBorder+1,GadgetY(EditMode)+WindowY(0,#PB_Window_InnerCoordinate)-EditOffsetY-StringGadgetOffset,#PB_Ignore,#PB_Ignore)
DisableWindow(0,1)
HideWindow(1,0)
SetActiveGadget(9)
EndIf
Case #keyEscape
End
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
ForEver