AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Verfügbarkeit der Funktion

Ein Thema von robert23 · begonnen am 17. Aug 2006 · letzter Beitrag vom 17. Aug 2006
Antwort Antwort
NicoDE
(Gast)

n/a Beiträge
 
#1

Re: Problem mit Verfügbarkeit der Funktion

  Alt 17. Aug 2006, 11:10
Einer der Wege das ganze etwas zu verpacken (erster Schritt). Eine Unit mit einer Funktion die es ermöglicht eine Methode für jedes Fenster aufrufen zu lassen:
Delphi-Quellcode:
unit WndUtils;

interface

uses
  Windows;

type
  // Die Enumerierung wird abgebrochen wenn die Methode False zurückgibt.
  TEnumWndCallback = function(AWnd: HWND): Boolean of object;

function EnumWnd(ACallback: TEnumWndCallback): Boolean;

implementation

type
  PEnumWndParam = ^TEnumWndParam;
  TEnumWndParam = record
    Callback: TEnumWndCallback;
  end;

function EnumWndProc(AWnd: HWND; AParam: LPARAM): BOOL stdcall;
begin
  Result := PEnumWndParam(AParam).Callback(AWnd);
end;

function EnumWnd(ACallback: TEnumWndCallback): Boolean;
var
  Param: TEnumWndParam;
begin
  Param.Callback := ACallback;
  Result := EnumWindows(Pointer(Addr(EnumWndProc)), LPARAM(Addr(Param)));
end;

end.
In der benutzenden Klasse muss eine Methode vom Typ TEnumWndCallback implementiert werden:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Classes, Forms, Controls, StdCtrls;

type
  TForm1 = class(TForm)
  //...
  private
    { Private-Deklarationen }
    function EnumWndCallback(AWnd: HWND): Boolean;
  //...
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses
  WndUtils;

//...

function TForm1.EnumWndCallback(AWnd: HWND): Boolean;
begin
  //...
  Result := True; // Enumerierung fortsetzen
end;

//...

end.
Dann muss der Hilfsfunktion nur die Methode übergeben werden:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  EnumWnd(EnumWndCallback);
end;
Dadurch wird dann TForm1.EnumWndCallback für jedes Fenster aufgerufen.

Der nächste Schritt der Kapselung wäre eine eigene Klasse, die in ihrer EnumWndCallback das Standardverhalten implementiert.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz