Deutsch
Quelltexte/ Codesnippets

Abreißbare Toolbar

 

ByteAttack
Beispiel und Bitmap in der ZIP
 $H windows.ph
 $H messages.ph
STRUCT RECT = Left&,Righ&,Top&,Bottom&
Declare bereich#,be#,objekt#,erg&,erg2&,x&,y&,links1&,oben1&,links2&,oben2&
Dim be#,8
Dim bereich#,1024
Dim objekt#,16
' Ermittelt das Handle unter dem Mauszeiger

Proc MPos

    ~GetCursorPos(be#)
    x&=Long(be#,0)
    y&=Long(be#,4)
    erg&=~WindowFromPoint(x&,y&)

EndProc

' Verschiebt die Toolbar

Proc MoveIt

    Parameters wnd&,lParam&
    ~GetClientRect(wnd&,R#)
    ~MapWindowPoints(wnd&,%hwnd,R#,2)

    If ~PtInRect(R#,LoWord(lParam&),HiWord(lParam&))

        ~ReleaseCapture()
        UseCursor 5
        SendMessage(wnd&,~WM_SYSCOMMAND,~SC_MOVE+1,0)
        UseCursor 0
        Return 0

    endif

    Return 1

EndProc

Proc PosInWnd

    Clear objekt#
    ~GetWindowRect(STB1&,objekt#)
    ~ScreenToClient(%HWND,objekt#)
    links1&=Long(objekt#,0)
    oben1&=Long(objekt#,4)
    Clear objekt#
    ~GetWindowRect(STB2&,objekt#)
    ~ScreenToClient(%HWND,objekt#)
    links2&=Long(objekt#,0)
    oben2&=Long(objekt#,4)

EndProc

' Ausrichten

Proc UpdateToolbar

    Parameters TB%,handle&
    PosInWnd

    if TB%=1

        if links1&<5

            SetWindowpos STB1&=0,2-width(STB1&),32;0
            SetWindowpos STB2&=width(STB1&),2-width(STB2&),32;0

        elseif links1&>width(STB1&)

            SetWindowpos STB2&=0,2-width(STB2&),32;0
            SetWindowpos STB1&=width(STB2&),2-width(STB1&),32;0

        else

            if links2&=0

                SetWindowpos STB1&=width(STB2&),2-width(STB1&),32;0

            else

                SetWindowpos STB1&=0,2-width(STB1&),32;0

            endif

        endif

    elseif TB%=2

        if links2&<5

            SetWindowpos STB2&=0,2-width(STB2&),32;0
            SetWindowpos STB1&=width(STB2&),2-width(STB1&),32;0

        elseif links2&>width(STB2&)

            SetWindowpos STB2&=width(STB1&),2-width(STB2&),32;0
            SetWindowpos STB1&=0,2-width(STB1&),32;0

        else

            if links1&=0

                SetWindowpos STB2&=width(STB1&),2-width(STB2&),32;0

            else

                SetWindowpos STB2&=0,2-width(STB2&),32;0

            endif

        endif

    endif

EndProc

' Hauptfenster
WindowStyle 24
WindowTitle "Abreißbare Toolbar"
Window %maxX/2-320,(%maxY/2-240)-640,480
Cls ~GetSysColor(16)
UsePen 0,1,~GetSysColor(15)
UseBrush 1,~GetSysColor(15)
Rectangle 0,0-%maxX,36
UsePen 0,1,~GetSysColor(15)
Line 0,0-%maxX,0
UsePen 0,1,RGB(255,255,255)
Line 0,1-%maxX,1
UsePen 0,1,0
Line 0,34-%maxX,34
UsePen 0,1,RGB(255,255,255)
Line 0,35-%maxX,35
var CB&=Create("CheckBox",%hwnd,"Ausrichten",530,420,90,20)
SetCheck CB&,1
var STB1&=Control("DIALOG","",$54000000,0,2,105,32,%hwnd,0,%hinstance)
var SB1&=Create("Button",STB1&,"",4,2,4,28)
EnableWindow SB1&,0
var STB2&=Control("DIALOG","",$54000000,105,2,136,32,%hwnd,0,%hinstance)
var SB2&=Create("Button",STB2&,"",4,2,4,28)
EnableWindow SB2&,0
var TB1&=Control("DIALOG","",$54000000,10,0,95,32,STB1&,0,%hinstance)
var TB2&=Control("DIALOG","",$54000000,10,0,126,32,STB2&,0,%hinstance)
var long hBild = create("hPic", -1, $ProgDir+"test24.bmp")' <-------------- ggf. ANPASSEN !!!
var long hBildliste = create("ImageList", 24, 24, hBild, rgb(192,192,192))
var long hToolbar1 = create("Toolbar", TB1&, hBildliste,0,0,2000,1)
var long hToolbar2 = create("Toolbar", TB2&, hBildliste,0,0,2000,1)
deleteobject hBild
Toolbar("AddButton", hToolbar1, 0, 100, "Neue Datei")
Toolbar("AddButton", hToolbar1, 1, 101, "Datei öffnen")
Toolbar("AddButton", hToolbar1, 2, 102, "Datei speichern")
Toolbar("AddButton", hToolbar2, 5, 200, "Ausschneiden")
Toolbar("AddButton", hToolbar2, 6, 201, "Kopieren")
Toolbar("AddButton", hToolbar2, 7, 202, "Einfügen")
Toolbar("AddButton", hToolbar2, 8, 203, "Löschen")
Var R# = New(RECT)
' Hauptprogrammschleife

WhileNot %Umessage = ~wm_close

    WaitInput
    MPos
    PosInWnd

    if erg&=STB1&

        SetWindowpos STB1&=links1&,oben1&-width(STB1&),height(STB1&);0
        ~EnumChildWindows(%hwnd,ProcAddr("MoveIt",2),MakeLong(%mousex,%mousey))
        Case GetCheck(CB&)=1:UpdateToolbar 1,STB1&

    endif

    if erg&=STB2&

        SetWindowpos STB2&=links2&,oben2&-width(STB2&),height(STB2&);0
        ~EnumChildWindows(%hwnd,ProcAddr("MoveIt",2),MakeLong(%mousex,%mousey))
        Case GetCheck(CB&)=1:UpdateToolbar 2,STB2&

    endif

EndWhile

'Ende
Dispose hdr#
Dispose R#
Dispose bereich#
Dispose objekt#
end

1.008 kB
Bezeichnung:Abreißbare Toolbar
Hochgeladen:10.11.2015
Ladeanzahl198
Herunterladen
 
Website:  [...] 
Facebook:  [...] 
10.11.2015  
 




Jörg
Sellmeyer
Extrem cool!
 
XProfan X3
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
10.11.2015  
 




E.T.
Jo, dat fetzt
 
XProfan X3
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
11.11.2015  
 




ByteAttack
Danke!

Hab noch ein kleinen Fehler 'ausgebügelt'. Die aktuell verschiebbare Toolbar ist jetzt immer im Vordergrund...
(War wohl zu müde gestern)
 
XProfan X3
Website:  [...] 
Facebook:  [...] 
11.11.2015  
 




Georg
Teles
Richtig gut
 
XProfan X3
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

11.11.2015  
 



Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

8.249 Betrachtungen

Unbenanntvor 0 min.
Gast.081503.10.2024
Member 862464112.05.2024
Thomas Freier04.02.2024
H.Brill01.10.2023
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie