Flag von Textgadget umschalten!
Re: Flag von Textgadget umschalten!
Da hast du Glück, dass TextGadget kein BindGadgetEvent unterstützt.
Re: Flag von Textgadget umschalten!
Jetzt wo du das erwähnst
Aber bei der Gelegenheit, das Ganze hat doch noch einen Haken... !
Es funktioniert nur bei FESTER Gadgetnummerierung, nicht wenn #PB_Any bei der ersten Erstellung genutzt wurde....
Aber bei der Gelegenheit, das Ganze hat doch noch einen Haken... !
Es funktioniert nur bei FESTER Gadgetnummerierung, nicht wenn #PB_Any bei der ersten Erstellung genutzt wurde....
PureBasic 6.10 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom
- NicTheQuick
- Ein Admin
- Beiträge: 8679
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
- Kontaktdaten:
Re: Flag von Textgadget umschalten!
Da könnte noch eine Compiler-Weiche rein, falls es auf Windows benutzt wird.
Re: Flag von Textgadget umschalten!
Warum nicht? Scheint zu funktionieren:Bisonte hat geschrieben:Es funktioniert nur bei FESTER Gadgetnummerierung, nicht wenn #PB_Any bei der ersten Erstellung genutzt wurde....
Code: Alles auswählen
EnableExplicit
Define MyTextGadget1
Define MyTextGadget2
Define MyTextGadget3
Procedure SetTextGadgetAlign(Window, Gadget, Flags)
Protected OldGadgetList, TempText.s, x, y, w, h, Result = #False
Protected TempFont, TempValue, BColor.l, FColor.l
If IsWindow(Window) And IsGadget(Gadget)
If GadgetType(Gadget) = #PB_GadgetType_Text
TempText = GetGadgetText(Gadget)
TempFont = GetGadgetFont(Gadget)
x = GadgetX(Gadget) : y = GadgetY(Gadget) : w = GadgetWidth(Gadget) : h = GadgetHeight(Gadget)
TempValue = GetGadgetData(Gadget)
BColor = GetGadgetColor(Gadget, #PB_Gadget_BackColor) : FColor = GetGadgetColor(Gadget, #PB_Gadget_FrontColor)
OldGadgetList = UseGadgetList(WindowID(Window))
FreeGadget(Gadget)
DisableDebugger
TextGadget(Gadget, x, y, w, h, TempText, Flags)
EnableDebugger
SetGadgetFont(Gadget, TempFont) : SetGadgetData(Gadget, TempValue)
If BColor > -1
SetGadgetColor(Gadget, #PB_Gadget_BackColor, BColor)
EndIf
If FColor > -1
SetGadgetColor(Gadget, #PB_Gadget_FrontColor, FColor)
EndIf
UseGadgetList(OldGadgetList)
Result = #True
EndIf
EndIf
ProcedureReturn Result
EndProcedure
If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
MyTextGadget1 = TextGadget(#PB_Any, 10, 10, 480, 20, "Einmal hin, alles drin", 0)
MyTextGadget2 = TextGadget(#PB_Any, 10, 30, 480, 20, "Nichts ist unmöglich", 0)
MyTextGadget3 = TextGadget(#PB_Any, 10, 50, 480, 20, "Ich bin doch nicht blöd", 0)
SetTextGadgetAlign(0, MyTextGadget1, #PB_Text_Right)
SetTextGadgetAlign(0, MyTextGadget2, #PB_Text_Center)
SetTextGadgetAlign(0, MyTextGadget3, #PB_Text_Border)
SetTextGadgetAlign(0, MyTextGadget1, #PB_Text_Border | #PB_Text_Right)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
EndIf
Re: Flag von Textgadget umschalten!
Es war eigentlich immer so, das PB bei z.B.
G = TextGadget(#PB_Any...) G oft einen Wert hat, den der Compiler bei Neuerstellung anmeckert.
Und irgendwas anderes war da noch...
G = TextGadget(#PB_Any...) G oft einen Wert hat, den der Compiler bei Neuerstellung anmeckert.
Und irgendwas anderes war da noch...
Oder wir bauen gleich ein Canvas drausNicTheQuick hat geschrieben:Da könnte noch eine Compiler-Weiche rein, falls es auf Windows benutzt wird.
PureBasic 6.10 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom
Re: Flag von Textgadget umschalten!
Diesen Fehler (IMA) konnte ich feststellen, wenn man das Fenster schließt. Deshalb habe ich vor Gadgetneuerstellung noch ein FreeGadget hinzugefügt.Bisonte hat geschrieben:G = TextGadget(#PB_Any...) G oft einen Wert hat, den der Compiler bei Neuerstellung anmeckert.
Re: Flag von Textgadget umschalten!
Vielleicht mit Auswertung auf ByRef...
Geht so leider nicht mit Struktur-Variablen.
Muss noch an CompilerIf gebastelt werden.
Code: Alles auswählen
EnableExplicit
Define MyTextGadget1
Define MyTextGadget2
Define MyTextGadget3
Procedure _SetTextGadgetAlign(Window, *Gadget.Integer, Flags)
Protected Gadget, OldGadgetList, TempText.s, x, y, w, h, Result = #False
Protected ByRef, TempFont, TempValue, BColor.l, FColor.l
If *Gadget <= 10000
Gadget = *Gadget
ByRef = #False
Else
Gadget = *Gadget\i
If Gadget > 10000
ByRef = #True
Else
ByRef = #False
EndIf
EndIf
If IsWindow(Window) And IsGadget(Gadget)
If GadgetType(Gadget) = #PB_GadgetType_Text
TempText = GetGadgetText(Gadget)
TempFont = GetGadgetFont(Gadget)
x = GadgetX(Gadget) : y = GadgetY(Gadget) : w = GadgetWidth(Gadget) : h = GadgetHeight(Gadget)
TempValue = GetGadgetData(Gadget)
BColor = GetGadgetColor(Gadget, #PB_Gadget_BackColor) : FColor = GetGadgetColor(Gadget, #PB_Gadget_FrontColor)
OldGadgetList = UseGadgetList(WindowID(Window))
If ByRef
FreeGadget(Gadget)
Gadget = TextGadget(#PB_Any, x, y, w, h, TempText, Flags)
*Gadget\i = Gadget
Else
TextGadget(Gadget, x, y, w, h, TempText, Flags)
EndIf
SetGadgetFont(Gadget, TempFont) : SetGadgetData(Gadget, TempValue)
If BColor > -1
SetGadgetColor(Gadget, #PB_Gadget_BackColor, BColor)
EndIf
If FColor > -1
SetGadgetColor(Gadget, #PB_Gadget_FrontColor, FColor)
EndIf
UseGadgetList(OldGadgetList)
Result = #True
EndIf
EndIf
ProcedureReturn Result
EndProcedure
Macro SetTextGadgetAlign(Window, Gadget, Flags)
CompilerIf Defined(Gadget, #PB_Variable)
_SetTextGadgetAlign(Window, @Gadget, Flags)
CompilerElse
_SetTextGadgetAlign(Window, Gadget, Flags)
CompilerEndIf
EndMacro
If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
MyTextGadget1 = TextGadget(#PB_Any, 10, 10, 480, 20, "Einmal hin, alles drin", 0)
;MyTextGadget2 = TextGadget(#PB_Any, 10, 30, 480, 20, "Nichts ist unmöglich", 0)
MyTextGadget2 = TextGadget(2, 10, 30, 480, 20, "Nichts ist unmöglich", 0)
MyTextGadget3 = TextGadget(#PB_Any, 10, 50, 480, 20, "Ich bin doch nicht blöd", 0)
SetTextGadgetAlign(0, MyTextGadget1, #PB_Text_Right)
;SetTextGadgetAlign(0, MyTextGadget2, #PB_Text_Center)
SetTextGadgetAlign(0, 2, #PB_Text_Center)
SetTextGadgetAlign(0, MyTextGadget3, #PB_Text_Border)
SetTextGadgetAlign(0, MyTextGadget1, #PB_Text_Border | #PB_Text_Right)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
EndIf
Muss noch an CompilerIf gebastelt werden.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Re: Flag von Textgadget umschalten!
Da könnte man glatt mit sowas banalem wie einer Textgadget Neuerstellung ganze wissenschaftliche
Abhandlungen und Doktorarbeiten verfassen
PureBasic 6.10 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom