Mehrere Textstile in einem BoolText eines Buttons (programmatisch!)
Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
Mehrere Textstile in einem BoolText eines Buttons (programmatisch!)
Hallo, ich verzweifle gerade (mal wieder) an LabVIEW:
Ich möchte im Text ('Boolscher Text' - BoolText.Text) eines Buttons mehrere unterschiedliche Fonts sowie Textgrößen haben - in der Designphase bekomme ich dies mit einem Trick hin: Stelle ich die Fonteigenschaften über die Combobox in der Werkzeugleiste ein, ändern sich stets die Eigenschaften für den gesamten Text, nicht nur für den markierten Teil - kopiere ich allerdings ein schon vorher parametriertes Textstück aus einem anderem Control und füge es an der gewünschten Stelle ein, behält es selbst, sowie auch der restliche Text in Ziel-Control, seine Eigenschaften.
Anfänglich reichte das so aus, die Softkeys auf der rechten Seite des Frontpanels sollen nun aber während der Laufzeit ihre Funktionalität wechseln, damit dann eben auch die Beschriftung!
Beschreibe ich 'BoolText.Text' besitzt im Anschluss der gesamte Text die gleichen Attribute, nun wähnte ich per programmatischem Auswählen der jeweiligen Textpassage einzeln ihre Attribute ändern zu können - das funktioniert mit anderen Controls auch zumeist - doch nicht beim 'BoolText.Text' meiner Buttons: Der gesamte Text nimmt, trotz explizit ausgewähltem Textbereich, die gemachten Einstellungen an.
Sollte es gar nicht möglich sein dies umzusetzen, muss ich wohl eine durchsichtige Textbox mit unsichtbarem Rahmen über jeden der zwölf Buttons positionieren, wobei das natürlich auch bzgl. des betätigen des Buttons sehr viel ärger macht, ich dann wohl noch die Mouse-Events dieser Textboxen auswerten muss, ... das wird alles sehr unschön und unsauber - also hoffe ich, dass sich dem eigentlichen Problem irgendwie beikommen lässt?!
Mehrere Textstile in einem BoolText eines Buttons (programmatisch!)
Bleibt die "F-Taste" immer und du änderst nur den Text darunter?
Wenn ja, könntest du dir 12 Buttons erstellen und per Anpassen ein Bild der F-Taste auf den Button kleben. Dann hast du nur die Textzeile darunter die sich ändert. Somit auch nur eine Schriftart in deinem Button.
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
RE: Mehrere Textstile in einem BoolText eines Buttons (programmatisch!)
Hallo SeBa,
daran habe ich gar nicht gedacht - ist eine gute Idee, vielen Dank! Die F-Tasten-Symbole bleiben für jeden Button stets gleich. Leicht störend ist, dass mir wohl wirklich nichts anderes übrig bleibt als für jeden einzelnen der 12 Buttons ein eigenes Control mir jeweils passendem Bild zu erzeugen, aber naja, besser als alles andere ist das immer noch!
Den eigentlich Text kann ich dann ja auch entsprechend nach unten verrücken, dass ich ohne die Justage per Leerzeilen mit kleinerem Font auskomme - würde/wird funktionieren!
RE: Mehrere Textstile in einem BoolText eines Buttons (programmatisch!)
Hallo - hier noch ein Nachtrag zur tatsächlichen Umsetzung:
Nach SeBas Beitrag dachte ich mir, ich könne die F-Tasten-Symbole vom Bildschirm abfotographieren und im jeweiligen, neu angelegem, Control als Decal über den eigentlichen Button legen - das war allerdings problematisch, das Decal bräuchte einen transparenten Hintergrund um die wechselnden Farben des aktivierten/deaktivierten nicht zu überlagern.
Noch problematischer war allerdings, dass der Button an der Stelle des Decals nicht mehr anklickbar war! Das war völlig inakzeptabel, also ging ich einen anderen Weg:
Ich fotographierte nun die Buttons komplett ab, jeweils aktiviert un deaktiviert, schnitt die Bilder auf die richtige Größe zu und nutzte sie als direkte true/false-Ansichten des Controls. Den eigentlich Text positionierte ich ein wenig um und erreichte so das von mir ursprünglich angestrebte Ergebnis!
Somit nochmals Danke für den Tipp - Beste Grüße
Sascha
09.02.2011, 10:45 (Dieser Beitrag wurde zuletzt bearbeitet: 09.02.2011 10:46 von GerdW.)
RE: Mehrere Textstile in einem BoolText eines Buttons (programmatisch!)
Hallo Sascha,
Zitat:das Decal bräuchte einen transparenten Hintergrund
Die benötigten Zeichen dieses Fonts in Word schreiben (auf weißem Hintergrund), in ein normales Bildbearbeitungsprogramm laden, zurechtschneiden und als PNG mit transparentem Hintergrund speichern...
Zitat:Button an der Stelle des Decals nicht mehr anklickbar
Wenn ich einen Button mit einem Decal verschönere, ist der auch dort anklickbar... (Gerade nochmal geprüft: man kann auch auf dem Decal klicken!)
RE: Mehrere Textstile in einem BoolText eines Buttons (programmatisch!)
Hallo Gerd - danke für Deinen Nachtrag - das wird jetzt doch noch wichtig und ich habe einige Fragen dazu - es funktioniert bei mir 'anders' - mache ich etwas falsch/anders?!
Inzwischen läuft das VI/Programm auf dem Zielsystem und ich habe es erstmals auf den dort, im Gerät verbauten TFT-Bildschirm gesehen. Da die Darstellung nicht optimal war, habe ich das Design nochmals überarbeitet. Die Situation ist nun folgende:
Es läuft ein Windows XP und ich verwende nun systemweit den standard 'Windows XP-Stil', deshalb bin ich in LabVIEW auch auf die System-Controls, statt den vorher verwandten Modern-Controls, umgestiegen und baue auch die Softbuttons (die Buttonleiste rechts - mit den F-Tastensymbolen) um. Da die XP-Buttons einige nette Darstellungen haben (Markierungsumrandungen, ...) wöllte ich nun nicht die kompletten Grafiken austauschen, wie ich es im alten Design mit den Modern-Buttons machte, sondern, wie von GerdW beschrieben, Decals (überlagernde Grafiken, eben die F-Tasten-Symbole) verwenden.
An den Stellen an denen die Grafik über dem Button liegt, ist der Button nun wieder nicht anklickbar, also anders als bei GerdW ist!
Eine transparente Farbe konnte ich nun erfolgreich erstellen: Ich habe in meinem Bildbearbeitungsprogramm (PhotoImpact 6) das vom Bildschirm abfotographierte Tastensymbol, auf weißem Hintergrund, als PNG gespeichert und in den PNG-Optionen weiß als transparente Farbe gewählt. Einen Antialaising-Effekt gibt es so leider nicht (ist das denn irgendwie möglich?), aber da die Buttonfarbe auch nahezu weiß ist, passt das dennoch und fällt nicht auf.
Wenn in das Bild nun aus dem Bildbearbeitungsprogramm heraus kopiere und in mein Control einfüge, ist es allerdings nicht transparent! Ich muss die PNG-Bilddatei per Drag&Drop aus dem Explorer in mein Control-VI ziehen, dann wird es transparent dargestellt - der Button ist an dieser Stelle allerdings _nicht_ klickbar, was nun auch mein Problem darstellt!
Soeben bemerkte ich noch ein neues Problem: Das auf dem Button dargestellte Text bewegt sich bei diesem Control beim klicken - im angeklickten Zustand befindet er sich (-1, -1) Pixel entfernt von seiner Ausgangsposition!
Kann man Decals/statische Texte so mit zum Teil des Buttons machen, dass sie, wie die Beschriftung auch, sich mitbewegen?
Ich werde gleich nochmal ein Demonstrations-VI bauen und hier posten...
Grüße
Sascha
RE: Mehrere Textstile in einem BoolText eines Buttons (programmatisch!)
Hallo Jens, vielen Dank für den Tipp - das hat den Knoten gelöst, ich habe nahezu alles falsch gemacht, was man falsch machen kann - ...das kommt davon, wenn man sich immer nur alles selbst beibringt.
Nochmal zusammengefasst:
- Bilder stets über den Menüpunkt 'Bearbeiten -> Bild in Zwischenablage einfügen...' in LabVIEW laden.
- Die so geladenen Bilder/Decals für Buttons nicht einfach per 'Crtl-C' in das Control einfügen, sondern über den Kontextmenüpunkt 'Bild aus Zwischenablage einfügen -> Decal', so sind sie dann auch klickbar.
- PNGs unterstützen natürlich auch Alpha-Blending, nicht nur einfach einen transparenten Hintergrund (ist ja auch in den NI Demo-VIs zu sehen... Dieser Wetterstation z.B.), ich konnte das nun so umsetzen (wie schon erwähnt arbeite ich mit PhotoImpact 6 (habe keine MS-Office Produkte zur Verfügung):
Zuerst ist ein PNG mit transparentem Hintergrund in der gewünschten Größe zu erstellen, das funktioniert bei PI6 nur über's Speichern, dh. Bild als so konfiguriertes PNG speichern und erneut öffnen - schon hat man es auch im Editor transparent.
Anstatt, wie zuvor, abfotographierte Bilder des Fonts zu verwenden (ein Schritt zu weit gegangen...) ist es wesentlich vorteilhafter die Zeichen direkt als Schrift in das Bild einzufügen - mit entsprechendem Anti-Alaising, was durch den transparenten Hintergrund direkt in einem, schönen, weichen Alpha-Blending resultiert. Nun nur noch abspeichern und das wars - die Objektinformationen gehen im PNG-Format natürlich verloren, d.h. der Text ist danach nicht wieder als solcher editierbar sondern wird zu einem Bildobjekt, es ist - sofern eine weitere Bearbeitung evtl. nötig ist (was man ja nie komplett ausschließen kann...) - also nicht verkehrt das so entstandene Bild, noch mit dem Textobjekt, in einem nativen Format des Programms (bei PhotoImpact ist es UFO) zu speichern.
Einziges 'Problem' was fortbesteht ist, dass sich das Decal auf dem Button nicht bei aktiviertem Button - so wie der Text - ein Pixel nach schräg-unten bewegt, das Decal bleibt einfach stehen. Das ist nun allerdings ein sehr geringes Problem... Damit kann man (sogar ich... hr) ganz gut leben.
Ich danke allen hier für Ihre Unterstützung!
Beste Grüße
Sascha
P.S.: Nun nochmal ein Bild von der fertigen Softbutton-Bar unter Windows XP mit aktiviertem Standard-XP-Style und den mit Decals versehenen System-Controls.