Seite 2 von 2

Re: Schaltflächen in einem Panelgadget deaktivieren

Verfasst: 04.03.2014 13:37
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!

Re: Schaltflächen in einem Panelgadget deaktivieren

Verfasst: 04.03.2014 14:03
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

Re: Schaltflächen in einem Panelgadget deaktivieren

Verfasst: 04.03.2014 14:20
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

Re: Schaltflächen in einem Panelgadget deaktivieren

Verfasst: 04.03.2014 14:27
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:

Re: Schaltflächen in einem Panelgadget deaktivieren

Verfasst: 04.03.2014 14:37
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!

Re: Schaltflächen in einem Panelgadget deaktivieren

Verfasst: 04.03.2014 16:24
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

Re: Schaltflächen in einem Panelgadget deaktivieren

Verfasst: 04.03.2014 16:46
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

Re: Schaltflächen in einem Panelgadget deaktivieren

Verfasst: 04.03.2014 23:21
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

Re: Schaltflächen in einem Panelgadget deaktivieren

Verfasst: 04.03.2014 23:43
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 ...
:)

Re: Schaltflächen in einem Panelgadget deaktivieren

Verfasst: 04.03.2014 23:49
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 :)