Deutsch
Includes

Docksplitter für XProfan 10

 
Da XProfan bisher keinen Splitter hat, hab ich mal die Docksplitter.dll von David SZAFRANSKI für XProfan gewrapped. Die DLL ist lizensiert unter GPL.

So einem Splitter kann man 2 vorher erstellte Controls zuordnen, wobei sich ListBoxen, Edits und ähnliches besonders eignen. Mit der Maus läßt sich jetzt die größer dieser beiden Controls verändern, bzw. per Mausclick auch eins ganz ausblenden. Bei der Umsetzung im Hinterkopt hab ich natürlich eine Implementation in XProfEdit

Snapschuß:



Das Paket besteht aus einer sehr kleinen DLL, einer Include-Datei, einer Header-Datei, sowie dem oben abgebildeten Beispiel.
 $I DockSplitter.inc
Declare DLLhWnd&
DllhWnd& = Splitter_Init()

IfNot DllhWnd& : End : EndIf

    WindowStyle 26
    Window 100, 100 - 600, 400
    Declare hList&, hEdit&, hSplitter&
    hList& = Create(ListBox, %hWnd, , 0, 0, 0, 0)

    WhileLoop 1, 10, 1

        AddString(hList&, Test  + @Str$(&Loop))

    EndWhile

    hEdit& = Create(MultiEdit, %hWnd, , 0, 0, 0, 0)
    SetText hEdit&, Dies ist ein kleiner erster Test des DockSplitters!
    hSplitter& = Create(Splitter, 0, 0, 600, 400)
    Splitter_SetPanel(hSplitter&, hList&, hEdit&)
    Splitter_SetPosition hSplitter&, 150
    Declare Ende%

    WhileNot Ende%

        WaitInput

    EndWhile

    Splitter_Exit DllhWnd&

Viel Spaß damit

30 kB
Kurzbeschreibung: Version 0.5
Hochgeladen:08.10.2006
Ladeanzahl288
Herunterladen
 
08.10.2006  
 




Jörg
Sellmeyer
Supersache! Funktioniert ausgezeichnet.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
08.10.2006  
 



Ausser den 3 Grundfunktionen hab ich noch nichts getestet
Wenn alles auf anhieb funktionieren sollte, wäre natürlich toll

Wer bauts in XProfEd ein?
 
08.10.2006  
 




Jörg
Sellmeyer
Scheint bei sonem komplexenProgramm doch schwieriger zu sein

Das:
KompilierenMarkierenSeparieren
 $I DockSplitter.inc
Declare hDockDll&,hSplitterWnd&
hDockDll& = Splitter_Init(DockSplitter.dll)
hSplitterWnd& = Create(Splitter, 0,46, Width(%hwnd),(height(%HWnd)-70))
Splitter_SetPanel(hSplitterWnd&, Navlist&, TabControl&)
Splitter_SetPosition hSplitterWnd&, 146
eingebaut vor dem endgültigen Anzeigen des Fensters, verursacht am Ende bei Splitter_Exit(hDockDll&) einen Absturz nach FreeDll. Im Programm selber läuft es prima.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
08.10.2006  
 




Frank
Abbing
Und wenn du die betroffenen Controls zum Ende hin mit DestroyWindow() zerstörst?
 
08.10.2006  
 




Jörg
Sellmeyer
Frank Abbing
Und wenn du die betroffenen Controls zum Ende hin mit DestroyWindow() zerstörst?


Hatte ich auch schon dran gedacht aber das hier bringt die Lösung:
KompilierenMarkierenSeparieren
DestroyWindow(hSplitterWnd&)

Nu fungts brimö!
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
08.10.2006  
 




Jörg
Sellmeyer
Gibts eigentlich ne Möglichkeit die y%-Position des Kindcontrols festzulegen oder wird die immer auf 0 gesetzt?

Gruß
Jörg
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
08.10.2006  
 




Michael
Wodrich
In Masm32 ist unter Example6Splitter auch ein Beispiel zum Splitter. Wer also etwas tiefer einsteigen möchte...

Schöne Grüße
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
08.10.2006  
 




Jörg
Sellmeyer
So was geht übrigens auch:
KompilierenMarkierenSeparieren
 $I DockSplitter.inc
Declare DLLhWnd&
DllhWnd& = Splitter_Init(DockSplitter.dll)

