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

Schaltflächen in einem Panelgadget deaktivieren

Beitrag von derschutzhund »

Hallöchen,

kann mir jemand sagen, wie man einzelne Schaltflächen eines Panelgadgets deaktivieren kann?
- Mit setgadgetstate kann man die aktive Schaltfläche umstellen.
- Mit removegadgetitem kann man einzelne Schaltflächen löschen.

Hier nun mein Problem:
In einem recht umfangreichen Programm, welches über ein Panel geführt wird, möchte ich einzelne Schaltlächen deaktivieren.
Dafür finde ich keine Infos.
Nun habe ich versucht die aktive Schaltläche wie gewünscht einzustellen und die überflüssigen Schaltflächen zu löschen.
Das geht auch, aber da damit auch sämtliche Gadgets auf den gelöschten Schaltflächen mit gelöscht werden, tritt dann ein Laufzeitfehler auf wenn ich bestimmte Aktionen auf der jetzt aktiven Schaltfläche durchführe.
Dieses Problem würde nicht auftreten, wenn alle Schaltflächen bleiben würden aber halt nicht geöffnet werden könnten.

Hoffe jemand hat einen Ansatz!

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
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Schaltflächen in einem Panelgadget deaktivieren

Beitrag von RSBasic »

Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
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 »

Habe ich mir angesehen.
Das funktioniert wohl nur wenn das Panel über ein Array erzeugt wird.
Sämtliche Gadgets wurden aber mit dem FormGenerator von PB erzeugt, was auch nicht mehr geändert werden kann.
Damit funktioniert es wohl dann nicht mit dem Code!?
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 »

Gibt es sonst keine Möglichkeit einzelne Flächen eines Panels zu deaktivieren?
Sehr schade! Da haben wir dann doch gleich wieder einen Verbesserungsvorschlag für PB!
Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Schaltflächen in einem Panelgadget deaktivieren

Beitrag von RSBasic »

Ich benutze zwar den Visual Designer von Polo nicht, aber soweit ich weiß kannst du da nicht viel machen. Der VD ist da diesbezüglich leider sehr eingeschränkt, wenn es darum geht, Änderungen im Generierungscode vorzunehmen.
Entweder verzichtest du auf den VD und du erstellst den Gadgetcode selbst oder du suchst eine andere Möglichkeit. 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 automatisch die letzte Schaltfläche ausgewählt wird. Vielleicht klappt es ja.
Oder, wie du es bereits sagtest, erstellst du ein Thread im englischen Forum, aber wann dein Verbesserungsvorschlag umgesetzt wird, das weiß niemand.
Oder du erstellst/benutzt ein Präprozessor, um den Code vor dem Kompilieren automatisiert anzupassen oder du erstellst Macros.
Ansonsten habe ich bezüglich des Visual Designers von Polo keine Ahnung.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
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 »

Ich verstehe das Problem jetzt überhaupt nicht. Warum sollte das ganze nicht mit dem VD von Polo funktionieren?
Alle Änderungen lassen sich doch auch ausserhalb des PBF codes durchführen. Das Array in der Größe
der Anzahl Tabs, enhalt doch nur 0 für Aktiv oder 1 für Inaktiv, damit mehrere Tabs deaktiviert werden können und
nicht nur einer.

Egal, wer nur mit VisuellDesignern arbeitet...
Wer nur Copy und Paste beherrscht, wird hierbei natürlich Schwierigkeiten haben :wink:

Gruß
Thomas
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 »

ts-soft hat geschrieben:Ich verstehe das Problem jetzt überhaupt nicht. Warum sollte das ganze nicht mit dem VD von Polo funktionieren?
Alle Änderungen lassen sich doch auch ausserhalb des PBF codes durchführen. Das Array in der Größe
der Anzahl Tabs, enhalt doch nur 0 für Aktiv oder 1 für Inaktiv, damit mehrere Tabs deaktiviert werden können und
nicht nur einer.

Egal, wer nur mit VisuellDesignern arbeitet...
Wer nur Copy und Paste beherrscht, wird hierbei natürlich Schwierigkeiten haben :wink:

Gruß
Thomas
Und wer nie die Fragen liest oder glaubt alles zu wissen und dadurch oft überheblich wirkt kann doch sein geballtes Wissen für sich behalten und alle Anderen bleiben dumm! Und wenn wir beim Lesen sind, es geht nicht um den Visual Designer den ich schon nach dem ersten Test wieder entfernt habe sondern um den in PB integrierten Form-Designer! Ist zwar für die Lösung des Problems egal aber ich kann ja auch mal kleinkariert sein!

LG

Wolfgang
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 »

Habe jetzt mal versucht einfach ein EditorGadget über das jeweilige Panelfeld zu legen, welches nicht angezeigt werden soll aber Buttons liegen immer vorne. Geht also auch nicht.
Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
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 »

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.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Schaltflächen in einem Panelgadget deaktivieren

Beitrag von Kiffi »

nit uffreesche...

der von Ray verlinkte Code ist heftig. So ganz genau weiß ich auch nicht, was da passiert.

Zuerst muss Du Dein PanelGadget 'ownerdrawen':

Code: Alles auswählen

SetWindowLong_(GadgetID(#DeinPanel), #GWL_STYLE, GetWindowLong_(GadgetID(#DeinPanel), #GWL_STYLE) | #TCS_OWNERDRAWFIXED)
Der (für Dich) wichtige Teil ist das Array, das Du auf die Anzahl Deiner Tabs dimensionierst:

Code: Alles auswählen

(Re)Dim Panels(CountGadgetItems(#DeinPanel) - 1)
Und wenn Du nun ein Tab dis/enablen willst, dann rufst Du folgendes auf:

Code: Alles auswählen

Panels(#DeinTab) = #True / #False
RedrawWindow_(GadgetID(#DeinPanel), 0, 0, 7) 
ShowWindow_(GadgetID(#DeinPanel), #SW_SHOW)
das wär's auch schon.

Grüße ... Kiffi
a²+b²=mc²
Antworten