AGB  ·  Datenschutz  ·  Impressum  







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

With Test do

Ein Thema von EWeiss · begonnen am 28. Feb 2011 · letzter Beitrag vom 2. Mär 2011
Antwort Antwort
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.874 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: With Test do

  Alt 2. Mär 2011, 11:00
Eine Komponenet braucht auch einen Owner (Parameter der Create-Methode)
Markus Kinzler
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: With Test do

  Alt 2. Mär 2011, 11:41
Eine Komponenet braucht auch einen Owner (Parameter der Create-Methode)
Du meinst Create(self) ?
Meine Komponente sind NONVCL..

Wer erbarmt sich und kann mir sagen was falsch ist .. so verstehe ich das nicht.
welche propertys sollen hier noch addiert werde.. hmm

Delphi-Quellcode:
  ISkinFrameButton = interface
    ['{810D9186-F618-4EE6-84C3-054CDBAE1496}']
  end;
Damit ich auf meine class von außen zugreifen kann.
Egal was ich eingebe.. die antwort ist!

[Pascal Error] uMaster.pas(56): E2003 Undeclared identifier: 'self'
oder
[Pascal Error] uMaster.pas(56): E2035 Not enough actual parameters

gebe ich sie ein werden sie nicht erkannt.

Delphi-Quellcode:
function SkinFrameButtonCreate: ISkinFrameButton;
begin
  Result := TSkinFrameButton.Create(hOwner, FullpathImageName,
      skLabel, x, y, xW, yH, ButID, StateMax, Enabled);
end;
Zitat:
[Pascal Error] uMaster.pas(56): E2003 Undeclared identifier: 'hOwner'
[Pascal Error] uMaster.pas(57): E2003 Undeclared identifier: 'skLabel'
[Pascal Error] uMaster.pas(57): E2003 Undeclared identifier: 'y'
[Pascal Error] uMaster.pas(57): E2003 Undeclared identifier: 'ButID'
[Pascal Error] uMaster.pas(57): E2003 Undeclared identifier: 'Enabled'
[Pascal Fatal Error] SK_Aero.dpr(40): F2063 Could not compile used unit '_main\uMaster.pas'
gruss

