Seite 1 von 1

Ist die Ausgabelänge in einer Statuszeile beschränkt?

Verfasst: 27.12.2006 10:13
von pebo
Hallo PB-Gemeinde,

da ich neu in der PureBasic-Gemeinde und insbesondere hier im Forum bin, möchte ich mich zuerst mal kurz vorstellen:
man ruft mich Peter, bin Baujahr 59 (aber noch gut erhalten) und lebe im schönen Saarland. Meine Hobbies sind neben dem Computer noch Drachen steigen lassen, bzw. Lenkdrachen fliegen.

Ich mache gerade meine ersten Gehversuche in PB und habe auch schon die erste Frage :wink:
Damit ihr besser versteht was ich meine, hier mal ein kurzer Beispielcode, wenn ihr den laufen lässt seht ihr was ich meine:

Code: Alles auswählen

Enumeration
  #Window_0
  #StatusBar_0
EndEnumeration

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 176, 34, 750, 300, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateStatusBar(#StatusBar_0, WindowID(#Window_0))
    	StatusBarText(#StatusBar_0, #Window_0, " abcdefghijklmnopqrstuvwxyz 0123456789  abcdefghijklmnopqrstuvwxyz 0123456789  abcdefghijklmnopqrstuvwxyz 0123456789  abcdefghijklmnopqrstuvwxyz")
    EndIf
  EndIf
EndProcedure

Open_Window_0()

Repeat ; Start of the event loop
  
  Event = WaitWindowEvent() ; This line waits until an event is received from Windows
  WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
  GadgetID = EventGadget() ; Is it a gadget event?
  EventType = EventType() ; The event type
  ;You can place code here, and use the result as parameters for the procedures
  If Event = #PB_Event_Gadget
  EndIf
  
Until Event = #PB_Event_CloseWindow ; End of the event loop
End
Es dreht sich um die Statuszeile. Wenn das Fenster so ca. 690 breit ist, wird mir der Text den ich in die Statuszeile eingefügt habe, bis zum Ende angezeigt. Mache ich das Fenster breiter als 690, wird der Text nicht mehr bis zum Ende ausgegeben. In meinem Beispiel ist das Fenster 750 breit und ich habe genügend Text eingefügt der bis zum Ende der Statuszeile gehen müsste.
Meine Frage: Ist die Ausgabelänge in einer Statuszeile irgendwie eingeschränkt, hängt das mit der Bildschirmauflösung zusammen oder gibt es sonst einen Grund warum der Text einfach abgeschnitten wird?

Bin für jeden Tipp dankbar!

Viele Grüsse
Peter

Re: Ist die Ausgabelänge in einer Statuszeile beschränkt?

Verfasst: 27.12.2006 14:06
von Kiffi
Hallo pebo,

willkommen im und an Board :-)

> Meine Frage: Ist die Ausgabelänge in einer Statuszeile irgendwie
> eingeschränkt, hängt das mit der Bildschirmauflösung zusammen
> oder gibt es sonst einen Grund warum der Text einfach abgeschnitten
> wird?

Das scheint eine Beschränkung von Windows zu sein. Im englischen Forum
hat Fred so etwas erwähnt: http://www.purebasic.fr/english/viewtopic.php?t=22711

Bei mir (Windows XP) macht er bei 128 Zeichen Schluss (kann aber bei
anderen Windows-Versionen auch anders sein).

Grüße ... Kiffi

Re: Ist die Ausgabelänge in einer Statuszeile beschränkt?

Verfasst: 27.12.2006 15:11
von pebo
Hallo Kiffi,
....schnipp
Das scheint eine Beschränkung von Windows zu sein. Im englischen Forum
hat Fred so etwas erwähnt: http://www.purebasic.fr/english/viewtopic.php?t=22711

Bei mir (Windows XP) macht er bei 128 Zeichen Schluss (kann aber bei
anderen Windows-Versionen auch anders sein).

Grüße ... Kiffi
vielen Dank für die Info!
Schade, wenn ich den Beitrag im englischen Forum richtig übersetzt habe, sind einfach nicht mehr Zeichen möglich /:->

Gruss
Peter

Verfasst: 27.12.2006 15:27
von mk-soft
Hallo pebo,

auch von mir willkommen im Forum.

Vielleicht mit "AddStatusBarField(Breite)" die Statusbar aufteilen.

FF :wink:

Re: Ist die Ausgabelänge in einer Statuszeile beschränkt?

Verfasst: 27.12.2006 16:34
von Andreas
pebo hat geschrieben:Hallo Kiffi,
Schade, wenn ich den Beitrag im englischen Forum richtig übersetzt habe, sind einfach nicht mehr Zeichen möglich /:->
Gruss
Peter
Das sollte Dich aber nicht daran hindern mehr Text anzuzeigen.

Code: Alles auswählen

Enumeration
  #Window_0
  #StatusBar_0
  #Text_0
EndEnumeration

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 10,10,900,400, "New window ( 0 )", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
  If CreateGadgetList(WindowID(0))
  Text$ = "abcdefghijklmnopqrstuvwxyz 0123456789  abcdefghijklmnopqrstuvwxyz 0123456789  abcdefghijklmnopqrstuvwxyz 0123456789  abcdefghijklmnopqrstuvwxyz" 
  Text$ + " abcdefghijklmnopqrstuvwxyz 0123456789  abcdefghijklmnopqrstuvwxyz 0123456789  abcdefghijklmnopqrstuvwxyz 0123456789  abcdefghijklmnopqrstuvwxyz" 
  Text$ + " abcdefghijklmnopqrstuvwxyz 0123456789  abcdefghijklmnopqrstuvwxyz 0123456789  abcdefghijklmnopqrstuvwxyz 0123456789  abcdefghijklmnopqrstuvwxyz" 
  Text$ + " abcdefghijklmnopqrstuvwxyz 0123456789  abcdefghijklmnopqrstuvwxyz 0123456789  abcdefghijklmnopqrstuvwxyz 0123456789  abcdefghijklmnopqrstuvwxyz" 
  Text$ + " abcdefghijklmnopqrstuvwxyz 0123456789  abcdefghijklmnopqrstuvwxyz 0123456789  abcdefghijklmnopqrstuvwxyz 0123456789  abcdefghijklmnopqrstuvwxyz" 
  TextGadget(#Text_0, 3, 3,880,70, Text$)
    If CreateStatusBar(#StatusBar_0, WindowID(#Window_0))
       SendMessage_(StatusBarID(#StatusBar_0),#SB_SETMINHEIGHT,80,0);minimale Hoehe (80pixel)setzen
       SendMessage_(StatusBarID(#StatusBar_0),#WM_SIZE,0,0);neuzeichnen
       SetParent_(GadgetID(#Text_0),StatusBarID(#StatusBar_0));Textgadget in Statusbar
    EndIf
  EndIf
  EndIf
EndProcedure

Open_Window_0()

Repeat ; Start of the event loop
 
  Event = WaitWindowEvent() ; This line waits until an event is received from Windows
  WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
  GadgetID = EventGadget() ; Is it a gadget event?
  EventType = EventType() ; The event type
  ;You can place code here, and use the result as parameters for the procedures
  If Event = #PB_Event_Gadget
  EndIf
 
Until Event = #PB_Event_CloseWindow ; End of the event loop
End

Verfasst: 28.12.2006 01:38
von pebo
Hallo Andreas,

danke für dein Beispiel!
So ganz blick ich da noch nicht durch, zurzeit seh ich nur das Du mit API-Aufrufen gearbeitet hast. Aber ich bin ja noch Anfänger und kann nur lernen von solchen Beispielen :allright:

Gruss
Peter

Verfasst: 28.12.2006 01:44
von Kiffi
> So ganz blick ich da noch nicht durch

Andreas nimmt ein TextGadget (welches die Zeichenbegrenzung ja nicht hat)
und pflanzt es mit SetParent_() in die Statusbar ein.

Falls noch weitere Unklarheiten sind: Frag ruhig!

Grüße ... Kiffi

Verfasst: 28.12.2006 08:36
von H.Brill
pebo hat geschrieben:Hallo PB-Gemeinde,

da ich neu in der PureBasic-Gemeinde und insbesondere hier im Forum bin, möchte ich mich zuerst mal kurz vorstellen:
man ruft mich Peter, bin Baujahr 59 (aber noch gut erhalten) und lebe im schönen Saarland. Meine Hobbies sind neben dem Computer noch Drachen steigen lassen, bzw. Lenkdrachen fliegen.

Peter
Hallo Peter und willkommen.
Schön, daß wir noch nen Saarländer bei uns haben. Bin auch einer
(Baujahr 1958 ) und wohne in Illlingen bei Neunkirchen /Saar.
Wo kommst du denn genau her ?