John,

do i really need allways
screen.cursor := crHouglass;
followed by
Application.Processmessages;

I have this bit of code I wanted to send but I wasn't going to post it without testing it [I've only ever run it on windows apps] on a Linux platform and I had some difficulties getting Lazarus on Ubuntu running - but that's another story. It's a bit of code I found ages ago and have refactored here and there. It makes dealing with changing to the HourGlass and back in any method much simpler to deal with ... at any rate here it is:

*****************************************************
unit CursorCtrl;

interface
uses
  Controls, Forms;

type
  ITemporaryCursor = interface
  ['{38BDD5A3-2E23-47D1-BD5D-54C49DBC95C3}']
    procedure Show;
  end;

  TTemporaryCursor = class(TInterfacedObject, ITemporaryCursor)
  private
    FOldCursor: TCursor;
    FNewCursor: TCursor;
  public
    constructor Create(const Cursor: TCursor = crHourglass);
    destructor Destroy; override;
    procedure Show;
  end;

function DisplayCursor(const Cursor: TCursor): ITemporaryCursor;
function DisplayHourglass: ITemporaryCursor;

implementation

{ TTemporaryCursor }
constructor TTemporaryCursor.Create(const Cursor: TCursor = crHourglass);
begin
  inherited Create();
  FOldCursor := Screen.Cursor;
  FNewCursor := Cursor;
end;

destructor TTemporaryCursor.Destroy;
begin
  Screen.Cursor := FOldCursor;
  inherited;
end;

procedure TTemporaryCursor.Show;
begin
  Screen.Cursor := FNewCursor;
  Application.ProcessMessages;
end;

{Use these routines to change a cursor before a long process in any method.}

function DisplayCursor(const Cursor: TCursor): ITemporaryCursor;
begin
  Result := TTemporaryCursor.Create(Cursor) as ITemporaryCursor;
  Result.Show;
end;

{- or -}

function DisplayHourglass: ITemporaryCursor;
begin
  Result := TTemporaryCursor.Create as ITemporaryCursor;
  Result.Show;
end;

end.

*********************************************************************
To use it, add the unit to the implementation uses clause and then just call DisplayHourglass before any long process. It'll switch back to whatever the cursor was then the method terminates.

Hope you find it of interest.
--
Dave
Posted with XanaNews 1.19.1.320


--
_______________________________________________
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to