Schaltflächen in einem Panelgadget deaktivieren

Anfängerfragen zum Programmieren mit PureBasic.
derschutzhund
Beiträge: 328
Registriert: 06.06.2013 20:37
Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10

Re: Schaltflächen in einem Panelgadget deaktivieren

Beitrag von derschutzhund »

NicTheQuick hat geschrieben:Und wenn du einfach alle Gadgets, die im Panel liegen, deaktivierst? Dann kann man zwar das Panel anwählen, aber nichts drin tun. Das könnte auch recht einfach gehen, wenn du alle diese Gadgets in einen Container packst und nur diesen deaktivierst.
Ok, das wäre eine Idee! Teste ich mal!
Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
derschutzhund
Beiträge: 328
Registriert: 06.06.2013 20:37
Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10

Re: Schaltflächen in einem Panelgadget deaktivieren

Beitrag von derschutzhund »

Hallo Kiffi,

"ShowWindow_" ist eine API-Funktion? Dann würde es nicht unter Linux laufen?
Ich versuche immer gerne, wenn es irgendwie machbar ist, nur mit PB-Funktionen zu arbeiten damit es dann auch unter
Linux funktionieren kann.

In einem früheren Beitrag wurde auch schon mal angesprochen zu prüfen, welche "Seite" des Panels aktiv ist und dann evtl. wieder auf die erlaubte Seite zurück zu schalten. Das sollte vermutlich die einfachste Lösung sein. Ein zusätzlicher Container ist dann auch nicht erforderlich sondern nur diese Abfrage:

Code: Alles auswählen

   If GetGadgetState(panel_0) <> 2
       SetGadgetState(panel_0,2)
    EndIf
Das in die Ereignisschleife eingebaut funktioniert! Habe ich eben getestet.
Nur ist das halt nicht so ganz sauber programmiert.

LG

Wolfgang
Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Schaltflächen in einem Panelgadget deaktivieren

Beitrag von Kiffi »

derschutzhund hat geschrieben:Ich versuche immer gerne, wenn es irgendwie machbar ist, nur mit PB-Funktionen zu arbeiten damit es dann auch unter
Linux funktionieren kann.
ah, ok. Das vergesse ich immer wieder. Kannst Du mir / uns einen Gefallen tun und das in Deine Signatur schreiben?

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Schaltflächen in einem Panelgadget deaktivieren

Beitrag von ts-soft »

Das einfachste wäre ein TabBarGadget von StarGate zu nutzen.
Crossplattform, lediglich nicht im FormDesigner integriert, was aber kein Problem sein sollte. Einfach im FormDesigner einen Container
erstellen, in dem man das dann nachträglich einfügt, programmiertechnisch, also nichts für Mausschubser :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
derschutzhund
Beiträge: 328
Registriert: 06.06.2013 20:37
Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10

Re: Schaltflächen in einem Panelgadget deaktivieren

Beitrag von derschutzhund »

Kiffi hat geschrieben:
derschutzhund hat geschrieben:Ich versuche immer gerne, wenn es irgendwie machbar ist, nur mit PB-Funktionen zu arbeiten damit es dann auch unter
Linux funktionieren kann.
ah, ok. Das vergesse ich immer wieder. Kannst Du mir / uns einen Gefallen tun und das in Deine Signatur schreiben?

Grüße ... Kiffi
Erledigt
Hoffe das is ok so!
Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Schaltflächen in einem Panelgadget deaktivieren

Beitrag von ts-soft »

Und falls jemand anders eine Windows Only lösung sucht:

Code: Alles auswählen

