Einzelnen Beitrag anzeigen

Benutzerbild von uligerhardt
uligerhardt
Online

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#12

AW: Generische Ableitung einer Klasse

  Alt 5. Jul 2011, 17:24
Ziel des ganzen ist es einer beliebigen Klasse eine CriticalSection samt Lock/Unlock-Methoden zu spendieren, ohne da jetzt jedes erst von der Klasse ableiten zu müssen und den kompletten Code immer wieder zu schreiben.
Vielleicht kannst du Arme-Leute-RAII mittels Interfaces nutzen. Ich hab z.B. sowas für die temporäre Anzeige von Cursorn:
Delphi-Quellcode:
interface

type
  ICursorGuard = interface
  end;

function GuardCursor(NewCursor: TCursor = crHourGlass): ICursorGuard;

implementation

type
  TCursorGuard = class(TInterfacedObject, ICursorGuard)
  private
    FOldCursor: TCursor;
  public
    constructor Create(NewCursor: TCursor);
    destructor Destroy; override;
  end;

{ TCursorGuard }

constructor TCursorGuard.Create(NewCursor: TCursor);
begin
  inherited Create;
  FOldCursor := Screen.Cursor;
  Screen.Cursor := NewCursor;
end;

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

function GuardCursor(NewCursor: TCursor = crHourGlass): ICursorGuard;
begin
  Result := TCursorGuard.Create(NewCursor);
end;
Das kannst du dann so aufrufen:
Delphi-Quellcode:
procedure Test;
var
  Guard: ICursorGuard;
begin
  Guard := GuardCursor;
  //Mach was langwieriges
end;

// oder sogar so:
procedure Test;
begin
  GuardCursor;
  //Mach was langwieriges
end;
Uli Gerhardt
  Mit Zitat antworten Zitat