Tabber - Feld Ausrichtung ändern

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

danielos

Betreff: Tabber - Feld Ausrichtung ändern

BeitragMi, Okt 08, 2008 11:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!
Also ich hab mal wieder eine Frage:
Geht es irgendwie, die Ausrichtung eines Tabberfeldes zu ändern:

Diese Skizze verdeutlicht das Problem Smile

Normaler Tabber:

------------------------|Tabbername|_________ --------------
------------------------|.......................................|--------------
------------------------|.......................................|--------------
------------------------|___________________ |--------------
-----------------------------------------------------------------------

Erwünschter Tabber:

- ______________|Tabbername|_________________ |--
-|.....................................................................................|-
-|.....................................................................................|-
-|__________________________________________ |-
-----------------------------------------------------------------------

MfG Danielos

d-bug

BeitragMi, Okt 08, 2008 11:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du den Tabber mittig haben willst, bleibt dir nur übrig auf OSX umzusteigen. Wink

Nee, mal im ernst, es ist bei Windows nicht möglich die Ausrichtung der Reiter zu ändern. Da müsstest du dem Benutzer schon WindowBlinds aufzwingen oder so. Mit MaxGUI Bordmitteln ist es jedenfalls, meines Wissens, nicht möglich!
  • Zuletzt bearbeitet von d-bug am Mi, Okt 08, 2008 12:21, insgesamt 2-mal bearbeitet
 

danielos

BeitragMi, Okt 08, 2008 11:30
Antworten mit Zitat
Benutzer-Profile anzeigen
danke für die antwort...
schade, sähe einfach besser aus Rolling Eyes

Geeecko

BeitragDo, Okt 09, 2008 13:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Huhu!
Die Tab-Items richten sich nun über den ganzen Tabber aus, die Beschriftung ist aber leider links.
Code: [AUSKLAPPEN]

'-----Datei: Tabber.c-----
#include "windows.h"
int SetMinSize(int gadget, int w){
 SendMessage( (HWND)gadget, 4913, 0,  w);
}

'-----Datei: TabberTest.bmx-----
SuperStrict

Import maxgui.drivers

Import "Tabber.c"
Extern
   Function SetMinSize:Int(gadget:Int,w:Int)
End Extern



Global Window:TGadget = CreateWindow("Test",0,0,500,500)
Global Tabber:TGadget = CreateTabber(100,100,300,300,Window)
AddGadgetItem(Tabber,"!hi")
AddGadgetItem(Tabber,"!hi")

UpdateTabber(Tabber)


Repeat ; WaitEvent() ;Forever

Function UpdateTabber(Tabber:TGadget)
   SetMinSize(QueryGadget(Tabber,QUERY_HWND),ClientWidth(Tabber)/CountGadgetItems(Tabber))
End Function


Hoffe du kannst damit was anfangen....

lg MD



Edit:
Man kann es auch ohne Import machen..... hatte nur vergessen es rauszunehmen, weil ich davor schon was andere probiert hatte.

Edit²:
Neuer Code ohne weitere Date:
Code: [AUSKLAPPEN]
SuperStrict

Import maxgui.drivers


Extern "win32"
   Function SendMessage(gadget:Int,id:Int,wparam:Int,lparam:Int) = "SendMessageA@16"
End Extern




Global Window:TGadget = CreateWindow("Test",0,0,500,500)
Global Tabber:TGadget = CreateTabber(100,100,300,300,Window)
AddGadgetItem(Tabber,"!hi")
AddGadgetItem(Tabber,"!hi")

UpdateTabber(Tabber)


Repeat ; WaitEvent() ;Forever


Function UpdateTabber(Tabber:TGadget)
   SendMessage(QueryGadget(Tabber,QUERY_HWND),TCM_SETMINTABWIDTH,0,ClientWidth(Tabber)/CountGadgetItems(Tabber))
End Function
 

danielos

BeitragDo, Okt 09, 2008 14:37
Antworten mit Zitat
Benutzer-Profile anzeigen
danke Meister_Dieb! Smile
kann man es auch hinkriegen, dass nur ein einziges gadgetitem erstellt wird, und das sich dann nicht nur nach rechts, sondern auch nach links ausbreitet (ich hoffe man versteht was ich meine ^^ )

Geeecko

BeitragDo, Okt 09, 2008 15:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Meinst du, das der Text in der Mitte ist?
Werde ich mal schauen, ob ich das hinbekomme^^
Aber wenn du nur ein Item haben willst, machst du die anderen weg.
Also so:
Code: [AUSKLAPPEN]

AddGadgetItem(Tabber,"!hi")
AddGadgetItem(Tabber,"!hi")

nach:
Code: [AUSKLAPPEN]

AddGadgetItem(Tabber,"Ich bin ein Item")


lg MD

BtbN

BeitragDo, Okt 09, 2008 15:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Du solltest vielleicht erwähnen, dass dieser Code nur auf Windows funktioniert und auf allen andern Systemen zu fehlern führt.
 

