| |
|
|
| 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 |
|
|
| |
|
|
|
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? |
|
|
| |
|
|
|
Jörg Sellmeyer | Scheint bei sonem komplexenProgramm doch schwieriger zu sein
Das: KompilierenMarkierenSeparieren 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? |
|
|
| |
|
|
|
Jörg Sellmeyer | |
|
| 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: [...] |
|
|
| |
|
|
|
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 |
|
|
| |
|
|