Simple_Editable_ListIconGadget geht nicht bei allen Windows

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Chregu
Beiträge: 22
Registriert: 22.12.2018 16:07
Wohnort: Viseu de Jos, Rumänien
Kontaktdaten:

Simple_Editable_ListIconGadget geht nicht bei allen Windows

Beitrag von Chregu »

Ich habe auf einem Windows 10 Rechner diesen Code mehr oder weniger erfolgreich in Betrieb gnommen:

https://github.com/SicroAtGit/PB-CodeAr ... Win%5D.pbi

Aber Doppelklick geht bei einem anderen Rechner nicht, auch mit Windows 10. Ueberall ist PureBasic 6.12 x86 installiert. Ein Compilat von einem Rechner, auf dem es funktioniert, funktioniert dann auch auf den Anderen. Läuft das bei Euch?

Weitere Probleme, mit denen ich aber Leben kann:
  • mit F2 habe ich es nie geschafft zu editieren, und
  • wenn die DPI nicht auf 100% sind, geht der Klick daneben, kann aber mit "Ausserkraftsetzen der hohen DPI-Skalierung" im Kompatibilitätsmodus des .exe umgangen werden.
Gruss Chregu
Gruss Chregu
Benutzeravatar
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: Simple_Editable_ListIconGadget geht nicht bei allen Windows

Beitrag von HeX0R »

Also hier (allerdings PB6.21) geht das, allerdings würde ich mal behaupten das PostEvent ist falsch, weswegen F2 kaum funktionieren kann.
So geht's

Code: Alles auswählen

PostEvent(#PB_Event_Gadget, -1, lvnr, #PB_EventType_LeftDoubleClick)
Was das DPI Zeugs betrifft, da musst Du nur ein paar DesktopUnscaled... einfügen, dann sollte das auch passen:

Code: Alles auswählen

	x  = DesktopUnscaledX(rect\left + 1)
	y  = DesktopUnscaledY(rect\top)
	br = DesktopUnscaledX(rect\right - rect\left)
	hh = DesktopUnscaledY(rect\bottom - rect\top)
Es geht allerdings tatsächlich nicht mit PB6.12.
Hier musst Du noch das hier ändern, sonst wird das eben erstellte StringGadget sofort wieder entfernt und Du kannst es nicht mal sehen.

Code: Alles auswählen

Case #PB_Event_Gadget
        ;Edit beeenden wenn LostFocus
	If EventGadget() = editfeld
		If EventType() = #PB_EventType_LostFocus
			flag = 1
		EndIf
	ElseIf EventGadget() <> -1
		flag = 1
	EndIf
Aber ganz richtig ist das auch nicht, mir ist aber der Code ehrlich gesagt zu verwurschtelt, mehr mach ich damit nicht.
Antworten