Procedure DisablePanelItem(panel, item, state)
  Protected itm.TC_ITEM
  
  If state = 1
    itm\Mask = #TCIF_PARAM
    SendMessage_(GadgetID(panel), #TCM_GETITEM, item, @itm)
    itm\lParam = 1
    itm\Mask = #TCIF_PARAM
    SendMessage_(GadgetID(panel), #TCM_SETITEM, item ,@itm)
  ElseIf state = 0
    itm\Mask = #TCIF_PARAM
    SendMessage_(GadgetID(panel), #TCM_GETITEM, item, @itm)
    itm\lParam = 0
    itm\Mask = #TCIF_PARAM
    SendMessage_(GadgetID(panel), #TCM_SETITEM, item, @itm)
  EndIf
EndProcedure
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Schaltflächen in einem Panelgadget deaktivieren

Beitrag von NicTheQuick »

Hier noch eine Linux-Lösung um ein Tab zu verstecken ohne es löschen zu müssen.

Code: Alles auswählen

OpenWindow(0, 0, 0, 400, 300, "Test")
PanelGadget(0, 0, 0, 400, 300)
	AddGadgetItem(0, -1, "1")
		ButtonGadget(1, 5, 5, 60, 25, "Show")
		ButtonGadget(2, 5, 35, 60, 25, "Hide")
	AddGadgetItem(0, -1, "Bin da")
	AddGadgetItem(0, -1, "3")
CloseGadgetList()

Procedure HideTab(panelId.i, item.i, state.i = #True)
	Protected *notebook.GtkNotebook = GadgetID(panelId)
	Protected *page.GtkWidget = gtk_notebook_get_nth_page_(*notebook, item)
	
	If (state)
		gtk_widget_hide_(*page)
	Else
		gtk_widget_show_(*page)
	EndIf
EndProcedure

Repeat
	event.i = WaitWindowEvent()
	If event = #PB_Event_Gadget
		Select EventGadget()
			Case 1: HideTab(0, 1, #False)
			Case 2: HideTab(0, 1)
		EndSelect
	EndIf
Until event = #PB_Event_CloseWindow
derschutzhund
Beiträge: 328
Registriert: 06.06.2013 20:37
Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10

Re: Schaltflächen in einem Panelgadget deaktivieren

Beitrag von derschutzhund »

Habe auch noch einen Weg gefunden, wie es mit allen Betriebssystemen funktioniert!
Für das Panel_0 eine Ereignis-Prozedure erstellen, z.B.

Code: Alles auswählen

Procedure PanelWahl(EventType)
   If Vollversion = 0
      If GetGadgetState(panel_0) <> 2 And GetGadgetState(panel_0) <> 8
         SetGadgetState(panel_0,2)
      EndIf 
   EndIf  
EndProcedure   

Das war es dann schon!
Die Variable "Vollversion" muss natürlich auch noch definiert und mit 0 oder 1 gesetzt werden.

Hinweis: Ist das Programm nicht registriert dann werden nur Seite 2 und 8 angezeigt.

LG

Wolfgang
Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
GronkhLP
Beiträge: 72
Registriert: 14.11.2013 22:43
Wohnort: Köln
Kontaktdaten:

Re: Schaltflächen in einem Panelgadget deaktivieren

Beitrag von GronkhLP »

Also nichts anderes als was ein anderer User bereits vorgeschlagen hat...
RSBasic hat geschrieben:Z.B. kannst du im Eventcode abfragen, welche Schaltfläche gerade aktiv ist. Wenn beispielsweise Tab 5 aktiv ist, dann sorgst du dafür, dass ...
:)
Bild
derschutzhund
Beiträge: 328
Registriert: 06.06.2013 20:37
Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10

Re: Schaltflächen in einem Panelgadget deaktivieren

Beitrag von derschutzhund »

GronkhLP hat geschrieben:Also nichts anderes als was ein anderer User bereits vorgeschlagen hat...
RSBasic hat geschrieben:Z.B. kannst du im Eventcode abfragen, welche Schaltfläche gerade aktiv ist. Wenn beispielsweise Tab 5 aktiv ist, dann sorgst du dafür, dass ...
:)
Genau, nur mit einer etwas ausführlichen Beschreibung :)
Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Antworten