AGB  ·  Datenschutz  ·  Impressum  







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

Eigene Form-Nachfolge-Klasse in der IDE

Ein Thema von Sereby · begonnen am 2. Aug 2008 · letzter Beitrag vom 3. Aug 2008
Antwort Antwort
Seite 1 von 2  1 2      
Sereby

Registriert seit: 31. Mär 2008
91 Beiträge
 
#1

Eigene Form-Nachfolge-Klasse in der IDE

  Alt 2. Aug 2008, 13:41
Hi,

also mir geht es darum meine eigene abgeleitete Form-Klasse (TFormX) bereits während dem Designen in der IDE (Delphi 2007) benutzen zu können.

Also dass ich im Objektinspector meine eigenen Eigenschaften sehe wenn ich die Hauptform auswähle.

Das problem ist soweit ich das sehen konnte, das
Application.CreateForm(TfrmGUI, frmGUI); denn da wird TForm als FormTyp verwendet und es werden auch eigenschaften gesetzt bzw benutzt auf die Ich nicht zugreifen darf/kann.

Kennt jemand nen Weg das umzusetzen?

MfG Sereby
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Eigene Form-Nachfolge-Klasse in der IDE

  Alt 2. Aug 2008, 19:08
Du könntest die Formularklasse in die Objektablage ablegen
Markus Kinzler
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#3

Re: Eigene Form-Nachfolge-Klasse in der IDE

  Alt 2. Aug 2008, 20:18
oder 'ne eigene kompo von TForm ableiten und installieren.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#4

Re: Eigene Form-Nachfolge-Klasse in der IDE

  Alt 2. Aug 2008, 20:58
Um welche Eigenschaften geht es überhaupt ? Form <> Komponente. Das sieht zwar alles ähnlich aus, ist es aber nicht ! So wie man Komponenten von geeignetem Vorfahr ableitet, das geht bei Forms so nicht ohne tiefe Eingriffe in die VCL.
Gruß
Hansa
  Mit Zitat antworten Zitat
Sereby

Registriert seit: 31. Mär 2008
91 Beiträge
 
#5

Re: Eigene Form-Nachfolge-Klasse in der IDE

  Alt 3. Aug 2008, 07:23
aaaalso nochmal etwas ausführlicher:

Bisher habe ich bei meinem Hauptformular, bei der FormCreate Routine, die ecken abgerundet.
Nun.. da ich das allerdings schon während der Entwicklung gerne sehen würde, wollte ich halt ne neue Form klasse haben wo extra eigenschaften dafür vorhanden sind womit man das einstellen kann.

Das funktioniert auch wenn ich die Komponente auf die Form ziehe aber wegen Application.Createform kann ich das leider nicht beim Hauptformular benutzen weil der da TForm benutzt!

hier die Unit
Delphi-Quellcode:
unit FormX;

interface
  uses Windows, Classes, Forms;

type
  TFormX = class(TForm)
  private
    FRoundEdges: Boolean;
    FRoundWidth,FRoundHeight: Integer;
    procedure SetRoundEdges(const Value: Boolean);
    procedure SetRoundHeight(const Value: Integer);
    procedure SetRoundWith(const Value: Integer);
  public
    constructor Create(AOwner: TComponent); override;
  protected
    procedure Paint; override;
  published
    property RoundEdges: Boolean read FRoundEdges write SetRoundEdges default False;
    property RoundWidth: Integer read FRoundWidth write SetRoundWith default 40;
    property RoundHeight: Integer read FRoundHeight write SetRoundHeight default 40;
  end;

  procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Sere', [TFormX]);
end;

{ TFormX }

constructor TFormX.Create(AOwner: TComponent);
begin
  inherited;
  FRoundEdges := False;
  FRoundWidth := 40;
  FRoundHeight := 40;
end;

procedure TFormX.Paint;
var REGN: HRGN;
begin
  inherited;
  if FRoundEdges then
  begin
    //ecken abrunden
    REGN := CreateRoundRectRgn(0,0,Width,Height,FRoundWidth,FRoundHeight);
    SetWindowRgn(Handle, REGN, True);
  end;
