15 Fenster

15 Fenster mit Bedienelemte ausstatten

Selfhtml

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;



zurück