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

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
