Seite 1 von 2

Schaltflächen in einem Panelgadget deaktivieren

Verfasst: 03.03.2014 20:37
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

Re: Schaltflächen in einem Panelgadget deaktivieren

Verfasst: 03.03.2014 20:44
von RSBasic

Re: Schaltflächen in einem Panelgadget deaktivieren

Verfasst: 03.03.2014 20:59
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!?

Re: Schaltflächen in einem Panelgadget deaktivieren

Verfasst: 04.03.2014 12:25
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!

Re: Schaltflächen in einem Panelgadget deaktivieren

Verfasst: 04.03.2014 12:37
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.

Re: Schaltflächen in einem Panelgadget deaktivieren

Verfasst: 04.03.2014 12:50
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

Re: Schaltflächen in einem Panelgadget deaktivieren

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

Re: Schaltflächen in einem Panelgadget deaktivieren

Verfasst: 04.03.2014 13:11
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.

Re: Schaltflächen in einem Panelgadget deaktivieren

Verfasst: 04.03.2014 13:25
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.

Re: Schaltflächen in einem Panelgadget deaktivieren

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