mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-15 14:16:07 -06:00
59 lines
945 B
C++
59 lines
945 B
C++
#include <CtrlLib/CtrlLib.h>
|
|
|
|
using namespace Upp;
|
|
|
|
struct App : TopWindow {
|
|
ScrollBar sb;
|
|
int count;
|
|
|
|
int GetLineHeight() { return Arial(20).Info().GetHeight(); }
|
|
|
|
virtual void Paint(Draw& w)
|
|
{
|
|
Size sz = GetSize();
|
|
w.DrawRect(sz, SWhite);
|
|
int fcy = GetLineHeight();
|
|
int i = sb / fcy;
|
|
int y = i * fcy - sb;
|
|
while(i < count && y < sz.cy) {
|
|
w.DrawText(0, y, AsString(i++, true), Arial(20));
|
|
y += fcy;
|
|
}
|
|
}
|
|
|
|
virtual void Layout()
|
|
{
|
|
sb.SetPage(GetSize().cy);
|
|
}
|
|
|
|
virtual void MouseWheel(Point, int zdelta, dword)
|
|
{
|
|
sb.Wheel(zdelta);
|
|
}
|
|
|
|
bool Key(dword key, int)
|
|
{
|
|
return sb.VertKey(key);
|
|
}
|
|
|
|
void SetCount(int n)
|
|
{
|
|
count = n;
|
|
sb.SetTotal(n * GetLineHeight());
|
|
}
|
|
|
|
App() {
|
|
Sizeable().Zoomable().BackPaint();
|
|
AddFrame(sb);
|
|
sb.WhenScroll = [=] { Refresh(); };
|
|
sb.SetLine(GetLineHeight());
|
|
}
|
|
};
|
|
|
|
GUI_APP_MAIN
|
|
{
|
|
App app;
|
|
app.SetRect(0, 0, 100, 100);
|
|
app.SetCount(15);
|
|
app.Run();
|
|
}
|