ComboBoxGadget()
Re: ComboBoxGadget()
Ok!
Passiert dieses Verhalten auch bei einem "normalen" Mauszeiger ohne spezielles Icon? (Standard-Mauszeiger)
Ich glaube Windows 11 hat z.Bsp. bestimmte Probleme (Bugs) bei Verwendung bestimmter Maus-Themen.
Passiert dieses Verhalten auch bei einem "normalen" Mauszeiger ohne spezielles Icon? (Standard-Mauszeiger)
Ich glaube Windows 11 hat z.Bsp. bestimmte Probleme (Bugs) bei Verwendung bestimmter Maus-Themen.
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat
Re: ComboBoxGadget()
Ich rate einfach mal.
Es dürfte sowas sein, oder?
Mit 5.72 bleibt die Maus und ab 5.73 verschwindet sie (bei mir) ...
Es dürfte sowas sein, oder?
Code: Alles auswählen
Procedure AlertThread(Parameter)
Repeat
If IsGadget(0)
AddGadgetItem(0, -1, "Zeile "+Str(Date())) :
Delay(300)
EndIf
ForEver
EndProcedure
If OpenWindow(0, 0, 0, 322, 250, "EditorGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
EditorGadget(0, 8, 8, 306, 133)
ComboBoxGadget(1, 20, 200, 100, 20)
AddGadgetItem(1, -1, "add 1")
AddGadgetItem(1, -1, "add 2")
CreateThread(@AlertThread(), 0)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Mit 5.72 bleibt die Maus und ab 5.73 verschwindet sie (bei mir) ...
Windows 11 - PB 6.03 x64
_________________________________
_________________________________
Re: ComboBoxGadget()
Hi marco2007,
und jetzt kommt der "Standard-Mauszeiger" ins Spiel!
Komisch oder?
und jetzt kommt der "Standard-Mauszeiger" ins Spiel!
Code: Alles auswählen
Procedure AlertThread(Parameter)
Repeat
If IsGadget(0)
AddGadgetItem(0, -1, "Zeile "+Str(Date()))
SendMessage_(GadgetID(1), #WM_SETCURSOR, 0, 0)
Delay(300)
EndIf
ForEver
EndProcedure
If OpenWindow(0, 0, 0, 322, 250, "EditorGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
EditorGadget(0, 8, 8, 306, 133)
ComboBoxGadget(1, 20, 200, 100, 20)
AddGadgetItem(1, -1, "add 1")
AddGadgetItem(1, -1, "add 2")
CreateThread(@AlertThread(), 0)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat
Re: ComboBoxGadget()
Danke!
Das Problem liegt auch nicht an der ComboBox, sondern an der Eventabarbeitung (simulative/automatische Texteingabe - Key_Down/UP-Event) des Edit-Controls (EditorGadget).
Das hier geht ja auch:
Das Problem liegt auch nicht an der ComboBox, sondern an der Eventabarbeitung (simulative/automatische Texteingabe - Key_Down/UP-Event) des Edit-Controls (EditorGadget).
Das hier geht ja auch:
Code: Alles auswählen
Procedure AlertThread(Parameter)
Repeat
If IsGadget(0)
AddGadgetItem(0, -1, "Zeile "+Str(Date()))
Delay(300)
EndIf
ForEver
EndProcedure
If OpenWindow(0, 0, 0, 322, 250, "EditorGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListViewGadget(0, 8, 8, 306, 133)
ComboBoxGadget(1, 20, 200, 100, 20)
AddGadgetItem(1, -1, "add 1")
AddGadgetItem(1, -1, "add 2")
CreateThread(@AlertThread(), 0)
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat
Re: ComboBoxGadget()
Hallo,
am Mauszeiger liegt es nicht (getestet mit normalem Mauszeiger).
In diesem Abschnitt kommt das 'ADDGADGETITEM' vor:
Selbst wenn ich die einzige API-Zeile auskommentiere, ändert sich nichts!
Reinhard
am Mauszeiger liegt es nicht (getestet mit normalem Mauszeiger).
In diesem Abschnitt kommt das 'ADDGADGETITEM' vor:
Code: Alles auswählen
If ConnectionID
SEvent = NetworkClientEvent(ConnectionID)
If SEvent
Select SEvent
Case #PB_NetworkEvent_Data
ReceiveNetworkData(ConnectionID, *puffer, 1)
byte = PeekB(*puffer)
If byte = #CR
If GetGadgetState(#button_ausgabe_autospeichern) = 1 And einlesemodus.b = 1
If autospeichern_komplett = 1
ds.c = ds.c + 1
ds$(ds.c) = FormatDate("%yyyy-%mm-%dd", Date()) + " " + FormatDate("%hh:%ii:%ss", Date()) + " " + text.s
Else
If FindString(text.s, "[!") Or (Right(text.s, 2) <> "|0" And Right(text_alt.s, 3) <> "INF") And (Right(text.s, 3) <> "INF" And Right(text_alt.s, 2) <> "|0") And (Right(text.s, 3) <> "INF" And Right(text_alt.s, 3) <> "INF")
;Debug text.s +" / " +text_alt.s
ds.c = ds.c + 1
ds$(ds.c) = FormatDate("%yyyy-%mm-%dd", Date()) + " " + FormatDate("%hh:%ii:%ss", Date()) + " " + text.s
text_alt.s = text.s
EndIf
EndIf
EndIf
If GetMenuItemState(#MainMenu, #menu_datum) = 1 And GetMenuItemState(#MainMenu, #menu_uhrzeit) = 0
text2.s = FormatDate("%dd.%mm.%yyyy", Date()) + " " + text.s
ElseIf GetMenuItemState(#MainMenu, #menu_datum) = 0 And GetMenuItemState(#MainMenu, #menu_uhrzeit) = 1
text2.s = FormatDate("%hh:%ii:%ss", Date()) + " " + text.s
ElseIf GetMenuItemState(#MainMenu, #menu_datum) = 1 And GetMenuItemState(#MainMenu, #menu_uhrzeit) = 1
text2.s = FormatDate("%dd.%mm.%yyyy", Date()) + " " + FormatDate("%hh:%ii:%ss", Date()) + " " + text.s
Else
text2.s = text.s
EndIf
If Len (text2.s) > 62
AddGadgetItem(#ausgabe, -1, Left(text2.s, 60) + "...")
Else
AddGadgetItem(#ausgabe, -1, text2.s)
EndIf
SendMessage_(GadgetID(#ausgabe), #EM_SCROLL, #SB_LINEDOWN, 0)
progressbar_ausgabe()
If FindString(text.s, "[!")
anzahl_uz = anzahl_uz + CountString(text.s, "[!")
While FindString(text.s, "[!")
anfang_uz = FindString(text.s, "[!")
text_uz$ = Mid(text.s, anfang_uz, 6)
text.s = ReplaceString(text.s, text_uz$, "")
Wend
StatusBarText(0, 1, "UZ: " + Str(anzahl_uz), #PB_StatusBar_Center)
EndIf
If Mid(text.s, 3, 1) = "|" And Mid(text.s, 6, 1) = "|"
id$ = Left(text.s, 2)
id2$ = Mid(text.s, 4, 2)
If id2$ <> "99"
quit = 1
Else
text.s = ""
EndIf
Else
text.s = ""
anzahl_uz + 1
StatusBarText(0, 1, "UZ: " + Str(anzahl_uz), #PB_StatusBar_Center)
EndIf
Else
If einlesemodus.b = 1
If byte <> #LF
If byte = 1
text.s = text.s + "[!SOH]"
ElseIf byte = 4
text.s = text.s + "[!EOT]"
ElseIf byte = 6
text.s = text.s + "[!ACK]"
ElseIf byte = 21
text.s = text.s + "[!NAK]"
ElseIf byte = 24
text.s = text.s + "[!CAN]"
ElseIf byte = 123
text.s = text.s + "[!FWU]"
ElseIf byte >= 32 And byte <= 126
text.s = text.s + Chr(Byte)
Else
text.s = text.s + "[!" + RSet(Str(Byte), 3, "0") + "]"
EndIf
EndIf
ElseIf einlesemodus.b = 4
If byte <> #LF
text.s = text.s + Chr(Byte)
EndIf
EndIf
EndIf
EndSelect
EndIf
EndIf
EndIf
Reinhard
Re: ComboBoxGadget()
Es wurden anscheinend irgendwelche Dinge in Verbindung mit dem EditorGadget verändert.
In den Change-Auflistungen stehen auch ab Version 5.73 Änderungen im Zusammenhang mit den EditorGadget.
Da waren bestimmt die jetzt ersichtlichen negativen Seiteneffekte nicht bekannt.
In den Change-Auflistungen stehen auch ab Version 5.73 Änderungen im Zusammenhang mit den EditorGadget.
Da waren bestimmt die jetzt ersichtlichen negativen Seiteneffekte nicht bekannt.
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat
- HeX0R
- Beiträge: 3040
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3 - Kontaktdaten:
Re: ComboBoxGadget()
Du solltest das COM Handling in einen Thread auslagern!
Da Du immer nur EIN Byte aus der Queue zupfst (wieso machst Du das überhaupt so?), und ausserdem jede Menge neuer Events in dieser Prozedur verursachst, kommt WindowEvent() vermutlich gar nicht mehr schnell genug hinterher, um alle Events abzuarbeiten.
Dann kommt es zum Stau und merkwürdigen Effekten.
Setze doch mal zum Test ein
ans Ende Deines Codeauszugs, und Du wirst sehen, dass der Mauszeiger wieder angezeigt wird (zumindest gehe ich davon aus, ich kenne ja nur einen Bruchteil Deines Codes).
Aber selbst wenn nicht, ein Auslagern in einen Thread hilft garantiert!
Da Du immer nur EIN Byte aus der Queue zupfst (wieso machst Du das überhaupt so?), und ausserdem jede Menge neuer Events in dieser Prozedur verursachst, kommt WindowEvent() vermutlich gar nicht mehr schnell genug hinterher, um alle Events abzuarbeiten.
Dann kommt es zum Stau und merkwürdigen Effekten.
Setze doch mal zum Test ein
Code: Alles auswählen
While WindowEvent() : Wend
Aber selbst wenn nicht, ein Auslagern in einen Thread hilft garantiert!
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}.:|:.{Bier spendieren}
Re: ComboBoxGadget()
Hallo,
das Einfügen von 'While WindowEvent() : Wend' hat leider nicht gebracht.
Das Einlesen von einzelnen Byte's rüht daher, da ich auch das #CR auswerten wollte.
Die Beispiele oben werde ich mal testen...
Reinhard
das Einfügen von 'While WindowEvent() : Wend' hat leider nicht gebracht.
Das Einlesen von einzelnen Byte's rüht daher, da ich auch das #CR auswerten wollte.
Die Beispiele oben werde ich mal testen...
Reinhard
- HeX0R
- Beiträge: 3040
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3 - Kontaktdaten:
Re: ComboBoxGadget()
Ähm... der Zusammenhang erschliesst sich mir jetzt nicht wirklich.RAaBe hat geschrieben: 24.02.2023 14:25 Das Einlesen von einzelnen Byte's rüht daher, da ich auch das #CR auswerten wollte.
Aber egal, wie gesagt, das ganze COM Zeug bremst das Windowhandling nur aus, ich habe noch nie(!) sowas ohne Threads umgesetzt.
Gleiches gilt für Netzwerkgeschichten.
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}.:|:.{Bier spendieren}