unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, RzBckgnd, StdCtrls, RzLabel, Grids, RzGrids, Hiscores, Mask,
  RzEdit, RzButton, RSData;

type
  TForm1 = class(TForm)
    gridHiscores: TRzStringGrid;
    lblTitle: TRzLabel;
    hsLookup: THiscores;
    strUsername: TRzEdit;
    btnLookup: TRzToolButton;
    cmdExit: TRzToolButton;
    RzURLLabel1: TRzURLLabel;
    procedure FormCreate(Sender: TObject);
    procedure gridHiscoresDrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    procedure btnLookupClick(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure gridHiscoresSelectCell(Sender: TObject; ACol, ARow: Integer;
      var CanSelect: Boolean);
    procedure gridHiscoresMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure lblTitleMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure cmdExitClick(Sender: TObject);
    procedure strUsernameKeyPress(Sender: TObject; var Key: Char);
    procedure getWidestText(grid: TRzStringGrid; col: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
const
  skills: Array[0..21] of String = (
  'Overall',   'Attack',   'Defence',    'Strength', 'Hitpoints',
  'Ranged',    'Prayer',   'Magic',      'Cooking',  'Woodcutting',
  'Fletching', 'Fishing',  'Firemaking', 'Crafting', 'Smithing',
  'Mining',    'Herblore', 'Agility',    'Thieving', 'Slayer',
  'Farming',   'Runecrafting' );

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  SetWindowRgn(Form1.Handle, CreateRoundRectRgn(0, 0, Form1.Width, Form1.Height, 6, 6), true);
end;

procedure TForm1.gridHiscoresDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  with gridHiscores.Canvas do begin
    Brush.Color := gridHiscores.Color;
    FillRect(Rect);
    if (ARow = 0) or (ACol = 0) then
      Font.Color := clBlack
    else
      Font.Color := clWhite;
    TextOut(Rect.Left+(gridHiscores.ColWidths[ACol] div 2)-(TextWidth(gridHiscores.Cells[ACol, ARow]) div 2), Rect.Top+2, gridHiscores.Cells[ACol, ARow]);
  end;
end;

procedure TForm1.btnLookupClick(Sender: TObject);
var
  x: Integer;
begin
  gridHiscores.RowCount := 1;
  if hsLookup.Lookup(strUsername.text) then begin
    gridHiscores.Cells[0, 0] := 'Skill';
    gridHiscores.Cells[1, 0] := 'Level';
    gridHiscores.Cells[2, 0] := 'Exp';
    for x:=1 to hsLookup.Data.Count do begin
      gridHiscores.RowCount := gridHiscores.RowCount+1;
      gridHiscores.Cells[0, x] := hsLookup.Data.Stat[x-1].Skill;
      gridHiscores.Cells[1, x] := hsLookup.Data.Stat[x-1].Level;
      gridHiscores.Cells[2, x] := hsLookup.Data.Stat[x-1].Experience;
    end;
    getWidestText(gridHiscores, 0);
    getWidestText(gridHiscores, 1);
    getWidestText(gridHiscores, 2);
  end;
end;

procedure TForm1.getWidestText(grid: TRzStringGrid; col: Integer);
var
  i: Integer;
  tmp: Integer;
begin
  tmp := 0;
  for i:= 0 to 23 do begin
    if grid.Canvas.TextWidth(grid.Cells[col, i]) > tmp then
      tmp := grid.Canvas.TextWidth(grid.Cells[col, i]);
  end;
  grid.ColWidths[col] := tmp+6;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
  strUsername.SetFocus;
end;

procedure TForm1.gridHiscoresSelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
begin
  strUsername.SetFocus;
end;

procedure TForm1.gridHiscoresMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  strUsername.SetFocus;
  ReleaseCapture;
  Perform(wm_SysCommand, $F012, 0);
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  ReleaseCapture;
  Perform(wm_SysCommand, $F012, 0);
end;

procedure TForm1.lblTitleMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  ReleaseCapture;
  Perform(wm_SysCommand, $F012, 0);
end;

procedure TForm1.cmdExitClick(Sender: TObject);
begin
  Application.Terminate;
end;

procedure TForm1.strUsernameKeyPress(Sender: TObject; var Key: Char);
begin
  if ord(Key) = 13 then
    btnLookup.Click;
end;

end.