end;

procedure TFormX.SetRoundEdges(const Value: Boolean);
begin
  if (FRoundEdges <> Value) then
  begin
    FRoundEdges := Value;
    Invalidate;
  end;
end;

procedure TFormX.SetRoundHeight(const Value: Integer);
begin
  if (FRoundHeight <> Value) then
  begin
    FRoundHeight := Value;
    Invalidate;
  end;
end;

procedure TFormX.SetRoundWith(const Value: Integer);
begin
  if (FRoundWidth <> Value) then
  begin
    FRoundWidth := Value;
    Invalidate;
  end;
end;

end.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Eigene Form-Nachfolge-Klasse in der IDE

  Alt 3. Aug 2008, 08:03
Das kannst du aber ändern
Markus Kinzler
  Mit Zitat antworten Zitat
Sereby

Registriert seit: 31. Mär 2008
91 Beiträge
 
#7

Re: Eigene Form-Nachfolge-Klasse in der IDE

  Alt 3. Aug 2008, 09:40
was meinst du?

WIE kann ich das hauptformular bzw die eigenschaften auf ALLE Formulare übertragen?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Eigene Form-Nachfolge-Klasse in der IDE

  Alt 3. Aug 2008, 09:53
Wie ich oben geschrieben habe: lege das Formular in der Objektablage ab
Markus Kinzler
  Mit Zitat antworten Zitat
rotfc
(Gast)

n/a Beiträge
 
#9

Re: Eigene Form-Nachfolge-Klasse in der IDE

  Alt 3. Aug 2008, 10:09
Zitat von Sereby:
was meinst du?

WIE kann ich das hauptformular bzw die eigenschaften auf ALLE Formulare übertragen?
Mit meinem D5 geht das nicht "automatisch" oder gar bequem

Ich muss jedes meiner Formulare in die IDE laden und das Form.Create ändern. Dabei vergesse ich schon gerne mal die (alle) dynamisch erzeugten Formulare.

Beim Testen meiner Echse merke ich dann, welche Forms ich noch nicht "überarbeitet" habe.

Mit neueren Delphis (>5) lässt sich das vielleicht automatisieren, aber ein mieses/fieses Kommandozeilenwerkzeug kann das "Stringreplace" auch

Backups sind hin und wieder ganz nützlich
  Mit Zitat antworten Zitat
Sereby

Registriert seit: 31. Mär 2008
91 Beiträge
 
#10

Re: Eigene Form-Nachfolge-Klasse in der IDE

  Alt 3. Aug 2008, 13:02
@rotfc:
ich glaub du verstehst nicht worauf ich hinaus will..
in der fertigen anwendung funktioniert das mit dem manuellen eintragen bei FormCreate ja aer das is ja nicht was ich möchte..

Ich möchte diese Einstellmöglichkeiten im Objektbrowser ändern können und die Änderungen direkt beim Entwickeln in der IDE sehen können ohne die Anwendung zu starten.. also zu der zeit wo du Buttons auf der Form platzierst! Das manuelle mit FormCreate möchte ich vermeiden.

Daher habe ich die eigene Form Klasse geschrieben und möchte z.B. das hauptformular damit ersetzen aber das geht nicht soo einfach bzw garnich weil Application.CreateForm(TfrmGUI, frmGUI) TForm und nicht meine Klasse benutzt!
Genau deswegen habe ich den Thread hier gestartet um zu erfahren wie ich das wie oben beschrieben bewältigen kann. Nix mit Dynamisch erstellen oder Suchen & Ersetzen..

@mkinzler:
kannst du das etwas ausführlicher beschreiben? ich habe die .pas datei und die hab ich dem package dclusr hinzugefügt.. wenn ich das dann der objektablage hinzufüge sowie ich das durch googeln erfahren habe wies geht mache dann kommen recht viele fehlermeldungen beim erstellen von einem neuen projekt

bitte kläre mich auf
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 02:39 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