15 Fenster
15 Fenster mit Bedienelemte ausstatten
Fenster in eigene Unit.
Hier wird das neue vererbte Windows erzeugt.
procedure TMyApp.NewWindows;
var
Win: PMyWindow;
Rect: TRect;
const
WinCounter: integer = 0; // Zählt Fenster
begin
Rect.Assign(0, 0, 60, 20);
Inc(WinCounter);
Win := New(PMyWindow, Init(Rect, 'Fenster', WinCounter));
if ValidView(Win) <> nil then begin
Desktop^.Insert(Win);
end else begin
Dec(WinCounter);
end;
end;
Unit mit dem neuen Fenster.
Mit den 3 oberen Button, kann man das Farb-Schema des Dialoges ändern.
unit MyWindow;
Hier sind 3 Event-Konstante hinzugekommen.
type
PMyWindow = ^TMyWindow;
TMyWindow = object(TWindow)
VScrollBar, HScrollBar : PScrollBar;
Indicator : PIndicator;
constructor Init(var Bounds: TRect; ATitle: TTitleStr; ANumber: Sw_Integer);
end;
Das Bauen des Dialoges ist nichts besonderes.
constructor TMyWindow.Init(var Bounds: TRect; ATitle: TTitleStr; ANumber: Sw_Integer);
var
Rect: TRect;
begin
inherited Init(Bounds, ATitle, ANumber);
Options := Options or ofTileable; // Für Tile und Cascade
Rect.Assign (18, Size.Y - 1, Size.X - 2, Size.Y);
HScrollBar := New (PScrollBar, Init (Rect));
HScrollBar^.Max := 100;
HScrollBar^.Min := 0;
HScrollBar^.Value := 50;
Insert (HScrollBar);
Rect.Assign (Size.X - 1, 1, Size.X, Size.Y - 1);
VScrollBar := New (PScrollBar, Init (Rect));
Insert (VScrollBar);
Rect.Assign (2, Size.Y - 1, 16, Size.Y);
Indicator := New (PIndicator, Init (Rect));
Insert (Indicator);
Indicator^.Location.X:=0;
Indicator^.Location.Y:=0;
Indicator^.Draw;
end;