[Back to OOP SWAG index] [Back to Main SWAG index] [Original]

    {
    > A tiny question for the TV programmers (for me a big problem). I want to
    > add a password to my TV program, so when I select a certain menu item, a
    > dialog box must appear, where I have to give my password. Is there an easy
    > solution to change the TInputline in this way that, if I enter a string,
    > only '*' are displayed at the inputline.
    }
    type
      PPasswordLine = ^TPasswordLine;
      TPasswordLine = object(TInputLine)
        procedure Draw; virtual;
      end;

    implementation

    procedure TPasswordLine.Draw;
    var
      Color: Byte;
      L, R: Integer;
      B: TDrawBuffer;
      S: String;
    begin
      if State and sfFocused = 0 then
        Color := GetColor(1) else
        Color := GetColor(2);
      MoveChar(B, ' ', Color, Size.X);
      S:=Copy(Data^, FirstPos + 1, Size.X - 2);
      FillChar(S[1],length(S),'*');
      MoveStr(B[1], S, Color);
      if CanScroll(1) then MoveChar(B[Size.X - 1], #16, GetColor(4), 1);
      if State and sfFocused <> 0 then
      begin
        if CanScroll(-1) then MoveChar(B[0], #17, GetColor(4), 1);
        L := SelStart - FirstPos;
        R := SelEnd - FirstPos;
        if L < 0 then L := 0;
        if R > Size.X - 2 then R := Size.X - 2;
        if L < R then MoveChar(B[L + 1], #0, GetColor(3), R - L);
      end;
      WriteLine(0, 0, Size.X, Size.Y, B);
      SetCursor(CurPos - FirstPos + 1, 0);
    end;

[Back to OOP SWAG index] [Back to Main SWAG index] [Original]