Geändert von EWeiss ( 2. Mär 2011 um 11:49 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.874 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: With Test do

  Alt 2. Mär 2011, 11:55
Und wie ist das Interface deklariert?
Markus Kinzler
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: With Test do

  Alt 2. Mär 2011, 11:58
Und wie ist das Interface deklariert?
Delphi-Quellcode:
  ISkinFrameButton = interface
    ['{810D9186-F618-4EE6-84C3-054CDBAE1496}']
  end;
und die classe welche ich ansprechen will

Delphi-Quellcode:
  TSkinFrameButton = class(TInterfacedObject, ISkinFrameButton)
  private
    HFrameButton: HWND;
    Img: cardinal;
    Style: DWORD;
  public
    property Handle: HWND Read HFrameButton;
    constructor Create(hOwner: HWND; FullpathImageName: string;
      skLabel: PAnsiChar; x, y, xW, yH, ButID, StateMax: integer; Enabled: Boolean);
    destructor Destroy; override;
  end;

gruss

Geändert von EWeiss ( 2. Mär 2011 um 12:00 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: With Test do

  Alt 2. Mär 2011, 11:59
Naja du musst ja der Create-Methode auch tatsächliche Parameter übergeben also ungefähr so:

Delphi-Quellcode:
function SkinFrameButtonCreate: ISkinFrameButton;
begin
  BackgoundFrame := TSkinFrameButton.Create(hMain, SK_FOLDER +
      'Aero.png', '', 13, 41, XMIN_SIZE - 26, YMIN_SIZE - 55, ID_AEROBUTTON, 0);
end;
Es sei denn du baust deine Funktion eben so um:

Delphi-Quellcode:
function SkinFrameButtonCreate(hOwner: HWND; FullpathImageName: string; skLabel: PAnsiChar; x, y, xW, yH, ButID, StateMax: integer; Enabled: Boolean): ISkinFrameButton;
begin
  Result := TSkinFrameButton.Create(hOwner, FullpathImageName,
      skLabel, x, y, xW, yH, ButID, StateMax, Enabled);
end;
Beachte!

Du kannst dann im Hauptprogramm NUR auf Methoden der Klasse zugreifen, die auch im Interface deklariert sind. Da dein Interface keine Methoden besitzt, wirst du mit dem zurückgelieferten Interface nichts anfangen können!
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: With Test do

  Alt 2. Mär 2011, 12:07
Zitat:
Naja du musst ja der Create-Methode auch tatsächliche Parameter übergeben also ungefähr so:
Ja von außen nicht innerhalb der DLL..

Zitat:
Es sei denn du baust deine Funktion eben so um:
Ahhhhh... Das sieht schon anders aus.

So meckert der Compiler jedenfalls nicht mehr.

Danke werde mal versuchen diese jetzt von außen anzusprechen.
Muss ich da noch was besonderes berücksichtigen?

OK!
Export ist klar

Delphi-Quellcode:
export
SkinFrameButtonCreate
Und die Funktion muss jetzt in meiner API eingefügt werden.

Delphi-Quellcode:
function SkinFrameButtonCreate(hOwner: HWND; FullpathImageName: string; skLabel:
  PAnsiChar; x, y, xW, yH, ButID, StateMax: integer; Enabled: Boolean): ISkinFrameButton;
Sowie..

Delphi-Quellcode:
type
  ISkinFrameButton = interface
    ['{810D9186-F618-4EE6-84C3-054CDBAE1496}']
  end;
Das interface selbst.

Zitat:
Du kannst dann im Hauptprogramm NUR auf Methoden der Klasse zugreifen, die auch im Interface deklariert sind. Da dein Interface keine Methoden besitzt, wirst du mit dem zurückgelieferten Interface nichts anfangen können!
Ja sehe ich auch gerade ...
Ich brauche aber das Handle

müßte dann quasi nach dem erstellen das Handle zurückgeben

Delphi-Quellcode:
  ISkinFrameButton = interface
    ['{810D9186-F618-4EE6-84C3-054CDBAE1496}']
    property Handle: HWND Read HFrameButton;
  end;
Das will der Compiler wieder nicht.
Zitat:
[Pascal Error] uFrameButton.pas(10): E2168 Field or method identifier expected

gruss

Geändert von EWeiss ( 2. Mär 2011 um 12:16 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#7

AW: With Test do

  Alt 2. Mär 2011, 12:42
Delphi-Quellcode:
  ISkinFrameButton = interface
    ['{810D9186-F618-4EE6-84C3-054CDBAE1496}']
    property Handle: HWND Read HFrameButton;
  end;
Das will der Compiler wieder nicht.
Im Interface kannst du keine Felder nutzen.
Du brauchst eine Getter-Methode: GetHandle.
Delphi-Quellcode:
ISkinFrameButton = interface
    ['{810D9186-F618-4EE6-84C3-054CDBAE1496}']
    function GetHandle: hWnd;
    property Handle: hWnd read GetHandle;
  end;
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

AW: With Test do

  Alt 2. Mär 2011, 13:02
Das muss den Namen "GET" vorangesetzt haben?

so geht es nicht?

Delphi-Quellcode:
  ISkinFrameButton = interface
    ['{810D9186-F618-4EE6-84C3-054CDBAE1496}']
    function HFrameButton: hWnd;
    property Handle: HWND Read HFrameButton;
  end;
gruss
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

AW: With Test do

  Alt 2. Mär 2011, 13:03
Delphi-Quellcode:
type
  ISkinFrameButton = interface
    ['{810D9186-F618-4EE6-84C3-054CDBAE1496}']
    function GetHandle: hWnd;
    property Handle: hWnd read GetHandle;
  end;

  TSkinFrameButton = class(TInterfacedObject, ISkinFrameButton)
  private
    HFrameButton: Hwnd;
    function GetHandle: Hwnd;
  end;

implementation
  
function TSkinFrameButton.GetHandle: Hwnd;
begin
  Result := HFrameButton;
end;
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  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 14:53 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