Krasser Aufwand um den Text vertikal zentrieren zu können. Da wäre eine Konstante mal fällig
Das #SS_CENTERIMAGE nur bei TextGadget funktioniert habe ich mir schon gedacht. Hätte aber keine Idee gehabe wie ich das sonst realisieren kann und darum gefragt.
Nun bin ich im Moment auf dem Tripp meine kleinen Programmchen alle WindowBorderless zu erstellen. Ist wohl gerade so eine Macke von mir. Ich designe gern
und genau hier liegt leider der Hund begraben. Deine VerticalAlign Procedure funktioniert wunderbar, aber natürlich, wie kann es anders sein, nicht mit einem Borderless Window
Habe es rausgefunden. Da kein reales Fenster vorhanden ist, geht der Fokus verloren. Um dies zu verhindern muss hinzu:
Danke für den hilfreichen Tipp. Das man Unterverzeichnisse extra anlegen muss, habe ich mich schon belesen und dies Schritt für Schritt abarbeiten muss.
Danke dir. Aber ich werd schon noch auf diverse Probleme stoßen. Spätestens wenn ich anfangen will die Ganzen Daten die man durch Drag and Drop reinziehen kann, in den erstellten Ordner kopieren zu wollen.
Hier noch mein Neuer Code ( da bug'd mein Minimieren Button noch- wenn ich das Tool minimiere und wieder maximiere und dann nur mit der Maus über den Minimieren Button gehe, minimiert es das Fenster nochmal ? ) ist zwar ein cooler MausOver Effekt aber so nicht gedacht):
Code: Alles auswählen
Enumeration
#Window_0
#EingabeFeld_Name
#Btn_Erstellen
#container2
#Font_Btn_Erstellen
#TargetFiles
#SourceFiles
#EingabeFeld_Name_Font
#Btn_MakeDir
#Font_Btn_MakeDir
#container
#Infobar
#Infobar_Font
#Gadget_exit
#Exit_btn
#Btn_Minimize
#Gadget_Minimize
EndEnumeration
;////////////////////////////////////
; DEFINIERE EXIT BUTTON BILD
;////////////////////////////////////
CreateImage(#Exit_btn,30,30)
StartDrawing(ImageOutput(#Exit_btn))
FillArea(1,1,-1,RGB(55, 110, 133))
Line(6,23,18,-18,$FFFFFF)
Line(6,6,18,18,$FFFFFF)
StopDrawing()
;////////////////////////////////////
; DEFINIERE MINIMIEREN BUTTON
;////////////////////////////////////
CreateImage(#Btn_Minimize,30,30)
StartDrawing(ImageOutput(#Btn_Minimize))
FillArea(1,1,-1,RGB(55, 110, 133))
Line(6,23,18,1,$FFFFFF)
;Line(6,6,18,18,$FFFFFF)
StopDrawing()
;////////////////////////////////////
; DEFINIERE START UP EFFEKT, FADE IN
;////////////////////////////////////
#AW_BLEND = $80000 ;Uses a fade effect. This flag can be used only If hwnd is a top-level window.
Define.l Event, EventWindow, EventGadget, EventType, EventMenu
; Festlegen, dass Im StringGadget der Text Vertikal zentriert wird
Procedure StringGadgetVCenter(GadgetID)
hwndEdit = GadgetID(GadgetID)
LineCount = SendMessage_(hwndEdit,#EM_GETLINECOUNT, 0, 0)
hdc = GetDC_(hwndEdit)
SelectObject_(hdc,GetGadgetFont(GadgetID))
GetTextExtentPoint32_(hdc,"ABC",3,fsz.SIZE)
ReleaseDC_(hwndEdit,hdc)
GetClientRect_(hwndEdit,eRect.RECT)
eRect\top = (GadgetHeight(GadgetID) - fsz\cy * LineCount) / 2
eRect\bottom = eRect\top + (fsz\cy * LineCount) + 4
If eRect\bottom < GadgetHeight(GadgetID)
SendMessage_(hwndEdit,#EM_SETRECT,0,eRect)
EndIf
EndProcedure
Procedure OpenWindow_Window_0()
OpenWindow(#Window_0, 502, 158, 500, 600, "FastRel v1", #PB_Window_BorderLess|#PB_Window_ScreenCentered|#WS_VISIBLE)
; FENSTER FARBE
SetWindowColor(0, RGB(109, 145, 160))
; FOKUS AUF TOOL SETZEN
SetActiveWindow(#Window_0)
;////////////////////////////////////
; TOOL TITEL INFOBAR
;////////////////////////////////////
TextGadget(#Infobar,WindowWidth(#Window_0)-499, 1, 438, 30, " FastRel v1",#SS_CENTERIMAGE)
SetGadgetFont(#Infobar, LoadFont(#Infobar_Font, "Microsoft Sans Serif", 10, #PB_Font_HighQuality))
SetGadgetColor(#Infobar , #PB_Gadget_BackColor, RGB(55, 110, 133)) ;TEXT Background Color
SetGadgetColor(#Infobar , #PB_Gadget_FrontColor, RGB(248, 248, 248));TEXT Color
;////////////////////////////////////
; EXIT BUTTON POSITIONIEREN
;////////////////////////////////////
ImageGadget(#Gadget_exit,WindowWidth(0)-31,1,30,30,ImageID(#Exit_btn))
;////////////////////////////////////
; MINIMIZE BUTTON POSITIONIEREN
;////////////////////////////////////
ImageGadget(#Gadget_Minimize,WindowWidth(0)-61,1,30,30,ImageID(#Btn_Minimize))
;////////////////////////////////////
; EINGABEFELD FÜR ORDNER NAME
;////////////////////////////////////
StringGadget(#EingabeFeld_Name, 30, 60, 440, 35,"Ordner Name eingeben",#PB_String_BorderLess | #ES_MULTILINE);
SetGadgetFont(#EingabeFeld_Name, LoadFont(#EingabeFeld_Name_Font, "Microsoft Sans Serif", 10, #PB_Font_HighQuality))
StringGadgetVCenter(#EingabeFeld_Name)
SetGadgetColor(#EingabeFeld_Name , #PB_Gadget_BackColor, RGB(183, 201, 209))
SetGadgetColor(#EingabeFeld_Name , #PB_Gadget_FrontColor, RGB(17, 80, 108))
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
; 1px RAHMEN UM DEN BUTTON: ORDNER ERSTELLEN
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
TextGadget(#container,338, 109, 132, 32,"")
SetGadgetColor(#container, #PB_Gadget_BackColor, RGB(183, 201, 209));TEXT Background Color
;////////////////////////////////////
; BUTTON ORDNER ERSTELLEN
;////////////////////////////////////
TextGadget(#Btn_MakeDir, 339, 110, 130, 30, "Verzeichnis anlegen",#SS_CENTERIMAGE|#SS_NOTIFY|#SS_CENTER)
SetGadgetFont(#Btn_MakeDir, LoadFont(#Font_Btn_MakeDir, "Microsoft Sans Serif", 9, #PB_Font_HighQuality)) ; Button Font
SetGadgetColor(#Btn_MakeDir, #PB_Gadget_BackColor, RGB(109, 145, 160)) ;TEXT Background Color
SetGadgetColor(#Btn_MakeDir, #PB_Gadget_FrontColor, RGB(183, 201, 209));TEXT Color
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
; 1px RAHMEN UM DEN BUTTON: ALLES ERSTELLEN
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
TextGadget(#container2,96, 509, 307, 67,"")
SetGadgetColor(#container2, #PB_Gadget_BackColor, RGB(183, 201, 209));TEXT Background Color
;////////////////////////////////////
; BUTTON ALLES ERSTELLEN
;////////////////////////////////////
TextGadget(#Btn_Erstellen, 97, 510, 305, 65, "erstellen",#SS_CENTERIMAGE|#SS_NOTIFY|#SS_CENTER)
SetGadgetFont(#Btn_Erstellen, LoadFont(#Font_Btn_Erstellen, "Microsoft Sans Serif", 9, #PB_Font_HighQuality)) ; Button Font
SetGadgetColor(#Btn_Erstellen, #PB_Gadget_BackColor, RGB(109, 145, 160)) ;TEXT Background Color
SetGadgetColor(#Btn_Erstellen, #PB_Gadget_FrontColor, RGB(183, 201, 209));TEXT Color
;////////////////////////////////////
; ERSTELL ZIEL FÜR DRAG & DROP DATEIEN
;////////////////////////////////////
ListIconGadget(#TargetFiles, 30, 175, 440, 280, "Drop Files here", 250)
SetGadgetColor(#TargetFiles , #PB_Gadget_BackColor, RGB(55, 110, 133)) ;TEXT Background Color
SetGadgetColor(#TargetFiles , #PB_Gadget_FrontColor, RGB(248, 248, 248));TEXT Color
;////////////////////////////////////
; DRAG & DROP ZIEL FREIGESCHALTEN
;////////////////////////////////////
EnableGadgetDrop(#TargetFiles, #PB_Drop_Files, #PB_Drag_Copy)
;EndIf
EndProcedure
OpenWindow_Window_0()
;////////////////////////////////////
; TOOL START UP EFFEKT
;////////////////////////////////////
AnimateWindow_(WindowID(0),500,#AW_BLEND)
Repeat
Event = WaitWindowEvent()
EventGadget = EventGadget()
EventType = EventType()
If Event = #PB_Event_Gadget
Select EventGadget()
;////////////////////////////////////
;- EINGABEFELD
;////////////////////////////////////
Case #EingabeFeld_Name
;Auto select on Focus
If EventType() = #PB_EventType_Focus
SendMessage_(GadgetID(EventGadget()), #EM_SETSEL, Len(GetGadgetText(EventGadget())), 0)
EndIf
;////////////////////////////////////
;- ERSTELL ORDNER VON EINGABE
;////////////////////////////////////
Case #Btn_MakeDir
CreateDirectory(GetPathPart(ProgramFilename()) + GetGadgetText(#EingabeFeld_Name));+ " "
SetGadgetText(#EingabeFeld_Name," Ordner wurde erstellt")
;////////////////////////////////////
;- BUTTON - ERSTELLEN
;////////////////////////////////////
Case #Btn_Erstellen
MessageRequester("Error", "dieser Button hat keine Funktion, Kaufen sie die Vollversion",#PB_MessageRequester_Ok|#PB_Window_ScreenCentered)
;////////////////////////////////////
;- EXIT BUTTON FUNCTION
;////////////////////////////////////
Case #Gadget_exit
End
;////////////////////////////////////
;- MINIMIZE BUTTON FUNCTION
;////////////////////////////////////
Case #Gadget_Minimize
If EventType = #PB_EventType_LeftClick
SetWindowState(#Window_0, #PB_Window_Minimize)
EndIf
EndSelect
EndIf
;////////////////////////////////////
;- DRAG WINDOW MIT MAUS
;////////////////////////////////////
Select Event
Case #WM_LBUTTONDOWN
SendMessage_(WindowID(#Window_0), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
EndSelect
;////////////////////////////////////////////////////////////////////////
;- DRAG & DROP START EVENT on the source gadgets, initiate a drag & drop
;////////////////////////////////////////////////////////////////////////
If Event = #PB_Event_Gadget And EventType() = #PB_EventType_DragStart
Select EventGadget()
Case #SourceFiles
Files$ = ""
For i = 0 To CountGadgetItems(#SourceFiles)-1
If GetGadgetItemState(#SourceFiles, i) & #PB_Explorer_Selected
Files$ + GetGadgetText(#SourceFiles) + GetGadgetItemText(#SourceFiles, i) + Chr(10)
EndIf
Next i
If Files$ <> ""
DragFiles(Files$)
EndIf
EndSelect
;////////////////////////////////////////////////////////////////////////
;- DRAG & DROP START EVENT on the target gadgets, receive the dropped data
;////////////////////////////////////////////////////////////////////////
ElseIf Event = #PB_Event_GadgetDrop
Select EventGadget()
Case #TargetFiles
Files$ = EventDropFiles()
Count = CountString(Files$, Chr(10)) + 1
For i = 1 To Count
AddGadgetItem(#TargetFiles, -1, StringField(Files$, i, Chr(10)))
Next i
EndSelect
EndIf
Until Event = #PB_Event_CloseWindow:End