AGB  ·  Datenschutz  ·  Impressum  







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

TFrame ableiten

Ein Thema von martin-sun · begonnen am 7. Dez 2004 · letzter Beitrag vom 8. Dez 2004
Antwort Antwort
martin-sun

Registriert seit: 11. Aug 2004
Ort: Weinheim
15 Beiträge
 
Delphi 2005 Professional
 
#1

TFrame ableiten

  Alt 7. Dez 2004, 18:21
hallo leute,

ich habe folgendes problem:
um mein programm dynamisch erweitern zu können nutze ich frames in dll's.

um eine einheitliche schnittstelle zu gewährleisten, müssen all diese frames bestimmte
funktionen besitzen, die ich aus dem hauptprogramm heraus aufrufe. also habe ich eine eigene frameklasse daraus gemacht:

Delphi-Quellcode:
TPluginFrame = class(TFrame)
  public
    { Public-Deklarationen }
    function StartRenaming(MaxFile: Integer): Integer; virtual; abstract;
    function Rename(var FileName: String; ActFile: Integer): Integer; virtual; abstract;
    function RenamingFinished(): Integer; virtual; abstract;

    function SaveSettings(var Settings: String): Integer; virtual; abstract;
    function RestoreSettings(Settings: String): Integer; virtual; abstract;
  end;
diese deklaration ist in einer separaten unit untergebracht, die sowohl in das hauptprogramm, wie auch in jede dll eingebunden ist.
in den dll's ergibt sich nun folgendes bild:

Delphi-Quellcode:
type
  TFrameChangeSpelling = class(TPluginFrame)
    grpboxPlugin: TGroupBox;
    Label1: TLabel;
    lblExample: TLabel;
    radiogrpName: TRadioGroup;
    radiogrpExtension: TRadioGroup;
    procedure radiogrpNameClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    function StartRenaming(MaxFile: Integer): Integer; override;
    function Rename(var FileName: String; ActFile: Integer): Integer; override;
    function RenamingFinished(): Integer; override;

    function SaveSettings(var Settings: String): Integer; override;
    function RestoreSettings(Settings: String): Integer; override;
  end;
ich erstelle in der dll einen neuen frame und kann ihn auch in der entwurfsansicht super bearbeiten. anschließend ändere ich im quelltext des frames 'class(TFrame)' in 'class(TPluginFrame)' um. wenn ich das anschließend erstelle und kompliliere klappt alles super.
nun aber zum dem problem:
wenn ich mein dll-projekt neu öffne und anschließend versuche, den frame anzeigen zu lassen (entwurfsansicht) dann hagelt es fehlermeldungen von nicht vorhandenen TForm eigenschaften (logisch ist ja auch TFrame).
ich vermute delphi erkennt nicht mehr, dass das ganze von TFrame abgeleitet ist.

weiß einer wie ich das der ide klar mache oder woran es genau liegt?

martin
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: TFrame ableiten

  Alt 7. Dez 2004, 22:33
Zitat:
weiß einer wie ich das der ide klar mache
Benutze dazu Interfaces. An denen hat Delphi nichts auszusetzen.

Delphi-Quellcode:
type
  IPluginFrame = interface
    ['{AAD5CBCC-6D1B-4BA8-A05E-C848C5FFA141}'] // Strg+Shift+G

    function StartRenaming(MaxFile: Integer): Integer;
    function Rename(var FileName: String; ActFile: Integer): Integer;
    function RenamingFinished(): Integer;

    function SaveSettings(var Settings: String): Integer;
    function RestoreSettings(Settings: String): Integer;
  end;
Delphi-Quellcode:
type
  TFrameChangeSpelling = class(TFrame, IPluginFrame)
    // ...
  end;
  Mit Zitat antworten Zitat
OLLI_T

Registriert seit: 13. Okt 2003
Ort: Nähe Wetzlar / Hessen
143 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: TFrame ableiten

  Alt 7. Dez 2004, 22:39
HY Martin!

Lange Rede kurzer Sinn ... lass es sein! Du wirst Schiffbruch erleiden. Frames sind Templates und nicht für Vererbung geeignet. Sind letztendlich TScrollingWincontrols, die von der IDE wie ein TForm angezeigt und bearbeitet werden können.

BTW.: Ich verstehe den Sinn und Zweck Deiner von TFrame abgeleiteten Basisklasse nicht. Es gibt kein einziges trauriges Feld, keine noch so winzige Property, keine Methoden, die auch tatsächlich implementiert sind. virtual; abstract; deklarierte Methode haben absolut nichts im Public Abschnitt zu suchen und sind in Deinem Konstrukt völlig fehl am Platze, da keine von eben diesen durch einen Call einer anderen Methoden aufgerufen wird.

Ach so, Frames aus DLL heraus geht nicht. Das spielt die VCL nicht mit. Warum fügst die Frames nicht einfach in Dein Prog ein wenn sich was ändert, compilierst neu und gut.

Gute N8

Der OLLI
No Pain No Gain!
  Mit Zitat antworten Zitat
martin-sun

Registriert seit: 11. Aug 2004
Ort: Weinheim
15 Beiträge
 
Delphi 2005 Professional
 
#4

Re: TFrame ableiten

  Alt 8. Dez 2004, 19:52
an jbg:

interfaces klingt gut. werde ich mal probieren.
vielen dank.

an olli_t
frames in dll's sind überhaupt kein problem, wenn man weiß, worauf man dabei achten muss. bei mir funktioniert es jedenfalls einwandfrei.
und was heißt schiffbruch erleiden, meine dll's funktionieren ja wie gewünscht. problem ist halt bloß, das ich den frame im dll-projekt beim erneuten laden des projekts nicht in der entwurfsansicht sehen kann. ich muss erst mit einem anderen editor 'class(TPluginFrame)' in 'class(TFrame)' umbenennen um den frame in delphi wieder in der entwurfsansicht zu sehen. zum compilieren mach ich das unter delphi wieder rückgängig. funktioniert so, ist aber sehr lästig.

martin
  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 16:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz