View previous topic :: View next topic |
Author |
Message |
cnodnarb Professional Member
Joined: 11 Sep 2002 Posts: 762 Location: Rockeledge, GA
|
Posted: Mon Apr 25, 2011 7:20 pm Post subject: flowlayout.dsu freeware/open source |
|
|
Hey folks!
This DSU FULLY implements a flowlayout similar to Java or HTML into Visual Dialogscript 5, and probably works with Visual DialogScript 6.
For the download, please use the tab key to follow the button flow.
Features:
Get horizontal padding
Set horizontal padding
Get vertical padding
Set vertical padding
flow down
flow up
flow left
flow right
get width for horizontal by number of items
get width for horizontal by percentage
get height for vertical by number of items
get height for vertical by percentage
reset variables for resize.
The only life this language has is what we breathe into it.
Freeware.
Code: |
#define function,flowlayout
#define command,flowlayout
:flowlayout
if @equal(%1,gethpadding)
exit %%flowhpadding
end
if @equal(%1,sethpadding)
%%flowhpadding = %2
exit
end
if @equal(%1,getvpadding)
exit %%flowvpadding
end
if @equal(%1,setvpadding)
%%flowvpadding = %2
exit
end
if @equal(%1,down)
%%flowtop = @sum(%%flowtop,%2,%%flowvpadding)
exit %%flowtop
end
if @equal(%1,right)
%%flowleft = @sum(%%flowleft,%2,%%flowhpadding)
exit %%flowleft
end
if @equal(%1,up)
%%flowtop = @sum(%%flowtop,-%2,-%%flowvpadding)
exit %%flowtop
end
if @equal(%1,left)
%%flowleft = @sum(%%flowleft,-%2,-%%flowhpadding)
exit %%flowleft
end
if @equal(%1,ph)
if @equal(%3,items)
%%flowreturn = @diff(@name(@fdiv(@dlgpos(,h),%2)),%%flowvpadding)
exit %%flowreturn
end
if @equal(%3,percent)
%2 = @fdiv(100,%2)
%%flowreturn = @diff(@name(@fdiv(@dlgpos(,h),%2)),%%flowvpadding)
exit %%flowreturn
end
%%flowreturn = @diff(@name(@fdiv(@dlgpos(,h),%2)),%%flowvpadding)
exit %%flowreturn
end
if @equal(%1,pw)
if @equal(%3,items)
%%flowreturn = @diff(@name(@fdiv(@dlgpos(,w),%2)),%%flowhpadding)
exit %%flowreturn
end
if @equal(%3,percent)
%2 = @fdiv(100,%2)
%%flowreturn = @diff(@name(@fdiv(@dlgpos(,w),%2)),%%flowhpadding)
exit %%flowreturn
end
%%flowreturn = @diff(@name(@fdiv(@dlgpos(,w),%2)),%%flowhpadding)
exit %%flowreturn
end
if @equal(%1,reset)
%%flowvpadding = 0
%%flowhpadding = 0
%%flowtop = 0
%%flowleft = 0
end
|
Description: |
|
Download |
Filename: |
flowlayout (2).zip |
Filesize: |
3.93 KB |
Downloaded: |
1795 Time(s) |
|
|
Back to top |
|
|
cnodnarb Professional Member
Joined: 11 Sep 2002 Posts: 762 Location: Rockeledge, GA
|
Posted: Sun May 01, 2011 8:29 pm Post subject: |
|
|
Wanna see something cool?
Change the window create command in the example.
Code: | DIALOG CREATE,New Dialog,-1,0,800,400,,resizable,notitle
REM *** Modified by Dialog Designer on 4/25/2011 -08:07 ***
%%k = @strdel(@winexists(@dlgtext()),1,1)
LOADLIB user32.dll
%%knockout = @lib(user32,SetWindowLongA,INT:,%%k,-16,$40000)
FREELIB user32.dll
dialog show |
Edit
Well...if you've tried to close this bad boy you realize....the buttons disappear on alt.
The trick to fix that is to add a alt hotkey to your program that forces a redraw.
Code: | :hotkey
loadlib user32.dll
%P = @lib(user32,InvalidateRect,BOOL:,INT:%%k,0,1)
%P = @lib(user32,UpdateWindow,BOOL:,INT:%%k)
freelib user32.dll
goto evloop |
Granted you catch alt for all windows now, but you do not interrupt it or interfere with the user interaction so the damage is minimal.
EDIT 2
SCREW hotkeys.
Do it right.
Double buffer the window.
Code: | LOADLIB user32.dll
%%knockout = @lib(user32,SetWindowLongA,INT:,%%k,-16,$40000)
%%knockout = @lib(user32,SetWindowLongA,INT:,%%k,-20,INT: $2000000)
FREELIB user32.dll |
WARNING: Do not buffer windows that have children or child windows.
|
|
Back to top |
|
|
cnodnarb Professional Member
Joined: 11 Sep 2002 Posts: 762 Location: Rockeledge, GA
|
Posted: Tue Aug 28, 2012 7:17 pm Post subject: |
|
|
Good grief. I guess if I can't figure out how to use this (over my head at this time) maybe I should have documented it better.
|
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You can attach files in this forum You can download files in this forum
|
|