Textgadget mit variabler Breite

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Daffy0815
Beiträge: 390
Registriert: 15.06.2005 00:44
Wohnort: 65719 Hofheim
Kontaktdaten:

Textgadget mit variabler Breite

Beitrag von Daffy0815 »

Hallo Leute,

ist es möglich ein Textgadget mit variabler Länge zu erzeugen?

Man stelle sich eine Ausgabe in der Form "Zählerstand: 123" vor.
Die Zahl hinter "Zählerstand:" kann z. B. von 0 - 10 Dezimalstellen lang sein und hat eine andere Vorder-/Hintergrundfarbe als der Text "Zählerstand:".

Es soll dann mit SetGadgetText(#Gadget, StrU(Zaehlerstand.i)) der Zählerstand aktualisiert werden.
Dabei soll das Ausgabefeld nicht breiter sein als der für die jeweilige Stellenzahl benötigte Platz!

Oder anders herum gefragt: Kann man "TextGadget(#Gadget,...) bei immer gleicher Nummer (#Gadget) beliebig oft aufrufen ohne das dabei mit der Zeit irgendetwas "überläuft" bzw. ist es notwendig es vorher mit "FreeGadget(#Gadget)" immer erst zu löschen?

Gruß

Daffy
Wir sind LINUX
Widerstand ist zwecklos - Sie werden emuliert
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Re: Textgadget mit variabler Breite

Beitrag von TomS »

Warum willst du ein neues Gadget mit der gleichen ID erstellen?
Dafür gibt's ResizeGadget()
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: Textgadget mit variabler Breite

Beitrag von CSHW89 »

Zu deiner Frage:
Daffy0815 hat geschrieben:Oder anders herum gefragt: Kann man "TextGadget(#Gadget,...) bei immer gleicher Nummer (#Gadget) beliebig oft aufrufen ohne das dabei mit der Zeit irgendetwas "überläuft" bzw. ist es notwendig es vorher mit "FreeGadget(#Gadget)" immer erst zu löschen?
Wenn du für die ID #PB_Any benutzt, dann musst du vorher FreeGadget benutzen, mit festen IDs wird beim Erstellen neuer Gadgets, das alte Gadget mit der gleichen ID freigegeben. Es existieren also nicht mehrere Gadgets mit der gleichen ID.

Allerdings, wie TomS schon sagte, ResizeGadget würde für dein Beispiel vollkommen ausreichen.

lg kevin
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Benutzeravatar
Daffy0815
Beiträge: 390
Registriert: 15.06.2005 00:44
Wohnort: 65719 Hofheim
Kontaktdaten:

Re: Textgadget mit variabler Breite

Beitrag von Daffy0815 »

Vielen Dank für die Antworten!

Das mit dem ResizeGadget kannte ich noch nicht.
Wobei hier noch Anzumerken ist, dass es nur dann funktioniert wenn die TextGadget-Funktion nicht mit einem Leerstring aufgerufen wurde.
Falls doch, erscheint nach ResizeGadget als Ausgabe "_" (Soviele Unterlängen wie es die neue Breite zulässt).

Auch das mit dem Aufruf der Funktionen mit der gleichen Gadgetnummer war etwas was ich schon lange wissen wollte.

Gruß

Daffy
Wir sind LINUX
Widerstand ist zwecklos - Sie werden emuliert
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Re: Textgadget mit variabler Breite

Beitrag von TomS »

Daffy0815 hat geschrieben:... nur dann funktioniert wenn die TextGadget-Funktion nicht mit einem Leerstring aufgerufen wurde.
Falls doch, erscheint nach ResizeGadget als Ausgabe "_" (Soviele Unterlängen wie es die neue Breite zulässt).
Kann ich nicht nachvollziehen.
Hast bitte mal einen Beispielcode, der das Verhalten zeigt?

Code: Alles auswählen

hWnd = OpenWindow(#PB_Any, 0, 0, 800, 600, "Fenster", #PB_Window_ScreenCentered|#PB_Window_MinimizeGadget|#PB_Window_SizeGadget)

TextGadget(0, 5, 5, 100, 20, "Hallo Welt",  #PB_Text_Border)



Repeat
	event = WaitWindowEvent(20)
	If event = #PB_Event_SizeWindow
		ResizeGadget(0, 5,5, WindowWidth(hWnd)-10, WindowHeight(hWnd)-10)
	EndIf 
Until event = #PB_Event_CloseWindow
End
So geht das. Da sind keine _ oder sonstige Fragmente.
Antworten