IfNot DllhWnd& : End : EndIf

    WindowStyle 26
    Window 100, 100 - 600, 400
    Declare hList&, hList1&, hEdit&, hSplitter&,hSplitter1&
    hList& = Create(ListBox, %hWnd, , 0, 20, 0, 0)
    hList1&=Create(ListBox, %hWnd, , 0, 20, 0, 0)

    WhileLoop 1, 10, 1

        AddString(hList&, Test1  + @Str$(&Loop))

    EndWhile

    WhileLoop 1, 10, 1

        AddString(hList1&, Test2  + @Str$(&Loop))

    EndWhile

    hEdit& = Create(MultiEdit, %hWnd, , 0, 0, 0, 0)
    SetText hEdit&, Dies ist ein kleiner erster Test des DockSplitters!
    hSplitter& = Create(Splitter, 0, 0, 450, 400)
    hSplitter1&=Create(Splitter, 0, 0, 600, 400)
    Splitter_SetPanel(hSplitter&, hList&, hEdit&)
    Splitter_SetPanel(hSplitter1&, hSplitter&, hList1&)
    Splitter_SetPosition hSplitter&, 150
    Splitter_SetPosition hSplitter1&, 450
    Declare Ende%

    WhileNot Ende%

        SetText hEdit&,Str$(Width(hEdit&))
        WaitInput

    EndWhile

    DestroyWindow(hSplitter&)
    DestroyWindow(hSplitter1&)
    Splitter_Exit DllhWnd&
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
08.10.2006  
 



Der DockSplitter ist auch in Basic geschrieben
In XBlite (XBasic abkömmling), Source findet ihr hier: [...] 
 
08.10.2006  
 




Georg
Hovenbitzer
Hallo zusammen,

eine Sache ist mir mit dem zweiten Demo, das was drei Fenster hat, aufgefallen.
- man klappt zuerst die rechte Seite ein komplett per Mausklick ein, dabei wird auch das linke Fenster mit eingeklappt
- dann per Mausklick wieder ausklappen, danach ist das recht und das mittlere Fenster sichtbar
- nun ist es per Mausklick nicht mehr möglich das ganz linke Fenster auszuklappen

Hat da jemand einen Tip ?!

Ach ja, getest mit XProfan 9.1, ich hatte mir die eine Sub.Procedur geändert.
 
Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a)
12.10.2006  
 



Vielleicht mal in die Headerdatei schauen
KompilierenMarkierenSeparieren
 $H docksplitter.ph
 $I Docksplitter.inc
Declare Dllhwnd&
Dllhwnd& = Splitter_init(DockSplitter.dll)

Ifnot Dllhwnd& : End : Endif

    Windowstyle 26
    Window 100, 100 - 600, 400
    Declare Hlist&, Hlist1&, Hedit&, Hsplitter&,Hsplitter1&
    Hlist& = Create(ListBox, %Hwnd, , 0, 20, 0, 0)
    Hlist1&=Create(ListBox, %Hwnd, , 0, 20, 0, 0)

    Whileloop 1, 10, 1

        Addstring(Hlist&, Test1  + @Str$(&Loop))

    Endwhile

    Whileloop 1, 10, 1

        Addstring(Hlist1&, Test2  + @Str$(&Loop))

    Endwhile

    Hedit& = Create(MultiEdit, %Hwnd, , 0, 0, 0, 0)
    Settext Hedit&, Dies ist ein kleiner erster Test des DockSplitters!
    Hsplitter& = Create(Splitter, 0, 0, 450, 400)
    Hsplitter1&=Create(Splitter, 0, 0, 600, 400)
    Splitter_setpanel(Hsplitter&, Hlist&, Hedit&)
    Splitter_setpanel(Hsplitter1&, Hsplitter&, Hlist1&)
    Splitter_SetDockingStyle(Hsplitter1&, ~DS_RIGHT)
    Splitter_setposition Hsplitter&, 150
    Splitter_setposition Hsplitter1&, 450
    Declare Ende%

    Whilenot Ende%

        SetText hEdit&,Str$(Width(hEdit&))
        Waitinput

    Endwhile

    Destroywindow(Hsplitter&)
    Destroywindow(Hsplitter1&)
    Splitter_exit Dllhwnd&

Also Header einbinden und mit Splitter_SetDockingStyle(Hsplitter1&, ~DS_RIGHT) als rechtes Docking setzen
 
12.10.2006  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

20.336 Betrachtungen

Unbenanntvor 0 min.
Gast.081506.09.2024
Rc31.01.2022
Jörg Sellmeyer23.06.2020
jacdelad20.12.2018
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