Text vertikal zentrieren (TextGadget)

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

@Kaeru Gaman
>die CheckBox ist ein Button mit anderen eigenschaften.
>im grunde ist Button eine UnterKlasse der Gadgets,
>wo einige dazugehören, die wir eben als eigenständige gadgets kennen...
Was hälst du davon, wenn ich ne Sourcedatei erstelle, wo alle Werte sind (für jedes Gadgets natürlich) und deren Beschreibungen.
Und diese Sourcedatei kann man includen und für seine Projekte benutzen.
Ich hätte Bock drauf, nur ist die Frage, ob das umsonst wär?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Nen Blick in die SDK haette voellig gereicht.

SS_CENTERIMAGE hat geschrieben: Specifies that a bitmap is centered in the static control that contains it. The control is not resized, so that a bitmap too large for the control will be clipped. If the static control contains a single line of text, the text is centered vertically in the client area of the control.
Benutzeravatar
D@nte
Beiträge: 324
Registriert: 24.04.2007 15:33
Wohnort: Berlin

Beitrag von D@nte »

>Wie hast du das ermittelt?
War das jetzt ernsthaft die Frage danach wie man HEX in BIN Zahlen wandelt?!

Kann ich mir zwar nit vorstellen aber trotzdem...

Code: Alles auswählen

Zahl.s = "340" ;hier die HEX ZAhl als String

Debug "Hex: h" + Zahl

For i = 1 To Len(Zahl)
  Erg1 = Erg1 + Val(Mid(Zahl,i,1))*Pow(16,Len(Zahl)-i)
Next i

Debug "Dec: d" + Str(Erg1)

Repeat
  Erg.s = Str(Erg1 % 2) + Erg
  Erg1 = Erg1 / 2
Until Erg1 = 0

Debug "Bin: b" + Erg
und

Code: Alles auswählen

1024 |  512 |  256 |  128 |   64 |   32 |   16 |    8 |    4 |    2 |    0
2^10 |  2^9 |  2^8 |  2^7 |  2^6 |  2^5 |  2^4 |  2^3 |  2^2 |  2^1 |  2^0
   0 |    1 |    1 |    0 |    1 |    0 |    0 |    0 |    0 |    0 |    0
Allerdings warum ist die Zentrierung nicht schon beim Flag $200 aufgetreten sondern anscheinend ers bei $340?!
Hab's nit getestet nur aus den vorhergehenden Posts geschlossen
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Es reicht das #SS_CENTERIMAGE flag alleine aber es funktioniert halt nur mit einer einzigen Zeile. Ist der Text länger als das Gadget breit wird der Text abgeschnitten. Zeilenumbrüche werden ebenfalls ignoriert.

Code: Alles auswählen

OpenWindow(0,0,0,320,240,"",#PB_Window_SystemMenu | 1)
CreateGadgetList(WindowID(0))
TextGadget(1,10,10,200,200,"Lorem ipsum dolor sit amet, " + #CRLF$ + "consetetur sadipscing elitr.",#SS_CENTERIMAGE | #WS_BORDER)

While WaitWindowEvent() ! #PB_Event_CloseWindow : Wend
Windows 10 Pro, 64-Bit / Outtakes | Derek
Jake
Beiträge: 121
Registriert: 28.05.2005 04:10
Wohnort: Berlin

Beitrag von Jake »

Nett das ihr euch so viel Arbeit gemacht habt, aber das Flag #SS_CENTERIMAGE hatte ich im PSDK auch schon gefunden.

Ich möchte in einem TextGadget den Text ändern und der soll dann halt nicht am oberen Rand kleben, das sieht nicht schön aus. Die Länge des Textes kannn also varriieren und ist evt. länger als das Gadget breit ist.

Scheint also keine einfache Lösung dafür zu geben.
MfG Jake
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Doch, es gibt eine einfache und plattfprmübergreifende Lösung (funzt also auf Win wie auf Linux):
Einfach mit StartDRawing() und den Befehlen TextHeight() und TextWidth() die Breite und Höhe des Textes ermitteln. Diese Befehle berücksichtigen die gerade eingestellte Schriftart.
Wenn du diese Daten hast, kannst du den Text im TextGadget() einfacher positionieren.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Antworten