danielos

BeitragDo, Okt 09, 2008 15:44
Antworten mit Zitat
Benutzer-Profile anzeigen
@Meister_Dieb

ich meine es so, wie meine (eindrucksvolle Smile ) skizze nr. 2 zeigt, d.h. dass es nur den Tab "Tabbername" gibt, davor oder dannach aber keine anderen, und dieser eine trotzdem in der mitte ist... ist das jetzt verständlicher ?

@BtbN
Danke für den Hinweis!

Geeecko

BeitragDo, Okt 09, 2008 15:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

SuperStrict

Import maxgui.drivers


?win32
Extern "win32"
   Function SendMessage(gadget:Int,id:Int,wparam:Int,lparam:Int) = "SendMessageA@16"
End Extern

Function UpdateTabber(Tabber:TGadget)
   SendMessage(QueryGadget(Tabber,QUERY_HWND),TCM_SETMINTABWIDTH,0,ClientWidth(Tabber)/CountGadgetItems(Tabber))
End Function
?


Global Window:TGadget = CreateWindow("Test",0,0,500,500)
Global Tabber:TGadget = CreateTabber(100,100,300,300,Window)
AddGadgetItem(Tabber,"!hi")
AddGadgetItem(Tabber,"!hi")

UpdateTabber(Tabber)


Repeat ; WaitEvent() ;Forever


Unter MacOS ist es glaub ich standard, und für die anderes OS kenn ichs nicht Wink
Fals es wer weiß, kann er es ja hinzufügen.

lg MD

Edit:
Auch bei nur einem Item nimmt es den ganzen Tabber ein. Der Text ist nur noch nicht in der Mitte.
Ich werde heute Abend einmal schauen, ob ich den Text in die Mitte bekomme.

BtbN

BeitragDo, Okt 09, 2008 16:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Du solltest vllt. noch eine leere funktion für andere OS hinzufügen, sonst funktioniert er immernoch nur auf Windows.
 

danielos

BeitragDo, Okt 09, 2008 16:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, ich hab hier jetzt mal ein Bild, an dem ich das gewünschte deutlich machen kann:
user posted image
So soll der Tab 1 aussehen, nur dass es den Tab 0 NICHT geben soll...

Danke für alle Antworten Smile

MfG Daniel

d-bug

BeitragDo, Okt 09, 2008 17:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Also noch mal langsam, zum mitdenken! Du willst die Reiter auf dem Panel zentrieren, richtig? Das geht von Haus aus NUR auf OS-X! Aber ich kann mich gerne noch zehn mal wiederholen. Wink
 

danielos

BeitragDo, Okt 09, 2008 19:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay Okay Smile
wollte nur, dass eindeutig klarheit herrscht, was ich eig. meine Wink

Geeecko

BeitragDo, Okt 09, 2008 20:32
Antworten mit Zitat
Benutzer-Profile anzeigen
*MitDBugkämpf* Very Happy Wink
Ich denke es geht auch mit ein paar WinAPI aufrufen. Aber manche wollten bei mir nicht funktioniren. Aber ich denke es geht.
http://msdn.microsoft.com/en-u...S.85).aspx
schau dir das einfach mal an.

lg MD
 

jsp

BeitragFr, Okt 10, 2008 0:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Beim Tabber in die Mitte ruecken kann ich leider auch nicht helfen, aber fuer den Text kann man das Padding benutzen. Vielleicht hilft es ja weiter...

Code: [AUSKLAPPEN]
SuperStrict

Import maxgui.drivers


?win32
Extern "win32"
   Function SendMessage(gadget:Int,id:Int,wparam:Int,lparam:Int) = "SendMessageA@16"
End Extern

Function UpdateTabber(Tabber:TGadget)
   SendMessage(QueryGadget(Tabber,QUERY_HWND),TCM_SETMINTABWIDTH,0,ClientWidth(Tabber)/CountGadgetItems(Tabber))
   SendMessage(QueryGadget(Tabber,QUERY_HWND),TCM_SETPADDING,0,65 )
End Function
?


Global Window:TGadget = CreateWindow("Test",0,0,500,500)
Global Tabber:TGadget = CreateTabber(100,100,300,300,Window)
AddGadgetItem(Tabber,"!hi")
AddGadgetItem(Tabber,"!hi")

UpdateTabber(Tabber)


Repeat ; WaitEvent() ;Forever


-jsp-
Logic Gui Professional a Gui Designer for MaxGui
 

danielos

BeitragFr, Okt 10, 2008 13:39
Antworten mit Zitat
Benutzer-Profile anzeigen
danke jsp!
kann man das icon auch in die mitte versetzten ?

Geeecko

BeitragFr, Okt 10, 2008 20:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Icon sollte eigentlich mit in die Mitte gesetzt werden. TCM_SETPADDING setzt Text und Icon in die mitte, laut MSDN.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group